Pair Programing Nedir?

Meltem Öztürk
Akbank Teknoloji
Published in
4 min readJan 12, 2023

Bir kod üzerinde minimum iki geliştiricinin eşleşerek fikir alışverişi yaptığı ve periyodik olarak rol değiştirdiği çalışma yöntemidir. Geliştiricilerin tek bir sorunun çözümüne odaklanması kod üzerindeki hataları azaltarak bilgi paylaşımını ve kaliteyi artırmaktadır.

Extreme Programing adlı bir yazılım geliştirme metodolojisi tarafından popüler hale getirilmiştir.

Pair programla çalışma yönteminde iki rol vardır. Bunlardan Driver(Sürücü) ve Navigator(Gözlemci/Yönlendirici) olarak bahsedebiliriz. Driver, aktif olarak kod yazan geliştiricidir. Koda daha dar bakış açısıyla bakar. Navigator ise kod yazıldığı anda her satırı gözden geçirir, geniş bakış açısıyla bakar. İleride oluşabilecek problemleri öngörür.

Neden kullanılır? Avantajları nelerdir?

Bir geliştirici koda her zaman aynı bakış açısıyla bakarken ikinci bir geliştirici farklı bir yorum getirerek kod kalitesini arttırabilir.

Ortaya daha okunaklı, kaliteli ve süreç içerisinde review edilmiş kod çıkar.

Geliştiriciler birbirlerine yeni değer katar.

Bilgi paylaşımını ve takım içi iletişimi artırarak takım çalışmasına olumlu yönde etki eder. Kod sahipliğini paylaştırır.

Olası bir prod problemine karşı ekibin hızlı reaksiyon almasını sağlar. ‘Bir elin nesi var, iki elin sesi var’ atasözüne denk gelen bir tekniktir.

Mentorlük bilincini oluşturur. Ekibe yeni katılan junior bir üye için pozitif bir fırsattır. Deneyimli bir geliştirici ile girdiği bu iletişim sonucunda bilgi kapasitesini olumlu yönde artırarak oryantasyon sürecini azaltmış olur. Ekibe ve yapılan işe hızlı adapte olmasını sağlar.

Kaliteli iletişim kurulması geliştiricilerin motivasyonuna olumlu etki eder.

Çalışmada, pair programing yönteminin yazılımdaki hataları %15 oranında azalttığı ortaya konulmuştur.*

*(2006, A. Cockburn, L. Williams)

Dezavantajları nelerdir?

Çalışanlardan daha çok tecrübeli olanın efendilik ilan ettiği durumlarda diğer çalışanın motivasyonu zamanla azalır. Bu da geliştiriciler arasında uzaklaşmaya sebep olur.

Fikir ayrılığı yaşandığı durumlarda uzlaşma sağlanamaması ve çözüm üzerinde uzun süre tartışılması zaman kaybına neden olabilir.

Çalışanların iletişime adım atmaması sessizliğe ve verimsizliğe neden olur.

Farklı performans sağlandığı durumlarda emek eşitsizliği görülebilir.

Kaynakların yetersiz kullanılması da dezavantaj olarak görülebilir.

Geliştiricilerin Eşleşmesi

İkili çalışmada 3 farklı eşleşme olabilir:

Uzman — Uzman: İyi çıktılar alınır. Dezavantajı, olası bir probleme çözüm olarak deneyimlerden faydalanılarak çıkarım yapılır. Bu durum yeni fikirlerin üretilmesine engel, olumsuz bir durumdur.

Acemi — Uzman: En fazla verim alınan modeldir. Uzman geliştiricinin acemiye yön vermesi ve gelişimine destek olması açısından oldukça önemlidir. Acemi geliştiricinin yeni bilgilere açık olması ve sorgulayıcı özelliği ile yeni fikirler ortaya çıkacaktır.

Acemi — Acemi: 2 aceminin birlikte çalışması, farklı bakış açısı kazanma açısından faydalı olacaktır.

Pair Programing Deneyim Sürecimiz

Ekip arkadaşımla Uzman-Uzman eşleşerek pair programing metodolojisini uyguladık. Süreç boyunca yaşadığımız deneyimi paylaşmak isterim.

