Eşli Programlama (Pair Programming)

Yazan : Şadi Evren ŞEKER

Pair programming, Türkçede farklı kaynaklarda, çift programlama, eşli programlama veya ikili programlama şeklinde geçmektedir. Çift programlama, çevik yazılım geliştirme yaklaşımının literatüre kazandırdığı bir yöntemdir. Bu yöntemde iki yazılımcı (yani bir yazılımcı çifti) aynı proje ve problem üzerinde tek bir bilgisayar monitörü ile çalışmakta ve yazılımı beraber geliştirmektedir. Bu sayede yazılımcılardan birisinin bütün işlemlerini diğeri izleyebilmekte ve yazılımcılar hem fikir alışverişi yapabilmekte hem de birbirlerini takip edebilmektedir.

Bu süreçte 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ü üstlenmekte ve yazılımı geliştirmekte, diğeri ise gözlemci (observer), gösterici (pointer) veya yönlendirici (navigator) isimleri ile anılan rolü üstlenmektedir [1]. Sürücü roldeki yazılımcı, işi yaparken diğer yazılımcı izlemekte ve yazılanları kontrol ederek geri bildirimde bulunmaktadır. Temel olarak sürücü rolündeki yazılımcı taktik problemler ile ilgilenmekte iken gözlemci pozisyonundaki yazılımcı stratejik problemlere odaklanabilmekte, problemin o andaki çözümünden daha iyi çözüm yollarını arayabilmekte veya yaşanan tıkanıklıkların daha geniş analizini yaparak problemi çözmekte yardımcı olabilmektedir. Yazılımcılar rollerini aralıklarla değiştirmektedirler.

Faydaları

  1. Ekonomik : Genel olarak çift programlamada tek başına program geliştiren bir yazılımcıya göre %15 oranında daha fazla vakit kaybedilmektedir. Buna karşılık sonuçta çıkan yazılımın da %15 oranında daha az problemli olduğu söylenebilir [2].
  2. Tasarım Kalitesi: Eşli programlamada genelde tasarım kalitesinin aşağıdaki üç sebepten dolayı daha iyi olduğu söylenebilir [3]:
    1. Programcılar farklı tecrübelere sahip oldukları için farklı tecrübelerin aynı proje içerisinde bulunması mümkün olacaktır.
    2. İhtiyaç duyulan bilgiye farklı yollardan ulaşmak iki yazılımcı için mümkün olacaktır.
    3. Aynı probleme iki farklı roldeki iki farklı yazılımcı çözüm arayacağı için problemi tek yazılımcının farklı açılardan ele almasına göre daha kaliteli bir tasarıma sahip olması beklenir.
  3. Müşteri Tatmini: Yapılan bir ankette, programcıların %95’inin eşli programlamadan daha fazla zevk aldığı görülmüştür [4]. Ayrıca 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. Çift programlamada bir programcının yazdıklarının en az bir diğer programcı tarafından kabul edilmiş olması bu mutluluğu etkileyen unsur olarak görülebilir.
  4. Eğitim: Çift programlamada farklı geçmişten gelen yazılımcıların bilgilerini paylaşıyor olması bir eğitim sağlamaktadır. Ancak daha önemlisi yazılımcıların bilgiyi paylaşmaya açık hale geliyor olması ve bu sayede bilginin (knowledge) yönetilmesinin daha kolay hale gelmesidir [5].
  5. Takım çalışması ve iletişim: Takım çalışmasını engelleyen çoğu problemi çift programlama çözmektedir. Örneğin bir takımdaki kişilerin birbirinden farklı çalışma takvimlerine sahip olması, çift programlama uygulanan bir ortamda mümkün değildir [2].

Olası Problemler

İkili programlamanın da diğer yöntemler gibi bazı problemleri ortaya çıkardığı kesindir. Bu problemlerin bazı emareleri aşağıda listelenmiştir:

Emek Çeşitliliği: Genelde performans değerlendirmelerinde, bir iş bir ikiliye atandığında, genelde işin yükü ikiye bölünerek iki tarafın da performansı değerlendirilir. Ancak çalışma sırasında iki kişiden birisinin daha fazla emek harcaması durumunda adaletsizlikler ortaya çıkmaktadır ki genelde tam eşit emek ortaya konulması neredeyse imkansızdır. Bu durum, bazı çalışanlarda haksızlık hissi doğurmakta ve yönteme karşı tepki gösterilmesi ile sonuçlanmaktadır. 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.

Referanslar

[1] Williams, Laurie (2001). "Integrating Pair Programming into a Software Development Process" (PDF). 14th Conference on Software Engineering Education and Training: abstract."One of the programmers, the driver, has control of the keyboard/mouse and actively implements the program. The other programmer, the observer, continuously observes the work of the driver to identify tactical (syntactic, spelling, etc.) defects, and also thinks strategically about the direction of the work."

[2] Cockburn, Alistair; Williams, Laurie (2000). "The Costs and Benefits of Pair Programming" (PDF). Proceedings of the First International Conference on Extreme Programming and Flexible Processes in Software Engineering (XP2000).

[3] Flor, N.V. and E.L. Hutchins. Analyzing Distributed Cognition in Software Teams: A Case Study of Team Programming During Perfective Software Maintenance. Proceedings of the Fourth Annual Workshop on Empirical Studies of Programmers. 1991: Ablex Publishsing Corporation.

[4] Laurie Williams, Robert R. Kessler, Ward Cunningham, Ron Jeffries. “Strengthening the Case for Pair Programming.” IEEE Software. IEEE Software, July–Aug. 2000. Web. 4 October 2013

[5] Richard L. Upchurch, Laurie Williams. “In Support of Student Pair Programming.” ACM SIGCSE. ACM Publications, March 2001. Web. 4 October 2013

Leave a Reply

You must be logged in to post a comment.