Data Vinci 24 : Pair Programming

Tahmini Okuma Süresi: 7 dakika

Bu yazıda pair programming  hakkında bir takım bilgiler vermeye çalışacağım. Pair programming, fularlı bir konudur. Neden fularlı olduğuna değineceğim. Ancak öncelikle temel tanımlar ile başlayalım. Pair çift, programming ise programlama olduğuna göre çift programlama gibi bir çeviri karşımıza çıkıyor. Nedir olay karı-koca kod mu yazıyorlar? Hayır güzel kardeşim. Çift kısmını(pair) “iki kişi” şeklinde algılamamız gerekiyor. Eş olarak da lanse edilmektedir. Detaylara geçmeden önce kredi kartımın asgari ödeme tutarını yatırayım ki, fakir bedenimde yankılanacak olan kavramlar yaşam fonksiyonlarımı etkilemesin.

Detaylara geçmeden önce kredi kartımın asgari ödeme tutarını yatırayım ki, fakir bedenimde yankılanacak olan kavramlar, yaşam fonksiyonlarımı etkilemesin.

Evet. Pair programming, havalı bir kavramdır. Çünkü agile içerisinde anılır. Agile içerisinde anılan her şey havalıdır:) Hava bedeve ama pratiğe dökülebilmesi için fedakarlık ve süreklilik gerekir. Pair programming adı üstünde iki kişi ile yapılan bir aktivite, bu iki kişinin uyumu etkileyecek fiziksel ve duygusal zorluklar vardır.  Öncelikle fiziksel zorluğa değinelim. Yazılımcı insanlar genelde ,sosyetede “lonely wolf” diye geçen varoşlarda ise “tek tabanca” olarak bilinen yalnız çalışma eğilimine sahiptir. Kişisel alana insan almaya pek meyilli değiliz. Bu, bir takım arkadaşı ile çalışmayı zorlaştıran bir konu, bunun yanında iki kişinin yanyana çalışabilmesi için, düz ve uzun bir masa gerekir, kübik denen masa biçimleri pair programlama için uygun değildir, zira kulağınıza kulağınıza üfleyen bir gözlemci ile çalışmak hoş değil. Gözlemci(navigator) kod yazımı esnasında, sürücünün(driver) yaptıklarını izleyerek, fikirlerini paylaşır, böylelikle bir elin nesi var iki elin sesi var atasözü haklı çıkarılmaya çalışılır.

Fiziksel sıkıntıların yanında duygusal olarak sıkıntılarda mevcuttur. Bunlar ise uğraşması daha zor, belki de pair programming olayının üçüncü sayfa haberi olmasıyla (şaka) sonuçlanacak etkileri vardır. Üstte bahsettiğim gibi herkes yanında biriyle çalışmaya sıcak bakmayabilir, öyle ya arada sahibinden.com’dan ilan bakacak, kiralar artmış mı? Kurtköy’de evler prim yapmış mı? Çekmeköy’den ev alsam kaç para kira getirir vs vs.. gibi görevler icra edilmelidir düzenli olarak, gazeteyi yenileyecek, euro, dolar ne alemde gardaş? , kargosu nerelerde ona bakacak, trendyol moda sitelerini günde en az bir kere tarayacak… Kişisel alanı daralttığı için uzun süreler yanınızda biriyle çalışmak her zaman çok zevkli olmayabilir. Bunun yanısıra sürücü ve gözlemcinin farklı tecrübelere sahip olduğu düşünülürse, daha fazla tecrübeli olan kişi, sürücü pozisyonunu “master” pozisyonuna sabitleyip, gözlemcinin telefonla uğraşmaya başlamasına sebep olabilir, yahut ikili arasında oral bir ilişki (sakin olun fakirler, sözlü diyalogdan bahsediyorum:)  ) sağlıklı olarak kurulamıyorsa uzun süren sessizlikler motivasyonu düşürür. Sürücü veya gözlemcinin gıcık biri olması, işin içinden çıkılmaz bir durum oluşturabilir. Bu yüzden pair programming için uzlaşmayı seven, hata yaptığını kabul edebilen, sıracılığı benimseyebilen (klavye benim bilgisayar benim tribine girmeyen) kişiler ile yapılmalı. Pair programming’i bu kadar gömdün madem niye anlatıyorsun be adam! diyenler olabilir. Gelelim bu paradigma’nın “olası” faydalarına. PSM1, MBA, MS, TB, CGIT, ZBOM, BAZINGA sertifikalarına sahip arkadaşlara kritik not!

Bir kişi bir çocuğu 9 ayda doğurursa, 9 kişi bir çoçuğu 1 ayda doğuramaz. Bu son derece kritik ve önemli notu düştükten sonra çift programlama nelere kâdir bakalım.

Pair Programming Faydaları:

  • Kod kalitesini arttırır. İçerisindeki dikkat fazlalığı göz önüne alınırsa, mantıksal ve format olarak daha kaliteli kodlar ortaya çıkması mümkündür.
  • Bilgi paylaşımını arttırdığından ötürü, SPOF(single point of failure) -varoşlarda “dıkanmak” olarak da bilinir-, sıkıntılarını giderir. Zaman zaman kodu yazan kişinin ne yazdığını unuttuğu durumlar bile olabiliyor. Bir çift göz ve fikirin faydası olacaktır.
  • Deneyimli ve deneyimsiz eşleşmesinde yeni başlayan yazılımcılar hızlı yol alması sağlanabilir.
  • Deneyimli deneyimli eşleşmelerinde zorlu problemler daha rahat çözülür.
  • İletişim arttığından ötürü, motivasyon yükselebilir. İyi anlaşan iki yazılımcı daha güzel işler ortaya koyabilir.
  • Sürücü, gözlemci sırası gözetildiğinde kod yazmaktan yorulan kişi gözlemci pozisyonunda yazarken düşünemediği şeyleri düşünme fırsatı edinebilir.

Ayaküstü yapılan “senin baaaaaaaj kaç litre alıyor” muhabbetlerinden arta kalan zamanlarda bu tarz daha fularlı konuları irdelemek, çalışma ortam ve rutinlerine eklenebilip, eklenemeyeceğini denemek gerekir. Yukarıda da belirttiğim gibi “Pair programming” her zaman faydalı olacak diye bir kural yok, bazı takımlarda verimliliği çok arttırır iken, bazen ise tam tersi zararlı bir aktiviteye de dönüşebilir.

Kaynaklar:

https://www.thoughtworks.com/insights/blog/effective-navigation-in-pair-programming

Pair Programming – So how good is it, really?

 

TL;DR

Bu yazıda agile pratiklerinden “Pair Programming”  paradigması ile ilgili kişisel fikirlerimi naçizane anlattım. Agile pratikleri maksat yapmış olmak için yapıldığı sürece, uygulanan metodoloji veya çerçeve hangisi olursa olsun: “Epic Fail”, Yallah Waterfall’a.  Bir iş disiplini geliştirilirken, mevcut sisteme uyan, fiziki ve mental ihtiyaçları karşılanmış kişiler şarttır. Bu analizler iyi yapıldığı takdirde kimse ne Agile’ı gömer, ne Scrum’ı, bu arada madalyonun diğer tarafındaki egosu 1500 jelibon yazılımcı güruh ise gömmeye başlamadan önce, kendi müstesna kimyalarına uygun mu değil mi? sorusuna cevap verebilmek için bir kaç kez olsun, bu tarz etkinliklere katılmalı, çıkarımlarını öyle yapmalıdır.

Faydalı olması dileklerimle…

Leave a Reply

Your email address will not be published. Required fields are marked *