Yeni raporumuz yayında! Yazılımcıların gözünden Yapay Zeka (AI) Raporu 2024 Hemen göz atın→

Yeni raporumuz yayında! Yazılımcıların gözünden Yapay Zeka (AI) Raporu 2024 Hemen göz atın→

Pair Programming Nedir? Avantajlar, Zorluklar ve Daha Fazlası

Şubat 11, 2021
pair programming nedir

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. Böylece yazılımcılardan birinin yaptığı işlemleri diğer yazılımcılar izleyebilmekte ve 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ı

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ü 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.

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

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.

Bu soruların cevabı oldukça önemlidir. Kullanıcılarınızın yaşadığı tüm hataları gerçek zamanlı olarak almadan bir ürünü piyasaya sürerseniz, muhtemelen müşterilerinizi ve paranızı kaybedersiniz. Öncelikle tüm canlı hatalarınızı takip etmelisiniz.

Yazılım süreçlerinde pair programming’in önemini ve kullanımını öğrendiyseniz farklı ekiplerde deneyim kazanma sürecinde en faydalı şeylerden biri de yeni programlama dilleri öğrenmek olacaktır.

Sizin için hazırladığımız programlama dili odaklı blog yazılarımıza göz atarak hızlıca yeni projeler oluşturmaya başlayabilirsiniz.

Kriterlerine uygun pozisyonlarla eşleşmeye hazır misin? Hemen ücretsiz profilini oluştur.

Recent Posts

Go to Top