Agile Pratikler - Pair Programming (Eşli Programlama)

Agil Pratikler serisinin ilk yazısında Hazır Kriteri konusunda bilgiler paylaşmaya çalışmıştım. Serinin bu yazısında Eşli Programlama (Pair Programming) konusunda bilgiler aktarmaya çalışacağım.
 
Eşli Programlama, iki programcının bir bilgisayarı paylaşarak yazılım geliştirme aktivitesini yerine getirmesidir. Burada yazılım geliştirmeyi yapan kişiye sürücü, aktif olarak aktiviteye katılan diğer kişiye yönlendirici ismi verilir. Bu iki kişinin bu rolleri sürekli değiştirerek aktiviteyi gerçekleştirmesi beklenir.
 
İki kişi birden bir aktivite üzerinde çalışıldığında, aynı iş için harcanan eforun iki katına çıkacağı düşünülür. Ancak bu yanlış bilinen bir olgudur. Yapılan deneyimsel araştırmalarda sadece %15'lik bir artış gözlenmiştir. Bu artışın, kod kalitesinin iyileşmesi nedeniyle ilerleyen dönemlerde sağlanacak olan kazançla karşılanabileceği düşünülmektedir.
 
Eşli Programlama, Sesli Programlama olarakta adlandırılmaktadır. Bu aktivite sırasında iki kişinin konuşmuyor olması, aktivitenin tam anlamıyla yapılmıyor olmasına işarettir. Burada yönlendirici, sürücüyü uyarmalı ve aktiviteyi ilerletmelidir.
 
Eşli Programlama aktivitesinin kişisel problemleri olan kişiler arasında yapılması zorlanmamalıdır. Bu tür durumlarda öncelikli olarak bu problemler ortadan kaldırılmalı, sonrasında bu aktivite gerçekleştirilmelidir.
 
 
Bu aktivitenin gerçekleştirilmesi için bulunulan fiziki şartların uygun olması gerekmektedir. Geniş odalarda yapılan aktivitelerin genellikle başarısız olduğunu belirtmemiz gerekir. Sesli bir aktivite olmasından dolayı, ortamdaki gürültü seviyesinin kontrol edilmesi gerekmektedir.

Eşli Programlama aktivitesinin sağladığı avantajları şu şekilde sıralayabiliriz:
  • Kod kalitesindeki artış, ve buna bağlı olarak hata oranında azalma sağlanması
  • Ekip içerisinde teknik bilgi birikiminin artması (mentörlük ve öğrenme)
  • Koordinasyon ihtiyacında azalma (Örnek: 10 kişilik bir ekipte, sadece 5 çiftin koordinasyonunun sağlanması gerekir)
  • Ekip arasındaki kişisel ilişkilerin gelişmesi ve buna bağlı olarak takım olgusunun oluşmasındaki olumlu etki.
Eşli programlama aktivitesi, tanım olarak iki programcı ile yapılmalıdır. Birlikte çalıştığımız bir takımda, bu tanıma uymayan, ancak başarılı sonuçlar elde ettiğimiz farklı bir eşli programlama aktivitesinden bahsetmek istiyorum. Gerçekleştirdiğimiz bu çalışmada, bir analist ile bir yazılımcıyı eşleştirdik. Burada roller hep sabit olarak tutuldu. Yazılımcı her zaman sürücü, analist ise her zaman yönlendirici rolündeydi. Analist, geliştirilen kodun yapısal kısımlarından daha çok fonksiyonel kısımlarına odaklandı. Bu çalışma sayesinde sağlamış olduğumuz kazanımlarımızı şu şekilde sıralayabilirim:
  • Yazılımcılar ve analistler birbirlerini daha iyi anlamaya başladılar. Yaptıkları işlerin zorluklarını görme fırsatı buldular. Bu sayede takım olgusunun gelişmesi sağlandı.
  • Özellikle analistlerin tahminleme aktivitesi sırasında kullanabilecekleri farklı bir bakış açısı kazanmları sağlandı.
  • Geliştirilen yazılım parçası üzerinde ilk defa çalışan bir yazılımcının, analist eşi sayesinde, daha önceden geliştirilmiş olan kodu anlaması kolaylaştı.
  • Yazılımcının, kullanıcı hikayesi ile ilgili sorusu olduğu durumda, beklemeden çözüme ulaşabilir olması sağlandı. Böylece kesintiler önlendi.
Benzer faydaları sağlayabileceğinizi ve yararlı bir aktivite olduğunu düşünüyorum. Denemenizi tavsiye ederim.
 
Keyifli bir Agile yolculuğu diliyorum.

1 yorum: