Bir yapı neredeyse her zaman kırıldığında nasıl verimli olunur


25

Aynı kaynak kodunu paylaşan ve sürekli entegrasyon devam ederken orta ölçekli bir takımda çalışıyorum, ancak hepimiz aynı dalda çalışmak zorunda kaldığımız için, yapı neredeyse her zaman bozuluyor.

Ayrıca, son zamanlarda ortaya çıkan ve kırılan binaları hafifletmek için uygulamaya konan bir kurala sahip olduğumuzdan, kimsenin inşa ederken check-in yapmasına izin verilmediğini belirten kırmızıdır.

Bir gün boyunca, herkesin check-in yapabilmemiz için 10-15 dakikalık bir avuç penceresi olduğunu söyledi.

Ekip büyürken, check-in olanaklarının pencereleri daha da daralmaktadır. Bu, geliştiricileri yerel olarak değişikliklerini biriktirmeye zorlar ve bu da değişikliklerin hiçbir şeyi kırmamasını sağlamak için daha da zor olan daha büyük değişiklik kümeleriyle sonuçlanır. Kısır döngüyü görebilirsiniz.

Böyle bir ortamda etkili bir şekilde çalışmama izin vermeme ne önerebilirsin. Ayrıca, bir yönetici değil geliştirici olduğumu ve süreci ya da diğer insanların davranışlarını çok fazla değiştiremeyeceğimi unutmayın.


8
Neden şubeleriniz olamaz?
Zavior

6
belirgin bir çözüm, "kişisel" şubenizi kurmak ve ona bağlı kalmak, ardından bu şubeyi ekibin çalıştığı
şirkete

Bir dalı olan @ Zavior, bir daldan gövdeye birleştirmek için ekstra bir karmaşıklık ve dolayısıyla ekstra bir iş anlamına gelir. Ayrıca karmaşıklığı da arttırıyor - sadece bagajı güncel tutmam gerekmeyecek, aynı zamanda şubem için de aynı şeyi yapmalıyım.

6
@Ve yerel makinede biriken değişiklikler, ne olursa olsun kurtulmak için ilk şeydir. Bahsettiğiniz diğer konular da gerçektir, ancak bu ilk çözülmesi gereken
gnat

6
Yerel olarak güncellenmediyse, değişiklikleri nasıl zorlayabileceklerini gerçekten anlamıyorum ve neden hiç kırılmamış inşaatları zorladıklarını bilmiyoruz
Yararsız

Yanıtlar:


54

Başlangıç ​​olarak, bu yorum:

... bir şubeye sahip olmak ekstra bir karmaşıklığa ve dolayısıyla ek işlere işaret eder ...

tamamen yanlış. Çoğunlukla dallanmaya alışkın olmayan insanlardan duyuyorum, ama yine de yanlış.

Yerelde birçok biriken değişiklik yapan geliştiriciniz varsa, yerel değişiklikleri ana havuzun fiili bir şubesini oluşturur.

Sonunda zorladıklarında, bu fiili bir birleşmedir .

Şubelerinizin ve birleştirmelerinizin örtük olması, endişelendiğiniz ekstra karmaşıklığı ortadan kaldırmaz, sadece gizler. Gerçek şu ki, bu süreci açık hale getirmek size (çoğul = tüm ekip) yönetmeyi öğrenmede yardımcı olabilir.


Şimdi diyorsun

inşa edilirken kimse giriş yapamaz

ancak bu durumda yapı asla düzeltilemez, bu yüzden tam olarak doğru olamaz.

Genel olarak, yerel olarak inşa etmek makul ise (yani, inşa çok büyük veya yavaş değilse ), geliştiriciler bunu yine de zorlamadan önce yapmalıdır.

Sanırım bu durum böyle değil, çünkü o zaman kırılmış binaları ilk etapta zorlamazlardı, ama bu noktayı netleştirmek için harika olurdu.

Genel olarak cevap

Bir yapı neredeyse her zaman kırıldığında nasıl verimli olunur

is: yapıyı kesmeyi bırak .


23
"Yapıyı kırmayı bırak" için +9000. Ciddi anlamda. Sürekli entegrasyonun tamamı, yapıyı kesmeyi durdurmak ve eğer kırılırsa mümkün olduğu kadar çabuk ve kopuşa kadar sabitlemektir.
Patrick Hughes,