Navigator rolünü üstlendiğimde kendime ne kattım?

Bu kısımda araştırarak daha yavaş ilerleyebileceğim kısımları, önceden deneyimlediği için ve bana değer katma isteğinde bulunarak anlattığı için çok daha verimli ve hızlı bir şekilde aşarak sonuca ulaştım.

Driver rolünü üstlendiğimde karşı tarafa neler kattım?

İyi deneyimlediğim kısımlarda aldığım bu rolü yine karşı tarafa özveri ile anlatarak konu hakkında fikir sahibi olmasını sağladım. Bir sonra ki işinde benzer bir geliştirme geldiğinde, iş hakkında fikir sahibi olmasına ve vakit kazanmasına da katkı sağladım.

Günün sonunda birbirimizin eksik yönlerini uyum içinde tamamlamış bulunduk.

İkimizin de önceden deneyimlediği bir noktada ne yaptık?

Önceki deneyimlerimizden bahsedip en iyi yöntemi seçerek devam ettik. Fikir ayrılığı yaşadığımız durumlarda çözüm olarak üçüncü bir kişiden fikir aldık.

Görev bilincine ne gibi etkisi oldu?

Aslında burada tamamen birbirimizin stresini paylaştık diyebilirim. İşin yetişmeme durumunda bu sorumluluğu iki kişi üstleneceği ve karşı tarafında zor durumda kalma ihtimaline karşılık olumlu inisiyatif aldık. Birbirimizin de sorumluluğunu üstlendik.

Bireysellik dışında ekibe nasıl bir katkı sağladık?

Bir iş hakkında iki kişinin fikir sahibi olması ekibin performansı adına oldukça verimli etki ediyor. Her sprint yoğunluğumuz aynı olmuyor ve izin günlerimiz de olabiliyor. Bu süreçlerde gelen bir bulguya müsait olan kişi hızlıca geçiş yapabilir durumda oluyor. Bu şekilde aksaklık olmadan ekibin performansına olumlu etkiler sağlıyoruz.

Neyi yanlış yaptık?

Zoom üzerinde devamlı bir iletişim halinde olduğumuz için yorulduğumuz anları göz ardı ettik. Mola vermeyi unuttuk. Bireysel verimliliğimiz düştü ve birbirimizin motivasyonunu düşürdüğümüz noktalar oldu. İzleyici rolünde bulunduğumuzda performansı kesmemek adına molayı erteledik. Günün sonunda çok fazla yorulduk ve bundan dolayı verimsiz olduğumuz noktalar oldu. Planlı bir şekilde mola talep etmeliyiz.

Sosyal olarak bize ne kattı?

Daha önce birlikte çalışma fırsatımız olmamıştı ve ortak toplantılar dışında çok da fikir sahibi değildik birbirimiz hakkında. Birbirimizi daha yakından tanıma fırsatı bulduk. Keyifli vakit geçirdik.

Geliştiricilere Yönelik Tavsiyeler

Çalışmaya başlamadan önce rolleri, günlük çalışma süresini ve kaç oturum olacağını planlayın.

Günlük maksimum 2–3 saatlik bir pair çalışma planlayın. Sprint planlamanıza bu çalışmayı mutlaka dahil edin.

Düzenli aralar vermeyi ve aradan sonra rolleri değiştirmeyi unutmayın.

Her bir oturum için küçük hedefler belirleyin. Böylece daha net odaklanabilirsiniz.

Konuşun, uygularken ve ya izlerken birbirinizle iletişim halinde kalın.

Farkı kişiler ile eş olun.

Güven ortamı oluşturun. Eşiniz sizden daha deneyimli olabilir. Bu durumda soru sormaktan çekinmeyin ya da her şeyi bildiğini varsaymayın. Daha az deneyimli de olabilir yine bu durumda da hiçbir şey bilmediğini varsaymayın. Farklı bakış açıları değerlidir. Yapıcı olun.

Bir konu hakkında fikir ayrılığına düştüğünüzde üçüncü bir kişiden destek alabilirsiniz.

--

--