Çift programlamanın olası dezavantajları nelerdir? [kapalı]


22

Çift programlama günümüzde oldukça ünlüdür.

Bunun gibi çeşitli avantajları vardır:

  1. Daha az böcek içeren programlar.
  2. Üretim sonrası bakım maliyeti çok daha azdır.
  3. Yeni uygulamaların ortaya çıkmasıyla sonuçlanan uygulamalara meydan okulur.
  4. Programcılar birbirlerinden öğrenirler.
  5. Programcılar yumuşak beceriler geliştirir.

Ancak çift programlamanın dezavantajları nelerdir?


1
Soru başlığındaki “paralel” yazım hatası mıdır?
5gon12eder

14
İki kişiyi aynı (belki de daha az) çıktı üretmek için almaktan başka bir şey değil mi?
Robert Harvey,

4
@ ThorbjørnRavnAndersen Muhtemelen daha azdır.
Robert Harvey,

4
@ ThorbjørnRavnAndersen Matematiğinizle ilgili bir sorun var. Temel olarak söylediğin şey sürekli akran / kod incelemesinde olduğun . Bunun nasıl daha ekonomik olduğunu hayal etmek zor.
Robert Harvey,

5
Bu, tam gelişmiş bir Çift Programlama düzenlemesinin dikkatinin dağıtılması olmadan kolayca yapılabilir. İhtiyaç duyduğunuz temelde yazılım geliştiricilerinizle bu kapasitede çalışın.
Robert Harvey,

Yanıtlar:


28

Her ne kadar çift programlama önemli bir ün kazanmış olsa da, bazı zorluklara da sahiptir.

Bazıları aşağıdaki gibidir:

  1. Çift programlamada arkanıza yaslanamaz ve kendi kodunuzu kendiniz değerlendirebilirsiniz.
  2. Çiftin biri aktif olarak meşgul olmayı bırakabilir.
  3. Sürücünün "sesli programlaması" gerekiyor. Sessizce programlama avantajı azaltır.
  4. Aynı özelliklerin üretilmesi daha fazla çalışma saatine mal olur. Kod kalitesi ile artan kodlama maliyeti arasında denge sağlanmalıdır.
  5. Deneyimli ve acemi bir programcı eşleştiğinde, "usta izle" fenomeni ortaya çıkabilir. Acemi üye, çoğu kodlamayı tamamlayan deneyimli üye ile gözlemci olabilir.
  6. İki deneyimli kullanıcı eşleştiğinde, her üye kendi fikirlerini zorlamaya çalışırken bir "geliştirici ego" fenomeni ortaya çıkabilir.

4
2 ve 5'e, Ping-Pong Pairing ile karşı koyulabilir (TDD döngüsüyle kilit adımda sürücü ve sürücü arasında çok hızlı bir şekilde rol değiştirme: Alice, başarısız testini yazar, Bob, test geçişi için kod yazar, Alice refactors, Bob, başarısız testini yazar, Alice sınavı geçmek için kod yazıyor, Bob refactors, Alice başarısızlık testi yazıyor…). Bu şekilde, sürücü ve yönlendirici en geç her birkaç dakikada bir (onlarca saniye gibi) rol oynar ve her üye eşit derecede büyük ve önemli görevler alır.
Jörg W Mittag

5
4 açık sesler, ancak emin değilim. Böcek yakalamak ve erken geri bildirim almak, örneğin, iki katına çıkan geliştirici saatlerini telafi edebilir (ya da olmayabilir).
Jörg W Mittag

4
@ JörgWMittag (re: Ping-Pong eşleşmesi) çok stresli bir iş günü için bir tarif gibi görünüyor: / Umarım bu veya herhangi bir katı çift programlama metodolojisini uygulayacakları bir yerde program yapmak zorunda kalmam.
Andres F.

4
Ping-pong programlama, ilgili ikisinin esas olarak değiştirilebilir olmasını gerektirir. Tek mantıklı çift programlama kombinasyonunun onu düşünmem ve yazmam (ve düşünmem) olduğu bir meslektaşım var. Odaklanmaya devam etmesine ve neler olduğunu anlamama yardımcı oluyor.
Thorbjørn Ravn Andersen

3
Ayrıca, kod incelemelerinde yalnızca önemli hususlara odaklanabileceğiniz zaman önemsiz ayrıntıları tartışırken oldukça zaman kaybettikten bahsedebilirsiniz.
Giorgio

24

Tüm mühendisler için zorunlu bir süreç olarak (kısaca) ortaya çıkarmayı düşünen bir organizasyon da dahil olmak üzere birkaç kez çift programlama yapmaya çalıştım (bu fikrin ne kadar iyi sonuçlandığını tahmin edebilirsiniz). Şahsen ben ondan nefret ettim.

Aşağıda listelediğim nedenler sadece öznel deneyimlerim ve etkilerini somut olarak 'ölçemiyorum'. Ama burada hepsi aynı:

1 - 'Navigator' ve 'driver' olmak, yalnızca eskinin vokal olduğu ve ikincisinin dinleyeceği durumlarda yardımcı olur.

Hepimiz inatçı, bazı teorik kaygılar hakkında gayretli olan veya patolojik olarak yapamayan - psikolojik olarak - birileri bir sorun önerdiğinde eski işi 'atmak' isteyen geliştiricilerle tanıştık. Ve hepimiz bireyleri endişelerini dile getirmek ya da köşe davaları önermek için çok çekingen ya da çekingen tanıyoruz.

Bu tür geliştiriciler eşleştirildiğinde, gezgin hızlı bir şekilde pasif bir rol oynar ve neyle sonuçlandığınız otomatik kod incelemesiyle tek programlamadır. Bu anıtsal bir kaynak israfıdır.

2 - Eşleştirme yaratıcılığı engeller.

Eskiden “grup beyin fırtınası” nın değeri hakkında hissedilenlerin aksine, bugünlerde fikir birliği yaratıcı bilgi çalışmasının bağımsızlık ve özerklik gerektirdiği yönünde . Yalnız çalışırken, gerçekten uygulanabilir olup olmadığını görmek için çılgınca bir fikri hızlıca bir araya getirebilirsiniz. Bazı garip prototipleri wordlessly olarak birleştirebilirsiniz, ve eğer başarısız olursanız, farketmez, çünkü kimse bilmiyor .

Bunu eşleştirmeyle karşılaştırın: yeni bir konsept denemek istediğimde, ortağımı ikna etmem, onları uygulama aracılığıyla adım adım konuşmalı ve başarısız olursa beni yargılamayacaklarını ummalıyım. Bu tür bir çevre yeni fikirler yaratmak için toksiktir .

3 - En düşük ortak payda tasarımı.

Bir çift, yukarıdaki gibi yeni fikirler üretemediğinde veya bireyler bir özelliğin nasıl tasarlanması gerektiğine dair bazı temel prensipler üzerinde hemfikir olmadığında, ortaya çıkan şey, kimseyi ödün vermek istemeyen karışık bir tasarımdır.

Hızlı ve kirli performans manyağıyla harika, güzel, gökyüzüne işlevsel programlama soyutlamaları oluşturan bir geliştiriciyi eşleştirirseniz, birlikte üretecekleri kod tipik olarak çok zarif ya da özellikle hızlı olmaz.

4 - Özerklik ve şiddetli şeffaflık eksikliği.

Şiddet şeffaflığı , Scrum metodolojisine karşı orta derecede ünlü (ve oldukça tartışmalı) bir polemikten kopardığım bir ifadedir. Bazı örgütlerin, geliştiricileri piyadeleştirme ve normalde profesyonel olmayan çalışanlar için ayrılmış şüphe ile tedavi etme şeklini açıklar.

