Pair Programming Nedir? Avantajlar, Zorluklar ve Daha Fazlası

Anasayfa Kurumsal Blog Pair Programming Nedir? Avantajlar, Zorluklar ve Daha Fazlası

Geliştiricileri daha verimli çalışmaları için ihtiyaç duydukları araçlar ve kaynaklarla donatmak, çevikliği doğrulukla harmanlamak gerekir. Bu hedeflere ulaşmak için pek çok yöntem vardır. Örneğin, uygulama performansı izleme konusu, sorunlara yalnızca kullanıcılarınıza ulaştıktan sonra yanıt vermek yerine izlemeye yönelik bir yaklaşım izlemenize yardımcı olur.

Verimliliği artırmanın başka bir yöntemi de pair programming yöntemidir. Bu yöntem, her iki geliştiricinin aynı bilgisayarı paylaştığı bir model olarak kabul edilmektedir.

Peki pair programming olarak bahsettiğimiz çift/eşli programlama neden bu kadar önemlidir?

 

????Pair programming nedir?
Pair programming; çift programlama, eşli programlama veya ikili programlama olarak adlandırılmaktadır.
Çift programlama, çevik yazılım geliştirme yaklaşımının yöntemidir. Bu yöntem, temel olarak iki kişinin tek bir kod bloğu üzerinde çalıştığı bir tekniktir. Bu sayede yazılımcılardan birinin yaptığı işlemleri diğer yazılımcılar izleyebilmekte fikir alışverişi yapabilmektedir.

Bu yöntemde, tek bilgisayarda tek bir yazılımcının anlık olarak çalışması mümkün olduğu için yazılımcılardan birisi “sürücü” (driver) rolünü üstlenir, diğeri gözlemci (observer), gösterici (pointer) veya yönlendirici (navigator) rolünü üstlenmektedir. Sürücü, kod yazmaktan sorumlu iken izleyici sürekli gözlemlemek ve yönlendirmekten sorumludur.

Gözlemci kodun yazılmasını izlerken stratejik yaklaşımlar da sergiler. Örneğin, gelecekte yaşanabilecek sorunları önceden engelleyebilmek adına aksiyon adımlarını düşünür.

????Pair Programming Avantajları
Bir geliştirici genellikle aynı mantıkla düşünür fakat ikinci bir geliştiricinin olaya farklı bir açıdan bakmasını sağlayarak gözden kaçırılan noktaların da görülmesini sağlayabiliriz.

CodeReview, 2 geliştirici aynı kod üzerine odaklandığı zaman ortaya muhtemelen daha temiz bir kod çıkar.

Ekonomik: Pair programlamada ile yazılım geliştiren yazılımcı, tek başına program geliştiren bir yazılımcıya göre %15 oranında daha fazla vakit kazanmakta olduğu analiz edilmiştir.

Tasarım Kalitesi: Pair programlamada tasarım kalitesinin daha iyi olduğu söylenebilir.

Müşteri Tatmini: Araştırmalar programcıların koduna güveniyor olmasının da programcıların mutluluğunu arttıran bir özellik olduğunu ortaya koymuştur.

Eğitim: Çift programlamada farklı geçmişten gelen yazılımcıların bilgilerini paylaşıyor olması bir eğitim durumu oluşturmaktadır. Aynı zamanda yazılımcıların bilgiyi paylaşmaya açık hale geliyor olması da en önemli avantajlardan biri.

Takım çalışması ve iletişim: Takım çalışmasını engelleyen problemler çift programlama ile çözülmektedir.

pair programming
????Pair Programming Örneği
Yazılması gereken 5 servis mevcut. İki servis, kullanıcıdan farklı değerler alarak veri tabanında arama yaparak cevabı döndürüyor. Diğer üç servis, kullanıcıdan GUID’ler alıp bu GUID’lerin bulunduğu kayıtları cevap olarak döndürüyor. Sürücü ilk servisi yazarken sadece servis odaklı düşünür. Bu aşamada gözlemci ise, diğer servisleri düşünerek bir strateji geliştirir. Burada önemli olan nokta gözlemcinin bir rehber olarak bulunması ve sürücünün ona güvenmesidir.

????Pair Programlama Dezavantajları ve Olası Problemler
Pair programming de diğer yöntemler gibi bazı problemler ortaya çıkarır.
Bu problemler;

Uzaklaşma (Disengagement): Çalışanlardan birinin, diğerinden uzaklaşmaya çalışması bir sorun oluşturacaktır.

Efendiyi İzleme: Çalışanlardan birisi çok daha tecrübeli olduğu için efendilik ilan ettiği durumlarda diğer çalışanın motivasyonu zaman içerisinde düşer, bu durum genelde uzaklaşma ile sonuçlanır.

