Sürücü ve gözlemci farklı beceri seviyesine ve deneyime sahip olduğunda programlama eşleştirin


30

İkili programlamanın iki programcının bir iş istasyonunda birlikte çalıştığı çevik bir yazılım geliştirme tekniği olduğunu biliyorum. Biri, sürücü, kod yazarken, diğeri, gözlemci, her bir kod satırını yazıldığı gibi gözden geçirir.

Ama sadece stratejinin hala bu durumda işe yaradığını merak ediyorum. Örneğin

  • Çok farklı bir programlama becerisine sahiplerse.
  • Biri problem alanı içinde bir başkasıyken asla tecrübe olmazsa.
  • Programlama becerileri düşükse, hala sorun yok mu?

Yukarıdaki örnekte çift programlama stratejisini önerebilir misiniz?


13
İkisinin daha yüksek beceri seviyesine sahip olduğu ve diğerine koçluk yapması gerektiği konusunda hemfikir olun. Bu roller / beceri seviyeleri açık değilse, çift programlama muhtemelen çalışmayacak ve çatışmaya neden olacaktır.
Giorgio

Ancak, önerdiğiniz gibi yapılırsa, muazzam bir öğrenme fırsatı olabilir.
Mawg

Yanıtlar:


27

Çiftte daha deneyimli bir kişinin diğer kişiyi mentor etme mizacı olduğunu varsayarsak, dilde çok az deneyime sahip birini veya sorunlu alanı deneyimli bir kişiyle eşleştirmek, bilgi transferini kolaylaştıracaktır. Daha az deneyimli bir kişi, onlara dil, etki alanı, uygulama ve ekibin en iyi uygulamaları veya sözleşmeleri hakkında talimat verecek bir danışmana sahip olacaktır.

C2 wiki'de çift programlamayı kullanarak bilgi aktarımı hakkında ilginç bir özet var . Ekip danışmanı olarak görevlendirilen daha kıdemli kişi, genç programcılardan çok şey öğrendi ve daha genç, daha az deneyimli yazılım geliştiricilerle eşleştirilmesinin bir sonucu olarak bilgisi arttı. Uzman programcıların etki alanı uzmanlarıyla da eşleştirildiğine dair başka hikayeler de var.


Kabul. Takımda bir çocuğum var ve çift programlaması kodunun kalitesini önemli ölçüde artırdı. Ancak, kodunu çift incelemesi de çok yardımcı oldu.
Sulthan

2
Sadece kıdemli insanın% 100 sürücü olmadığına dikkat etmelisin.
HLGEM

13
@HLGEM Daha az deneyimli olan kişinin çoğu zaman sürücü olması gerektiğini savunurken, daha tecrübeli olan kişi kusurları ve stil kodunu gözden geçirirken ya da buna karşı test davaları yazarken.
Thomas Owens

1
@ThomasOwens ile aynı fikirdeyim; Daha az deneyimli bir ortaklığa sahip olmak, 'tecrübesini' diğer yöntemlerden daha hızlı artıracak, kendi fikirlerini ve görüşlerini daha kıdemli bir ortakla paylaşmalarına izin verecektir. Yeterlilik seviyeleri çok yaklaşmadan uzun sürmez.
Eric King,

1
Acaba bu yaşlı devin vaazlarını yerine getirme zorunluluğunu mu arttırıyor?
JeffO

16

Bu tam olarak kullanım çantası çifti programlaması için yapıldı: yaşlı sakal ve genç çekirge arasındaki deneyim paylaşımı.

Bu iki yönlü bir paylaşımdır: çevik böceklerin romatizmal beyinlere öğretecek çok şeyi vardır.


1
Muhtemelen beni düşünürseniz de, 'romatizma beynine' sarılmıştım ...
Marjan Venema

1
Burada “kullanıcı hikayesi” teriminin uygulanabileceğini sanmıyorum. Kullanıcı hikayeleri bir yazılım için iş gereksinimlerini açıklar.
Konrad Rudolph

Evet, sanırım "dava kullan" demek istiyor.
Jörg W Mittag

Aşağı oylama: belirtilen davalarla nasıl başa çıkılacağına dair bir strateji hakkında hiçbir kelime yok .
Try-catch-nihayet

10

Şu anki ekibime terfi ettiğimde J2EE'de acemi oldum ama etki alanındaki uzmanıydım. Üst düzeyim (yeni takım lideri) J2EE'de yetenekliydi ancak platformda değildi.

Sanırım bu 4 ayda Java2EE hakkında kitap okumaktan daha çok çift programlama ile öğrendim ve ekip lideri platform hakkında da bilgi edindi.