@ Yararsız, genel cevabınızı seviyorum, ancak sorumu düzeltmem gerektiğini düşünüyorum. Ben şahsen yapıyı kırmıyorum ve aynı zamanda diğerlerini daha fazla iten dalgalar yapmak istemiyorum, böylece yapıyı kesmeyi bırakabilirler. Bilmeyi severim - daha sonra MYSELF'i daha verimli kılmak için, yapının sık sık bozulduğu bir ortamda MYSELF'i yapabileceğim bir şey var mı ve kısa süre içinde bu bozuk durumun değişmesini beklemiyorum. Bu konudaki girişinizi istiyorum. Şerefe.

6
Eh, kendi şubenizde çalışabilir ve o şubede hangi yukarı akış değişikliklerini birleştireceğiniz konusunda seçici olabilirsiniz (yani, yalnızca yapı yeşil olduğunda birleştirilebilir). Ancak, takımın düzeltilmesi genel olarak daha iyi olacağı zaman, takımın geri kalanıyla etkileşimi gerçekten azaltıyor, böylece akılcı bir şekilde etkileşime girebiliyorsunuz.
İşe yaramaz

14

geliştiriciler ... yerel olarak değişikliklerini biriktirir ... Kısır döngüyü görebilirsiniz.

Gerçekten de kısır. Değişiklikleri yerel olarak biriktirmek, dev işleminde bir şeyin ciddi şekilde çürüdüğünü gösteren büyük bir kırmızı bayraktır. Sürüm kontrol sistemine sahip olmanın tüm amacını bozuyor .

Süreci veya diğer insanların davranışlarını değiştirmekten uzak durmak istediğiniz sürece, en doğal çözüm, kendi şubenizi oluşturmak ve değişikliklerinizi "biriktirmek" için kullanmaktır (aldığınızda ekip şubesiyle daha da entegre olmak) şans).

Aslında, sizin gibi daha fazla kişi varsa, yetersiz yönetim fikirlerine müdahale etmeden güncellemelerinizi özgürce değiş tokuş etmek için ortak bir geliştirme dalı kurabilirsiniz. Dallanma , ekip çalışmasını basitleştirmenin birçok farklı yolunu sağlar.

  • Yan not, müdür her yaptığınızda veya sizi taahhütten kaçınmaya zorlayan, kodları yerel olarak tutmaya zorlayan bir şey söylediğinde, kelimelerini cesur ve sade bir şekilde "Ben beceriksizim" e çevirir .

lütfen bir yönetici değil geliştirici olduğumu ve süreci ya da diğer insanların davranışlarını değiştiremeyeceğimi unutmayın.

Hassasiyet uğruna, aslında olabilir , bu etki ve iletişim becerilerinin konulardır ve kimse gerçekten onların böyle bir şey için web'de arama (sevme değişiklik şeyler gücün konumunda olması gerekmez "yukarı yönetmek" eğer daha fazla ayrıntıyla ilgileniyorum).

Ancak en doğrusu hantal ve çaba harcayan ve bir sade kalmak için tercih ediyorsa ben mükemmel anlayabileceği siyasette çok az katılımı ile, kodlama odaklanmış - böylece yoksa istiyorum (eğer teoride olsa can ), anlaşılabilir bir durumdur. :)


7

Çevreyi değiştirmek için güçsüz hissettiğiniz fikrine karşı hassasım, ancak bu durumun bir programcı olarak profesyonelliğiniz için ciddi bir zorluk olduğunu düşünüyorum.

Bir cerrah kirli neşterleri temiz olanlarla birlikte saklarsa ne olur? Bir tesisatçı kurduğu boruları test etmeseydi ne olurdu? Bir kemancı her zaman orkestra ile uyum sağlamış olsaydı ne olurdu?

Programcılar neden takım çalışmasından ve ortak nezaketten muaf tutulmalıdır? Bu ekibin bir üyesi olarak, sonuç için sorumluluğu paylaşırsınız. Kendi çabalarını sabote ettiği için takımı görmezden gelmek sorumluluğu yoktur.