Geliştiricilerin çalışmasını tamamen şeffaf kılmanın 'zararları' hakkında ne düşünüyorsanız (ve bunun aslında bir zarar olduğuna karar vermeyebilirsiniz), birçok kişi özerkliklerine ve yalnız çalışma yeteneklerine değer verir, doğru olanı yapma konusunda güvenir. Bu önemli bir psikolojik ihtiyaçtır ve geliştiricilerin eşleşmeye zorlanması (en az bir mağazada görüldüğü gibi) çalışanları dehşete düşürecek, üzecek ve yabancılaştıracaktır.

5 - Bazı geliştiriciler sadece çiftler halinde iyi oynamıyorlar.

Bazı insanlar eşleşmiş bir ortamda kendilerini uygun şekilde yürütemez veya yapamazlar. Kötü hijyene, kötü çalışma alışkanlıklarına, aşındırıcı bir kişiliğe, 'yüksek' ve 'yoğun' bir biçime sahip olabilirler ya da kendilerini bireysel çalışanlar olarak niteleyen başka özelliklere ev sahipliği yapabilirler;

Bunu çözebilir misin? Pek sayılmaz. Kişisel davranış değiştirmek zor. Bir çift programlama mağazasının işe alma konusunda çok dikkatli olması ve birinin nasıl çalıştığını ve meslektaşlarıyla iyi çalışıp çalışamayacağını görmek için çok zaman harcaması gerekmektedir. Bununla birlikte, kişiliği daha da zorlaştırmak, beceri ve uzmanlık konusundaki standartlarınızı gevşetmediğiniz sürece işe alımların daha uzun süreceği anlamına gelir.


3
"Şiddetli şeffaflık" ifadesinden hoşlanırken, tercih edilen metodolojinin (scrum / çevik veya daha geleneksel bir şey) geliştiricilerin profesyonellere muamele görüp görmediği ile hiçbir ilişkisi olmadığı benim deneyimim oldu. İşlevsel olmayan kuruluşlar, çocuklar gibi profesyonellere Scrum veya CMMI'yı takip ediyormuş gibi davranırlar.
David

1
“Bunu eşleştirmeyle karşılaştırın: yeni bir konsept denemek istediğimde, ortağımı ikna etmem, onları uygulama aracılığıyla adım adım konuşmam ve beni başarısız olursa yargılamayacaklarını ummak zorundayım. çevre, yeni fikirler yaratmak için toksiktir. ": Sadece yargı ile ilgili değil, hız ile de ilgili. Bir fikriniz olduğunda dikkatinizin dağılmasını istemezsiniz, akabildiğiniz sürece yazabildiğiniz kadar yazmak istersiniz. Çift programlama aktif olarak bunu yapmanıza engel olur.
Giorgio

1
Tüm fikirlerinizi yazdıktan sonra, belki ertesi gün onları toparlayabilir ve ondan sonra, bir meslektaşınızın inceleme panosu gibi bir araç üzerinde tam bir inceleme yapmasına izin verin; fikirleri bitirdim ve zaman baskısı olmadan düşünün. Çift programlama ayrıca bunu engeller çünkü kodlamayı ve kod incelemesini bir aktivitede birleştirmeyi dener.
Giorgio

2
@Jimmy: Beş puanla bir cevap yerine beş cevap yazsaydın, benden beş puan alırsın.
Giorgio

Kesinlikle denemenin sessiz ve hızlı bir iş gerektirdiği konusunda hemfikir - ki bu eşleştirme isteğinin tam tersidir. Belki de eşleştirme, büyük ve mevcut bir kurumsal sisteme bakım yapan veya ayrık özellikler ekleyen geliştiriciler için iyi çalışır. Ancak keşif, yeni teknoloji, yaratıcılık ya da zor kısıtlamalarla çalışmanın yaratıcı yollarını gerektiren işler için hiçbir işe yaramayacağından eminim.
Jimmy Breck-McKye

12

Durumunuza veya bakış açınıza göre değişir.