Sessizlik: İkili arasında sessizlik oluyorsa, bu beraber çalışmadıklarının en bariz emarelerindendir.

Fikir Ayrılıkları: Genelde bir programın yazılmasının birden fazla yolu vardır ve programcılar bir fikir ayrılığı yaşarlarsa, bu durum “Efendiyi İzleme” durumu ile sonuçlanabilir. Çözüm olarak 3. bir kişiden istifade edilmesi veya takım lideri veya internette daha önceden anlaşılmış bir başvuru kaynağından faydalanmak doğru çözüm olarak görülmektedir.

Emek Çeşitliliği: Performans değerlendirmelerinde, bir iş bir ikiliye atandığında işin yükü ikiye bölünerek iki tarafın da performansı değerlendirilir. İki kişiden birinin daha fazla emek harcaması durumunda adaletsizlikler ortaya çıkmaktadı. Genel bir çözümü olmamakla birlikte, farklı ekip arkadaşları ile çalıştırarak çeşitliliği arttırmak bir yöntem olarak görülmektedir.

????Eşleşmeler
Bu ikili çalışmada 3 farklı eşleşme olabilir: Uzman – Uzman, Acemi – Uzman, Acemi – Acemi

Bu eşleşmeleri detaylı incelediğimizde;

Uzman – Uzman: Oldukça iyi sonuçlar alınır. Kötü yanı, ortada bir problem varsa çözümlere genelde deneyimler sonucu çıkarım yaparlar, bu durum yeni fikirlerin üretimi açısından olumsuz bir durumdur.

Acemi – Uzman: En fazla verim alınan modeldir. Uzman geliştiricinin acemiye yön vermesi ve gelişimine destek vermesi 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.

????Ne zaman eşleştirilir ve ne zaman eşleştirilmez?
İkili programlama her iki kişi için muhtemelen konsantrasyonu artırır fakat her zaman durum böyle olmayabilir. Birçok görev bir çift için uygun durumda olmama ihtimali vardır. Örneğin basit görevler. Basit bir görevin ne olduğu kişinin deneyim seviyesine bağlıdır. Zor bir görev için ise, ya kıdemli biri çözebilir ya da bir çift genç. Bu yüzden bir kıdemli – genç kombinasyonuna sahip olmak, gençlerin becerilerini ve bilgilerini güçlendirmek için oldukça iyi bir fırsattır.

????Pair Programlama Teknikleri
Güçlü ve Geleneksel Eşleştirme Teknikleri

Güçlü teknik eşleştirme, sürücünün ve gözden geçirenin yönlendirmediği yaklaşımdır. Bu yaklaşım gözlemciyi tamamen meşgul eder.

strong pairing
Sürücü-Navigatör Rolleri

Pair programlama, sürücü-navigatör tekniği ile popüler hale getirilmiştir. Her iki ekip üyesi de daha iyi sonuçlar için görevlerini değiştirerek sonuca ulaşabilir.

Bu ikili programlama tekniğinde, gezgin ilgisini anında kaybeder. Bunun sebebi, gözden geçiren kişinin onu rahatsız etmek istememesidir. Çoğu zaman, sürücünün ‘bir fikrim var’ dediğinde, gezgin bu durumu çok umursamıyor.

Bu tarz programlamayı verimli bir hale getirmek için, iletişim oldukça önemlidir.


Ping-Pong Eşleştirme

Geliştiriciler tarafından oldukça sık kullanılan eşleştirme modelidir. Bu yaklaşımda, sürücü bir davranış testi hazırlar ve gözden geçirenden davranışı uygulamasını ister. Bir kez uygulandığında, navigatör sırasını alır ve yeni sürücü, yeni navigatörün başvurması için bir sonraki testi not eder.

Ping-Pong eşleştirmesi, profesyonellerin hem kodlamayı hem de test öğelerini kontrol etmesine yardımcı olur. Ayrıca, bireylerin TDD’yi verimli bir şekilde yapmalarına yardımcı olur.


????Pair programlama nasıl ölçülür?
Pair programlama değerini ölçmek oldukça zordur. Bunun nedeni, ölçülmesi gereken çok şey vardır. Diğer bir neden ise ölçmenin çok zor olduğudur.

Geliştirme süresi: Geliştirme için ne kadar daha fazla/daha az zaman harcanır?

Düzeltme süresi: Hataları düzeltmek veya yeniden düzenlemek için ne kadar daha fazla/daha az zaman harcanır?

Keyif: Çalışanlar ne kadar fazla/az iş tatmini hissediyor?

Kullanıcı memnuniyeti: Ne kadar fazla/az mutlu müşterileriniz var?

Para: Bu verileri alırsanız, ekonomik değer hakkında da bir fikriniz olmalıdır.

WhatsApp