it-swarm.dev

Çift programlama ne zaman çalışır? Ne zaman kaçınmalı?

Her zaman körü körüne çift programından ziyade ekibimizde seçici olarak çift programlamayı kullanıyoruz. Aşağıdaki koşullarda en iyi sonucu verdiğini düşünüyorum:

  • Yepyeni ekip üyelerini bir projede hızlandırmak (belgelerin veya kodların kendi başlarına geçmelerine izin vermek yerine).
  • Genç ve yaşlı insanların birlikte çalışması (daha deneyimli geliştiricilerin bazı becerilerini ve püf noktalarını göstermeye yardımcı olur, ayrıca yaşlı köpeklerin bazen yeni hileler öğrenmesine izin verir).
  • Birisi bir kusuru bulmaya çalışırken, genellikle yeni bir göz setiyle eşleşmeye yardımcı olur.

Çift programı ne zaman kullanılır ve neden?

Çift programlama ne zaman önlenir? Neden?

55
Paddyslacker

Laurie Williams tarafından derlenen araştırma , çift programlamanın endüstriyel ekiplerde en iyi sonucu verdiğini gösterir.

  • Çiftler şartname, tasarım ve karmaşık programlama görevleri üzerinde çalışır - deneyler, üzerinde çalışırken kalite iyileştirmesinin gösterilmediğini gösterir basit görevler bir çift ancak hız iyileştirmeleri olabilir. Ayrıca "programlama" çifti genellikle kod yazma dışındaki faaliyetleri de içerir.
  • Bir eşleştirmedeki her bireyin yaklaşık aynı uzmanlık seviyesi vardır - çift programlama eğitim için mükemmel olsa da, çiftler en çok aynı alanda olduklarında meşgul olurlar seviyesi.
  • Roller düzenli olarak döner - düzenli olarak döndürmek, bireyler araç kullandıklarında veya araba kullanmak üzereyken en çok katkıda bulunma eğiliminde olduklarından, mevcut yardımcı pilotun etkileşime girmesine yardımcı olur.
  • Çiftler düzenli olarak dönerler - ekipler inşa ettikleri sistemin farklı bölümlerini bilmede rahatlık ifade ettiler. Çift rotasyon, projedeki belirli riskleri azaltan bilgi transferine yardımcı olur. Akademik bir ortamda çiftler sıklıkla atanır, ancak endüstri genellikle stand-up'lar sırasında sıklıkla kendileri tarafından atanır. Her iki durumda da, çift, her iki birey de eşleştirme etkinliğinde değer gören katılımcılara istekli olduğunda en etkilidir.

Kişisel deneyimimde XP ekibimin geliştirme zaman çifti programımızın ortalama% 60'ını harcadığını fark ettim. Geri kalan zaman bireysel gelişim yapmakla geçiyor. Bir başlangıç ​​tasarımı oluşturmak için eşleştirin, birkaç saat boyunca tasarım üzerinde tek başına çalışın, sonra kodun zor veya zor kısımlarını bitirmek için bir araya gelin.

Ayrıca çift programlamanın yaklaşık 1,5 ila 2,5 saat bloklarında en etkili olduğunu buldum. Çok daha az olan her şey, kurulum için çok fazla ek yük gerektirme eğilimindedir ve çok daha fazlası ve çiftler huysuz ve yorulma eğilimindedir. Huysuz ve yorgun, iyi iletişim kuramadığınız anlamına gelir ve kusurların sisteme girmesine izin veriyor olabilir.

47
Michael

Çift programlama benim için çok çok az durumda çalıştı.

Çift Programlamanın Benim İçin Başarısız Olduğu Yer

Kısa öykü, çift programlamanın yazılım geliştirmenin ana yolu olarak benim için çalışmadığıdır. Özellikle belirli bir soruna odaklandığımızda programı bir gün veya belki bir hafta eşleştirebilirim. Ama ondan sonra? Bitirdim. Kızarmış ekmek. Kimseyi görmek istemiyorum, kimseyle konuşmak istemiyorum ve bir insan şirketine tekrar uyanana kadar bir mağarada en az birkaç güne ihtiyacım var.

Bu üzücü bir hikaye, ama komik olan şu ki, nasıl bittiğinden çok daha mutluyum. Evden veya bir kafeden çalıştığım bir sözleşmede mutlu bir şekilde çalışıyorum ve yeni arkadaşlar edindim ve tahmin ettiğimden daha fazla San Francisco'yu keşfettim. Bir bisikletim ve bir dizüstü bilgisayarım var ve son teslim tarihlerime uyup düzenli olarak kodumu kontrol ettiğim sürece zamanım kendime ait.

Önceden çift programlama ile ilgili büyük sorunları listeleyeceğim ve daha sonra size detay ve fıkraları vereceğim.

  1. Bölünmüş odak.
  2. Deney yok.
  3. Yüksek not yok.
  4. Mülkiyette gurur yok.
  5. Kaçış yok...

... İş arkadaşlarıma gördüklerimi gördüklerini, bir şeyleri, herhangi bir şeyi eksik olup olmadıklarını sordum. İyi davrandığımı, yerleşmek ve uyum sağlamanın zaman aldığını söylediler. İlk başta herkes için zor oldu.

Sonunda kendime geri çekildim. Kör baş ağrıları, uykusuzluk ve vurma arasında karşılanmamış kod yazmanız gerekiyor, girdiye cevap vermeyi bıraktım. Bir ekrana bakıp hiçbir şey göremedim. Birisi benimle beklenmedik bir şekilde konuşabilirdi ve onları duyamazdım. İşimin temel gereksinimlerini karşılıyordum, ama orada değildim. Gün için gösterdiğim her şeyi bitirmiştim. Diğer eşim yazarken iPhone'umu kontrol etmeye başladım.

Sonunda - sadece üç ay sonra utangaç, ve ilk kez - çift programlama sırasında bir takım uygun olmadığı için kovuldum.

Yalnız değil

Bunu sadece anlamak için değil, aynı zamanda onun hakkında konuşabilmek için de yazdım. Çift programlamanın çoğu insan için işe yaradığı ve solo programlamadan çok daha kolay ve hızlı olduğu varsayımı vardır. Durum böyle olabilir veya olmayabilir, ancak uzun vadeli bir uygulama olarak, çift programlama benim için işe yaramıyor. Programlamayı eşleştirmeyen pek çok kişi daha işe yaramıyor. Biz de önemliyiz ...

34
Will Sargent

Ekibim, kuruluşundan bu yana, çoğunlukla "aşırı programlama" tarzı bir mağazanın parçası olarak, çalışmaya başlamadan önce çift programlama yaptı. Çift programlama varsayılan durumdur ; insanlar sadece tek bir sayı varsa veya bazen soruşturmalar için, özellikle de düşmanca ekipmanlarla uğraşmayı ve çalışmayı denemeyi içerenler için gerçekten tek başına giderler.

"Junior/senior" gitmek için tek yol değil. "Orta/küçük" yararlıdır; orta düzey erkeğin onu başka birine iletmeye zorlayarak elde ettiği bilgiyi sentezlemesine yardımcı olur. "Orta/Orta" zorlukları iki kişi bilgilerini paylaşmak, iletişim kurmak ve bir ekibin parçası olarak çalışmak için birlikte çalışır. Ve gerçekten üst düzey iki erkeğiniz olsa bile, farklı uzmanlık alanlarına sahip olmaları ve farklı yaklaşımlar ortaya koymaları mümkündür. Bilgi paylaşma yönleri, birisinin bir projede belirsiz bir şekilde "hızlanınca" sona ermez. Aksine, çift programlama bir öğrenen organizasyon ifadesidir. Yeni teknikler ve en iyi uygulamalar hızla yayıldı.

Çift programlama ayrıca kodun kalitesinin (daha az hata) ve kodun akıl sağlığının korunmasına yardımcı olur (sadece amaçladığı şeyi yapmaz, aynı zamanda gerekir ... ideal olarak yanlış şeyi yapan çok haftalık bir tavşan deliğine veya çılgınca çatışacak iki farklı doğru şeye inmeden). Programcıların odaklanmalarını sürdürmelerine yardımcı olur: burada 80 saatlik çalışma haftasının evi olan Silikon Vadisi'nin kalbinde, haftada sadece 40 saat çalışabiliriz, çünkü günde sekiz saat yoğun kodlama yapıyoruz, şeyleri değiştiriyoruz birbirleri ile. (Ayrıca, çift programlama yapmaya daha uzun gittiyseniz, muhtemelen dışarı çıkardınız. Ya da en azından yanacaksınız.) Bu iş/yaşam dengesi için harika ve aynı zamanda organizasyonunuza da yardımcı olur hızlı geri dönüşe sahip olmak önemlidir (özellikle düşük gecikmeli geri dönüş).

Tamamen% 100 şeftali ve krema değil; Çift programlamanın zaman zaman bazı problemlerde faydalı olan sezgisel beyin süreçleri uygulamamın önünde bir engel olduğunu görüyorum. En son olarak, bir bellek sızıntısı görevinde, hem çiftli hem de çiftsiz biraz zaman geçirdim; biri olmadan, herhangi bir anda ne yaptığımı tam olarak nasıl anlayacağımı bilmeden etrafta dolaşmaktan ve deneyler denemekten daha özgür hissettim. Ayrıca singleton üzerinde çalışmanın, bir teğet üzerine çıkmanın ve bir hevesle belirli vahşi refactorings (XP metodolojisinde değer verilen) yapabilmesinin bazı avantajları da vardır.