İkisi arasındaki deneyim boşluğu, programlama imho'yu eşleştirmenin anahtarıdır.


2
Kabul. Çift programlamayı kendimle hayal edebiliyorum ve bunun çok anlamsız olacağını düşünüyorum. Boşluk, olasılıklar vin diyagramında 4 gözün daha fazla kapsamı kapsamasıyla ilgili farklı perspektifleri yaratan şeydir. Aynı beceri ve deneyime sahip iki kişi, birbirleriyle aynı şeyleri görür ve fayda elde edemez.
Jimmy Hoffa,

5

Tecrübelerimi açıklayacağım ve bundan bir miktar "strateji" almaya çalışacağım.

Bir keresinde, eksiksiz bir programcı ile programlandım. Geliştirdiğimiz yazılım ürünü konusunda uzmandı. Aksine, sorun alanında hiçbir deneyimim yoktu. Ayrıca şu an da şefimdi (bunun garip gelebileceğini biliyorum :)

Bu metodolojinin en büyük yararı, birçok şeyin uygulanmasını kendi bilgi alanından açıklamak zorunda kalmam, böylelikle uygulamanın kesinliğini ve süreç hakkındaki anlayışını sağlamak zorunda kalmamdı;

Bir başka yarar da göreve odaklanmak, dikkat dağıtıcı değil (ha-ha, patronunun burnundan önce Twitter'ı açmayı hayal et).

Ancak, zaman zaman oldukça korkutucu oldu, çünkü, bir çay molası bile “işten rahatsız edici” hale geldi (onun bakış açısına göre değil; mola istemek sadece sakıncalıydı).

Bu yüzden, bu gerçekten bir çift programlama değildir, çünkü kodun yazıldığı gibi gözden geçirilememiştir. Ancak, aklı başında bir strateji gibi görünüyordu (en azından bir süre için). Sonunda, hem geliştirme metodolojisinin (yani, OOP Patterns gibi hiçbir karmaşık yazılım tasarım tekniği dahil değildi) hem de konunun göreceli sadeliği nedeniyle hiç işe yaramadı. Sanırım bir derleyici geliştirmek zorunda kalmamız durumunda bu işe yaramaz. Programcı olmayan gözlemcinin açıkça tanımlanmış küçük parçaların gelişim sürecine katılması durumunda çalışabileceğine inanıyorum. Diyelim ki "X parametresini Y ve Z'den verilen algoritma ile X parametresini hesapla" işlevinin programlanmasını izlemelidir, ancak genel sistem tasarım sürecini (yazılım mimarisinin gelişimi, yani hiyerarşinin anlamı anlamına gelir) izlemesi pek de iyi olmayabilir. sınıflar,

"Bir dizinin ne olduğunu" açıklamak zorunda kalmayacağım gibi bazı temel programlayıcı becerilerine sahip olması durumunda daha iyi çalışacağını düşünüyorum.

Umarım yardımcı olur :)


Bu iyi deneyimli bir açıklama!
Sakares

2

Tecrübelerime göre, her iki programcının da beceri seviyesi düşükse, bu bir problem olabilir. Bu durumda, genellikle kopyala-yapıştır programlamayı denemek için bir eğilim vardır. İki acemi programcıyı ekip tarafından belirlenen özel seviyeye gelinceye kadar birlikte eşleştirmemek iyi bir fikir olabilir.

Aksi takdirde çift programlama elbette iki adamın bildiklerini paylaşmaya hazır olduğunu varsaymak harika bir fikir olabilir. Herkesi kaynak kodundan haberdar etmenin harika bir yolu değil, yeni fikirler ve tartışmalar için iyi bir yer olarak da davranır.


Düşük beceri seviyeli cihazların kendi başlarına programlama yaparken kopyalayıp yapıştırma olasılığı daha düşüktür? Bu genellikle kimse izlemiyorsa olur.
JeffO

1

Ekip üyeleri birbirlerine saygı duydukları sürece, ikili programlama, programcıların deneyim seviyelerinden bağımsız olarak faydalı olabilir. Küçük bir programcı daha tecrübeli programcıdan önce birkaç sözdizimi hatası görse bile (ki hepimiz yaparız!), Bu hala derleme kodunda zaman kazandı.

Ayrıca, bir programcının ekibinin diğer üyelerinin yeteneklerine yönelik tutumunu, özellikle de açık fikirleri varsa ve herkesin size bir şeyler öğretmesini beklediğini varsayabileceğini 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.