Çift Değiştirme: Artıları ve Eksileri nelerdir?


15

Çoğu Agile / XP teorisyeni tarafından benimsenen genel fikir, çiftlerin düzenli olarak değişmesi gerektiği gibi görünüyor. Örneğin, her programcı çifti günde bir kez değiştirmelidir; insanların yarısı günün başında takas, yarısı insanların öğle yemeğinden sonra takas: toplantılar, tatiller ve benzeri gibi dış faktörler nedeniyle çoğu insan takas sürelerini haftada bir veya iki kez çevirmeye eğilimli olacak, böylece çift konfigürasyonları takım boyunca oldukça eşit.

Sık sık değiştirmenin arkasındaki bir gerekçe, bilginin belirli bireylerde yoğunlaşan belirli beceri ve bilgiye sahip olmaktan ziyade ekip arasında hızlı ve eşit bir şekilde yayılmasıdır - insanlar uzakta ya da şirketten ayrılırsa işin sorunsuz devam edebileceğini ima eder. Kendisini programlayan çift dogma için bir çeşit sonuç olan başka bir gerekçe, birisinin sizi her değiştiğinde yeni bir gözle yeni bir kod incelemesi almasıdır, böylece sadece kod kalitesini artırabilir.

Her iki iddia da kulağa mantıklı geliyor; yönetim açısından bakıldığında, hem kararlılık hem de kalitenizde bir artış görüyorsunuz ve bu kadar sık ​​değiştirme, baktığım çoğu Agile / XP kitabında neredeyse standart bir teoridir .

Peki, gerçekten uygulamaya konduğunda, insanlar aslında çiftin takas etmesi hakkında ne düşünüyor?

  • Bir programcının bakış açısı?
  • Yöneticinin bakış açısı?

Ve

  • Birisi bir çiftin dışına / üzerine geçtiğinde ne yapmalı?

Bu "Eşli Programlama" ile aynı şey midir?
Robert Harvey

@Robert Harvey - Çift programlamanın bir yönü. Bir takım çiftler halinde programlamaya karar verdiğinde (çalışma günlerinin bir kısmı için), o zaman programcıları çiftlere nasıl ayarlayacağına karar vermeleri gerekir, yani bir programcı bir çifti ne zaman terk etmelidir (diğeri aynı zamanda katılmalıdır) ). Bu "Çift Takas".

Harika soru için +1. Ne yazık ki, çift takas konusunda veriye sahip olmak için, düzenli olarak eşleştirme yapan bir dükkan bulmak yeterince zor. Umarım bu konuda yanılıyorum ve iyi yanıtlar alıyorsunuz, bazılarını duymakla çok ilgileniyorum.
Jesse McCulloch

2
Şahsen çift takas çok rahatsız edici bulurdum. Bu kadar yakın mahallelerde pek çok farklı kişilik ve beceri seviyesi ile uğraşmaya çalışmak çok fazla bilişsel uyumsuzluk yaratacaktır.
Robert Harvey

@Jesse McCulloch - Kitapların bir takımın söylediği gibi sadece programları ve takasları eşleştiren bir yerde çalışıyorum. Ayrıca saf bir solo ortamda çalıştım ve bu yüzden kontrast hakkında oldukça iyi bir perspektifim var. Ancak, başkalarının fikirlerini duymak isterim, çünkü onları çok fazla etkilemeden kendimle eşleşip eşleşmediklerini görmek isterim.

Yanıtlar:


4

Çift Programlama zordur.

Zor, çünkü en iyi şekilde çalışan 2 kişi beceri seviyesine yakın olduğunda ve bazı çalışma ortamlarında zor olabilir. Takas ettiğinizde daha zor olabilir, çünkü uygun beceri seviyesine sahip başka birini bulmanız ve ardından mevcut problemi hızlandırmanız gerekir. Bunun yararı, daha fazla kişinin eşleştirilmiş herhangi bir kod parçasına maruz kalmasıdır. Bu, kodun sabitlenemediği yerlerde daha az kez yol açmalıdır, çünkü kimse bu konuda yeterince şey bilmiyor. Ayrıca grup sahipliğini ve herkesin herhangi bir iş parçasını alma yeteneğini de yaymalıdır.

Eşleştirmenin yapıldığı ortamlarda bile çift değiştirmenin maliyete değmeyeceğini fark ettim. Ancak bu, görevlerimizin ~ 1.5 günden fazla sürmemesinden kaynaklanıyor olabilir. Yaklaşık 1,5 günlük işten daha büyük olmayan görevlerin parçalanmasına büyük fayda sağladık. Çift değiştirme, daha uzun çalışan görevler bağlamında daha anlamlı olabilir.


Şahsen, her seviyedeki insanlarla eşleşmekten hoşlanıyorum. Bazen öğreniyorum, bazen öğretiyorum, bazen de işleri hallediyoruz. Ancak öğrenme ve öğretme, özellikleri kontrol etmek kadar önemli olduğunu düşündüğüm uzun vadeli ekip kapasitesini arttırır.
William Pietri

bunu düşünebilirsiniz, ancak uzmanlığınız olarak son teslim tarihinin buharlaştığını gören proje yöneticisi, kabul edemeyeceğiniz kadar hızlı kod çalmak yerine insanları zamanında eğitmek için kullanılır. Çoğu projenin işleyiş şekli budur, insanları işi yapmak için gereken becerilere sahip olacak şekilde eğitmek için zaman yoktur, bu nedenle gençler sarkık bırakılır, sadece bütçe aşımları için suçu almak için iyidir.
jwenting

@William Pietri: Deneyimlerime göre eşleştirme, öğretim için iyi bir format değil. Birini alıp onlara neler olduğunu açıklamak için kod aracılığıyla yürürken bir sorunum yok. Ancak, bu çift programlama değildir.
dietbuddha

@jwenting: Kalite programlamanın kalite ve sürdürülebilirlik konusundaki saçma teslim tarihlerine odaklanan mağazalarda ikili programlamanın iyi sonuç vermeyeceğini söylüyorsanız tartışmam. Benim ipucum: deli olmayan bir yerde çalışın.
William Pietri

@dietbuddha: Benim için çalışıyor! Yeni bir dil, çerçeve veya kütüphane öğrenmem için en hızlı yol, onu iyi bilen insanlarla eşleştirmektir. Ve bir noob'u eşleştirmekten daha hızlı hale getirmenin daha iyi bir yolunu bilmiyorum. Örneğin, bu deneyimi ele alır: slesinsky.org/brian/code/starting_xp.html
William Pietri

3

Hem programcı hem de yöneticiyim. İşte benim almam:

Düzenli değiştirme harika. Günde 2-4 kez değiştirmeyi tercih ediyorum, ki bu da gidebileceğin kadar hızlı. Bizim için, bu doğal kırılma noktalarında geliyor: genellikle öğle ve öğleden sonra. Her gün veya iki günde bir değiştirmek muhtemelen iyidir, ama bundan daha uzun sürmek için endişelenirim. (Her altı haftada bir kadar nadiren bir yer değiştirdiğini duydum, ki bu delilik olduğunu düşünüyorum; o zamandan sonra bir aziz bıçaklamaya hazır olacaksınız.)

Bir programcı olarak, yeni bakış açıları aldığım, kodun diğer alanlarını kontrol edebileceğim ve tercih ettiğim gibi bir şeye yapışabilir veya bir şeyden devam edebileceğim için seviyorum. Kısa süre önce solo kodlamadan eşleştirmeye gittim ve çok heyecanlıyım: Daha fazla öğreniyorum, daha çok eğleniyorum ve daha fazlasını yapıyorum.

Bir yönetici olarak harika olduğunu düşünüyorum çünkü birçok kamyon faktörü ve darboğaz problemini çözüyor. Örneğin, bu hafta sonu bir arkadaşınızın düğünü için uzun bir hafta sonu alıyorum ve hiç endişelenmiyorum: üzerinde çalıştığım her şey başka insanlar tarafından da çalışıldı. Ayrıca ekip üyelerinin birbirlerinin güçlü ve zayıf yanlarını takdir etmelerine ve toplu kod sahipliğini teşvik etmelerine gerçekten yardımcı olduğunu düşünüyorum.

Mevcut işte kimin kaldığına gelince, bunun esas olarak ilgili insanlara bağlı olduğunu hissediyorum. Bazen bir şeyler görmek istersiniz, bazen de bir değişikliğe hazır olursunuz. Ayrıca bazen uzmanlık getirmek için takas ediyoruz, ya da birileri ilgilendikleri bir şeyi öğrenebilir. İş birimlerimizi oldukça küçük tutmaya çalışıyoruz (0.5-2.0 çift gün), bu yüzden takas çok önemli değil .


Benim için şunu söylemeliyim ki, takas yapmanın iyi olduğu zaman sadece a) Kodladığım adamla kodlamaktan hoşlanmıyorum, b) Üzerinde çalıştığım hikayeyi sevmiyorum (bir ropey tamir etmek gibi) eski bellek hatası). Aksi takdirde baştan sona devam etmek istiyorum. Şahsen ben çift takas kod kalitesini düşürür düşünüyorum çünkü iyi kodun tek bir net görüş olması gerekir, tek bir parça üzerinde ne kadar çok insan çalışırsa, vizyon o kadar dağınık hale gelir. Bilgi paylaşımına gelince, çoğu insanın neler olup bittiğiyle ilgili bir fikir edindiğini söyleyebilirim, ancak kimse gerçekten hiçbir şeyi tam olarak anlamıyor.

@B Tyler - Bence bir kod tabanı ortak bir entelektüel eser, bu yüzden ortak bir vizyon olan açık bir vizyona sahip olmalısınız. Bu, takas etmenin önemli olduğunu düşünmemizin bir parçası: sağlam bir ortak yaklaşım geliştirmek çok fazla etkileşim ve tartışma gerektiriyor.
William Pietri

1

Okie, işte kendinden ilan edilmiş bir pragmatik çevik / xp programcısının cevabı gidiyor. İki yıldan fazla bir süredir ikili programlama yapıyorum. Çift programlama iyi ise, çiftleri sık sık değiştirin (ideal olarak yarım günde bir değilse, her iki saatte bir). Ofis konumumuzda, çiftleri her gün (genellikle) veya iki günde bir (daha kötü durumda) değiştirmeyi bir noktaya getiriyoruz. Bunu kendi başına yapmak, yürüttüğümüz kodun kalitesine ve her bir çift rotasyonda sahip olduğumuz öğrenmelere ya da uzaklaştığımıza çok güven verebilir (kod incelemesinin iyi olduğunu, daha iyi ve daha erken daha iyi olduğunu biliyoruz. Bu nedir "çiftleri takas uygulamasına dahil çifti programlama" gerçekleştirir bu).

Neden iki / dört saatte bir çift değiştirmiyoruz? Aslında ben de bunu yapan ekiplerde bulundum. Kesinlikle çok daha serin ve daha üretken. Ama işte anlaşma, takas çiftlerinin zaman aralığı bir kural olmamalı, kendi başına gerçekleşmelidir; ancak o zaman yönetici veya işletme faydalarını görebilir.

Buna şahit oldum ve yaşadım. Şimdi onun evanjelisti. Teori yok. Aksine onun iyice pragmatik :) Mutlu pinpon eşleştirme ve takas çiftleri.


1
Ne yazık ki ben tamamen çift programlama genel olarak kötü bir fikir olduğu görüşüne dönüştürülür; çift ​​programlamasında sık sık çift değiştirme işleri daha da kötüleştirir. Tüm teoriyi duydum ve pratikte çok denedim ve sadece solo programlamaya göre inanılmaz derecede verimsiz, çok daha sıkıcı ve sinir bozucu olduğunu ve daha düşük kalite koduyla sonuçlandığını düşünüyorum.
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.