Çift Programlama organizasyon için iyidir. Ama bu birey için iyi mi?

Sonuçta maliyet tasarrufu (erken geribildirim) ve verimlilik yöntemi; Bu seninle ilgili değil, proje, ürün, şirket ($$).

Kişisel çıkarlarınız olsa da, herhangi bir geliştirme metodolojisinin nedeni veya sonu değillerdir. (Tam zamanlı) çift programlama, örneğin, gevşemeyi, sörf yapmayı vb. Önler, duraklarınızı eşinize doğrulamak zorundasınız.

(Dönen) ortağınız en iyi gözetim kamerası olacak: iş yoğunluğu artar.

Veya, bilgiyi dağıtarak kişi şirket için daha az riskli hale gelir (örneğin, şirketi gerekli bilgiyle bırakamaz) ve daha az "pazarlık fişleri" vardır.

Müdürünüzün bakış açısından değil, şirketinizdeki gerçek durumunuz / bakış açınızdan daha eleştirel makaleler okuyarak daha fazla puan bulduğunuzdan eminim.

Neredeyse tüm metodolojiler yöneticinin bakış açısından yazılmıştır.


Şirketin sahibi olmadığınız sürece, kod üretmeniz için size para verilir. İşvereniniz için ne kadar iyi kod üretebiliyorsanız, işvereniniz için daha iyi pazarlıklar - işvereninize karşı pazarlık fişleri almanın yollarını düşünün, bence sizi en çok neyin değerli kıldığını anlamıyor. PP'nin bütün gün bunu yapamayacağınız kadar yoğun olduğuna inanıyorum, ancak otomatik olarak dinlenmeye ihtiyacı var.
Thorbjørn Ravn Andersen

7
Bazı insanlar "bir işveren için değerli olmaktan" bir geçim yapmak zorunda kaldıklarından, sadece işverenlerinin çıkarlarını kölelerinin göz önünde bulundurmasıyla değil, kendi çıkarlarıyla da hesaplamak zorundalar.
Bir misafir

1
@ ThorbjørnRavnAndersen, herkesin vergi ödediği ve herkesin liyakat üzerinden tazmin edildiği ideal bir dünyada yaşamıyoruz.
Den

1
@ ThorbjørnRavnAndersen Ne kadar iyi kod benim işverenim için o kadar iyi? Keşke böyle bir dünyada yaşasaydım, dünyamda meselelerin mümkün olan en hızlı şekilde işlevsellik ürettiği, kod kalitesinin sadece ihtiyaç duyulandan daha fazla zaman almaması gereken bir ara yumuşak değer olduğu ortaya çıktı. Hatalar tamam, genellikle şiddetli değiller ve kolayca çözülüyorlar.
Alex

@Alex "genellikle şiddetli değil" - bu dünyayı çok
özlüyorum

5
  1. Birdenbire tuvalete gitmek veya bir kahve içmek istediğinizde şimdi birisine söylemelisiniz. En azından izin istemene gerek yok.

  2. Diğer kişinin hijyen standartlarıyla baş etmek zorundasınız.


4