Ancak herkesin söylediği gibi, faydalar maliyetlerden çok daha ağır basar ve eşleştirme bizim için çok iyi sonuç verdi: başlangıç ​​aşamasından daha büyük bir şirketin satın alınmasına ve sonraki entegrasyonumuza kadar. (Bahsettiğimiz gibi, çift programlama bize genişleme yoluyla ve küçük bir ciroya rağmen kültürün devamlılığını korumamıza yardımcı oldu).

(Perl'de bir yazılım cihazı geliştiriyoruz, ~ 4.000-40.000 $ liste fiyatı.)

10
user2348

"Eşli Programlama" kurulumunda hiç çalışmadım ve listelediğiniz üç koşulun bir parçası olduğunu iddia edebilirim. Bahsettiğiniz senaryo, atılan yardım/eğitim aşamaları ile daha "düzenli programlama" gibi görünüyor. "Çift programlama" oluşmadan tüm bunları yapmadık mı? Çift Programlama, bir ekip içinde paylaşma sürecinin eldeki acil görev veya problemle uğraştığınız anda durmadığı durumlarda daha kararlı bir yaklaşım gerektireceğini varsayıyorum. Ama sonra "bildiklerimi" değil "düşündüğüm" budur.

Şahsen Çift Programlama için bilgimi öğrenme ve paylaşma şansı bulduğum bir ekipte çalışmak istiyorum. Birlikte çalıştığınız herkesin kilometrelerce önde olduğu dengesiz bir ekip, ya da daha sonra eşit derecede aşağıda oldukça ilginç olabilir. Ayrıca, inançlarına ve ikna edilmesi zor insanlarla çalışmaktan da korkarım.

4
Preets

Son birkaç aydır ekibimizde Eşli programlama ile denemeler yapıyoruz. Yeni bir şey (yeni teknoloji, yeni özellik vb.) Üzerinde çalışırken, ekibin başka bir kişisiyle fikirleri hızlı bir şekilde zıplatabileceğiniz ve bunları onaylayabileceğiniz/geçersiz kılabileceğiniz için oldukça kullanışlı hissediyorum. Ayrıca, yan yana akran değerlendirmesi hataları uzak tutmaya yardımcı olur.

Başka bir takım arkadaşı, ATDD yapmak için bir testle çift programlamayı kullanmayı denedi ve sonuçlardan oldukça memnunlardı (hesaplamalarına göre,% 20 dev maliyetindeki bir artış, test süresinde yaklaşık% 50 azalmaya yol açtı)

2
Amit Wadhwa

İyi geceler

çoğu kez Aşırı Programlama uygulamaları ve çift programlama hakkında tartıştık. Zaman içinde, programlamanın solo bir etkinlik olduğunu anlayabiliyoruz çünkü programcılar konsantrasyon ve izolasyona ihtiyaç duyuyorlardı. O zamanlar programcılar, etkin bir şekilde koda odaklanabilecekleri ve Güzel ve yaratıcı kararlar alabilecekleri zihinsel bir durum olan bölge içindeydi.

Bir programcının birbirini kesintiye uğradığını varsayarsanız çift programlama da riskli görünmektedir. Öte yandan, birlikte çalışan iki programcıyı kesmek daha zordur. Örneğin Solo programlamada, kesintiye uğramak daha kolay olacaktır, bu nedenle solo bir programcının "bölgede" kalması neredeyse imkansızdır.

Ölü hat hemen köşede olduğunda kod kalitesi başka bir özelliktir. İnsanlar her zaman acele edecek, bir çift programcı veya bir solo programcı olacaklar: belirli en iyi uygulamaları uygulamayacaklar ve sadece ünite testlerini unutacaklar.

Çift programlama ile devam ederdim. Çünkü riskler söz konusu olduğunda, bir programcı gittiğinde, her zaman süreci belgelemek ve diğer herkese nasıl çalıştığını öğretmek için başka bir erkeğiniz olacaktır.

1
Junior M

Önemsiz karmaşıklıktaki herhangi bir şey üzerinde çalışmak, çift programlama için iyi bir aday olma eğilimindedir, böylece birden fazla kişi kodu, kod tabanının bir bölümünü bilen tek bir geliştiriciden ziyade anlar. Başka bir durum, birisinin bazı becerileri aktarmak istediği yerdir. Burada bir örnek, birim testleri çiftinde gerçekten iyi olan birine sahip olmak, kavramı çok iyi tanımayan biriyle olabilir ve böylece bir şey hakkında ilk alışkanlığı edinmeye yardımcı olabilir.

Çift programlamanın nereden kaçınılacağı konusunda, işi iki gruba ayırmanın ve her geliştiricinin işi yapmak için işin bir kısmını ayrı ayrı yapmasına izin vermenin daha kolay olacağı basit çalışma görevleri. Bazı görevler sadece biraz yazmayı gerektirebilir, ancak o kadar büyük değildir, her geliştirici birkaç kez kaba kuvvet yaklaşımı yaparsa yapılabileceği için bunu yapmanın daha iyi bir yolunu bulmaya çalışmak için birkaç saat harcamak faydalı olacaktır. saatler.

1
JB King