"İnşa ederken kimsenin check-in yapmasına izin verilmeyeceği" kuralının nereden geldiğini merak ediyorum. Bu, herkesi yapıyı düzeltmeye odaklarsa iyi bir kuraldır. Örnek olarak yol göstermeye çalışıyorum ve ne zaman kırılsa yapıyı düzeltmeye yardım ediyorum. Kabul edelim, başka bir şey yapamazsınız. Bu sizi kızdırırsa, bu endişeleri dile getirmenizi öneririm. Aktif olarak bir durumu iyileştirmeye çalışan birinin sesi köşedeki homurdanan adamdan daha fazla etkiye sahiptir.


5

Bence "sadece bir geliştirici" olduğunuzu düşündüğünüz ve bu nedenle yaşayacağınız şeyleri değiştiremeyeceğinize inanıyorum.

Yapmanız gereken şey, birisinin yapıyı kırdığı her seferde depodan aldığınız her işlemi geri almanız ve ardından o adama henüz yapıyı kırdığını ve bunun durması gerektiğini söylemesidir. Ayrıca, bu durumu yöneticiye açıklamanız ve ekibinizin verimliliğinin bu sorundan dolayı acı çektiğini söylemeniz gerekir.

Süreci daha iyi değiştirmek için elinizden gelen her şeyi yapmanız ve izin istemek yerine daha sonra üzgün olduğunuzu söylemeniz gerekir.

Siz ve ekibinizin, sürecin değişmesi gereken bir durumda olduğunuzu ve o kırık modelle verimli çalışamayacağınızı düşünüyorum. Ayrıca, farkettiğinizde bu sorun hakkında bir şeyler yapmak sizin sorumluluğunuzdadır. Sorun hakkında başka kimse bir şey yapmayacaksa, yapması gereken sensin!


-2 ve kimse nedenini paylaşmak istemiyor .. heh heh.
hequ

1
Biraz yumurta kırmadan omlet yapamazsınız.
William Payne

2

Sizin durumunuzla ilişki kurabilirim, işteki en son projemle benzer bir durumla karşılaştım. Bir nevi o kadar en son yapı kırdı geliştirici Babysit / dadı / onu izlemek zorunda "sıcak patates" Sistemin uygulanması sona erdi sabit VE geçti tüm doğrulama testleri.

Bu başarılı oldu çünkü yapı ve doğrulama testleri düzenli olarak 4 saat sürdü, bu nedenle yapıyı kesmek, gerçek iş yaparken yarım gün kaybettiğiniz anlamına geliyordu. Bunu söylemeye gerek yok, geliştiricilerin gövdeleri birleştirmeden önce dalları daha verimli kullanmalarıyla sonuçlandı. Çoğu geliştirici için, önceki zihniyet "Kodum bozulursa CI inşa sisteminin bana haber vermesine izin vereceğim."


1

CI sisteminde yapılan basit bir değişiklik bunu yapar: yapıyı bozan herhangi bir değişiklik otomatik olarak geri alınır. Daha da iyisi, CI deposunun, yapı yeşil olduğunda değişikliklerin yalnızca yetkili depoya iletildiği aşamalı bir alan haline gelmesine izin verin. Gerrit gibi araçlar burada yardımcı olabilir.


3
Ancak bu görevi imkansız hale getirmek için "... bir geliştirici olduğumu, yönetici değil, süreci değiştiremediğimi unutmayın ..."
SChepurin

@Sürekliğiniz süreciniz verimsiz, süreci değiştirmeye karar verdiniz. Bir geliştirici olarak, değişikliği onaylayamayabilirsiniz, ancak her zaman süreç iyileştirme için çalışabilirsiniz.
oefe

1

Burada iki şey daha yardımcı olabilir:

  • ekibiniz yerel olarak inşa edilmiş bir CI'yi test edebilir mi? Yapıyı bozmadığınızı kontrol ederseniz - ya da en azından yönetim ve ekip işini yapmanıza ve tetiklemenize gerek kalmadan yapıyı ortak yollarla kırmayın.
  • CI'yi nasıl tasarladığınıza bağlı olarak kırık yapıları tanımlamanın birçok yolu vardır. Bu, kırılmayı tanımlamayı da içerir - ağır gelişme altında başarısız testlerin bir mola olduğunu düşünmüyoruz, daha doğrusu çalışılması gereken bir hedef.

Ama gerçekten şubelere bakmalısın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.