Diğer cevaplara ek olarak:

  1. Programcılarına dizüstü bilgisayarlarını vermek için çalıştığım birçok şirket (müşterilerin sitesine göre - işten sonra eve götürüldüklerinde ekipmanı güvenli tutmak daha kolay, bir tutam VPN'de evden tek işi yapabilmek, vb.) Yıllarca önce başka bir kişinin ("sürücünün" dizüstü bilgisayar ekranında omuz sörf perspektifinden görme sorunlarım vardı - yaş bunu iyileştirmeyecek (ve bazı ekranlar her durumda ideal görüş açısının dışında okumak zorlaşacaktır).

    Bu nedenle çift programcıların, donanım maliyetini artıracak ve yere uyarlanabilirliği sınırlandıracak kadar büyük ekranlara ihtiyaç duyacaklardır. Bazıları için sorun olmayabilir, diğer durumlarda ise sorun olacaktır.

  2. Ayrıca kişisel hijyen tercihlerindeki (sigara içme, yemek yeme ve içme dahil) farklılıkların yanı sıra kişilik çatışmalarını da üretkenliği engellemeye bağlı buldum. İki programcıya "emmelerini ve üstesinden gelmelerini" söylemesi yeterince kolaydır, bu genellikle insanların ağızlarını kapalı tutmaları ve pasif agresif eylemler yoluyla birbirlerinin küstahlıklarını susturmaları için sessizce sabote etmeleriyle sonuçlanır.
  3. Gürültü, ses. Birincisi, sessiz bir çalışma ortamı gibiyim. Bazı ikili programcı gruplarının sürekli iletişimini hayal edemiyorum (iletişim için konuşmanız gerektiği gibi). Kulaklıklarımdaki vokal müziği bile yoğunluğuma müdahale etme eğilimindedir (ofis dinlemek için yumuşak enstrümanlar ...). Her yerde açık plan ofisinden ayrılmış 2 kişilik ofis odalarına geçerek bu durumun hafifletilebileceğini tahmin ediyorum, ancak bu da maliyeti tekrar artıracak.

Eğlenceniz için fıkralar:

  • Bir önceki işveren bir zamanlar başka bir ülkeden müteahhit aldı (hepsi suçluyu korumak için isimsiz kalıyordu). İşveren konaklama sağladı, ancak ulaşım sağlanmadı. Söz konusu müteahhit çalışma yolum boyunca yaşadığından, onu almaya ve tekrar bırakmaya gönüllü oldum. Diyelim ki kişisel hijyeni alışkın olduğum standart ile aynı standartta değildi, ve ben istemediğimde de sertçe içti ("en güçlü!"). Ofise 15 dakikalık seyahatimizde, penceremin aşağıya doğru çekilmesini sağladım - kışın bile - arabamın, meslektaşımın 3 aylık stintinden sonra (hayır, arabada sigara içmedi), eski bir sigara odası gibi kokmasını engellemedi. , ama beni beklerken yaptı.
  • Ayrıca çift programlama yapmadık, ancak konferans masasında yan yana oturduk (bir süre için). Yaklaşık bir ay sonra, masanın sahte ahşabında, iş arkadaşının fare elinin pozisyonunda güzel bir kahverengi yüzük vardı. Bu noktada, tercih ettiğim çağrı merkezi açık plan alanının hemen yanında açık bir masa buldum (kulaklıklarımın da yardımıyla).
  • Sonra her yerde ofis içecek var: kahve. İçmeme rağmen, diğer meslektaşlarım kadar sık ​​olmadan içebiliyorum ve içemiyorum. Yakın mesafedeki nefesler oldukça rahatsız edici olabilir - boş unutulmuş kupa kokusuna benzer. Parfüm "çörek" diyelim ...

3

İkili programlamanın sosyal ve pratik nedenlerden dolayı başarısız olduğunu düşünüyorum. Temel olarak, bir kişiden sürekli gözetim altında çalışmasını ve diğerinde delikler dürtmek dışında hiçbir şey yapmamasını istiyorsunuz.

Bir süre sonra kaçınılmaz olan şey, çiftin “e-postaları kontrol etme” ya da “o hasta sorunu kontrol ediyorsun” şeklinde ayrılmasıdır.

Kod çıkışını iyileştirmek yerine, ses azalır. Hem pratik nedenlerden dolayı '' Öğle yemeğine çıkmam / sizinle eşzamanlı görüşmem gerekiyor '' ve sosyal 'Sadece bob'un yapmayı bitirmesini bekliyorum.

Değerli avantajlara gelince, bunları daha basit ve etkili yollarla elde eden birçok yaygın uygulama vardır.


2

İki üst düzey geliştiriciye bir işin yapılabileceğinden eminseler, bir "ağrı programlama" yapmalarını söylemek en büyük dezavantajı olmadığıdır.

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.