Pair Programming Üzerine Eleştiriler
Eş olma aslında mikro seviyede kodu gözden geçirmedir(Code Review).
Eşli Programlama’da amaç aslında bir akış oluşturmaktır. Akış derin düşünce durumudur. Birçok yazılım geliştirici akışı sadece yalnız ve sessizken yakalayabileceğini deneyimlemiştir. Bu nedenle biriyle iletişim halindeyken bu derin düşünce durumunun yakalanılamayacağı düşünülür. Aslında her iki eşte aynı konuya odaklanırsa bu mental durum yakalanabilir.
Eş olmadaki en zor durum Sürücü bir yazım hatası yaptığında dilini tutmaktır. Merak etmeyin büyük ihtimalle Sürücü’de yaptığı hatayı fark etti fakat oraya dönmesi birkaç saniyelik zaman alacaktır. Erkenden konuşmak akışı bozabilir.
Eş olmadanda aynı sonuçları elde edebilirim.
Eş olma yaratıcılık için bulunmaz bir ortam oluşturur. Yaratıcılık, zihinsel zeka gibi değildir. Yaratıcılık, iş birliği ve iletişim ile ortaya çıkar. Yaratıcılığın büyük çoğunluğu aslında sizin fikirlerinizin tekrar size anlatılmasıyla meydana gelir.
Kalemi kaldırmadan sadece dört çizgi kullanarak noktaları birleştirme gibi bir problemle karşılaşıldığında insanlar olası çözümleri düşünür. Deneyin! Eğer ilk düşündüğünüzde başarılı olamazsanız aynı düşüncenin farklı bir uyarlaması aklınıza gelecektir ve ilkini tekrarlayacaksınız. İnsanlar bu şekilde düşünür.
İşte problem tam da burada ortaya çıkar, ilk çözümde sonuca gidilemezse hatalı ilk yolun varyasyonları tekrarlanır. Sonraki aşamalarda alışılmışın dışında daha doğrusu yaratıcı şekilde düşünmelisiniz. Fakat beynimiz bu şekilde çalışmaz. Eve gittiğimizde, dışarı çıktığımızda, tatile gittiğimizde problemi oluşturan o ilk düşünce şeklini unuturuz. Düşünce şeklini unuttuğumuzda aklımıza yeni çözüm yolları gelmeye başlar ve çözüme doğru yeni bir yol açarız. Eşli Programlama’yla bu yeni yolu açmak için gerekli ortamı oluşturmaya çalışırız.
Yani biriyle iletişim halinde olduğunuzda elverişli koşulların oluşması daha kolaydır çünkü bu şekilde zihnimiz bir önceki yolu unutup, yeni yollar oluşturabilir. Bizim zihnimizde yeni yollar oluştukça eşimizinde zihninde çözüme doğru yeni yollar oluşmaktadır. Bu etkileşim sonsuz olasılığı doğurur.
Asıl soru, yazılım geliştirmeyi yaratıcı bir iş olarak görüyor musunuz?
Eş olma kulağa hoş gelmiyor. Biriyle beraber çalışmak beni delirtir.
Bi dene! Evet, en başta biriyle beraber çalışmak garip ve zor geliyor. Fakat daha sonra nasıl beraber çalışılacağını öğreneceksiniz. Daha kısa zamanda daha çok üreteceksiniz. Elinizdeki işe odaklanacaksınız, bitirmeden başından kalkmayacaksınız. Küçük dikkatsizliklere takılıp kalmayacaksınız. Beraber çalıştıkça birşeyler öğreneceksiniz, partnerinin bildiklerini sende öğreneceksin ve seninkileri oda öğrenecek.
İşinde iyi olmak iyi hissettirecek!
Ron Jeffries şunu söyler:
Eşli Programlama’dan korkma:
Düşündüğün kadar iyi değilsin fakat korktuğun kadarda kötü değilsin.
Biz o kadar iyiyiz ki Eşli Programlama yapmayız.
Herkes Eşli Programlama yapar. Sadece adı çok büyük bir hata üzerinde çalışıyoruz olur. Çoğu zaman bir yazılım geliştirici diğer bir yazılım geliştirici ile beraber çalışıp çok büyük bir hatayı çözüme kavuşturur. Daha sonra ayrılırlar çünkü yazılım geliştirme tek başına yapılması gereken bir iş olarak öğretilmiştir. eXtreme Programming sadece bu aktiviteyi birazcık geliştirmiş ve ona yeni bir isim vermiştir.
Eşli Programlama, bir eğitim programı.
Eşli Programlama beraber çalışarak bir kişinin üretebileceğinden daha iyi sonuçlar üretmek için yapılır. Bir yazılım geliştiricinin diğerine bir işin nasıl yapılacağını öğretmesi için değil. Çift olan kişiler genellik yeni birşeyler öğrenirler. Çünkü farklı tecrübelere sahiptirler. Bu bir eğitim programı olduğu anlamına gelmez.
Yazılım geliştirmeye yeni başlayan biri çok deneyimli ve iyi bir yazılım geliştirici ile eş olduğunda ne olacak diye düşünülür? Deneyimli yazılım geliştiriciyi kendi başına bıraksak daha iyi sonuçlar üretmez mi? Yazılım geliştirmeye başlayan biri işin bitirilmesine ne kadar katkıda bulunabilir?
Öncelikle herkes katkıda bulunabilir. Bazen aptalca olduğuna inanılan bir soru bile büyük bir problemin çözümü için yolu açabilir. Bu birazda kişinin kendisiyle ilgilidir.
Belirli bir problemin çözümü için deneyimli yazılımcıyı özgür bıraksak, evet, belkide o belirli problemi daha kısa sürede çözebilecek fakat o deneyimli yazılımcı gittiğinde yeni çıkan problemi kim çözecek? Kaynak kod hakkında herkesin bilgisinin olması sadece çalışanların değil şirketinde yararınadır. Bilgi paylaşılmalıdır.
Wiki’nin fikir babası ve kurucusu Ward Cunningham der ki;
Eşli Programlama’nın beni en çok eğlendiren yönlerinden biri benden çok daha genç biriyle Eşli Programlama yapmaktır. Partnerimin coşkusu ve heyecanıdır. Ben zamanla sakin, sabit ve tutarlı biri oldum. Beni, dünyanın altını üstüne getirebileceğine ve bunu yaparken uzaktan ama çok uzaktan seyredebileceğine inanan genç biriyle eşleştirin.
Başka biriyle çalışmamız gerekirse ne yapacağız?
Eğer benim ya da partnerimin üçüncü bir kişiyle çalışması gerekirse ne yapacağız? Sürekli olarak eş mi değiştireceğiz?
Bir gün içinde birkaç farklı partnerle çalışmak tercih edilen bir durumdur. Eğer üçüncü bir kişiyle çalışmak zorundaysanız bunu partnerinizle anlaşarak yapmalısınız. Partnerinize bir başka kişiyle çalışmanızın problem olup olmayacağını sorun. Bunu sadece nezaketen yapmayın. Bunu belirtmek partnerinize itiraz etme şansı verir. Belki de partnerinizle yapacağınız çalışma üçüncü kişiyle yapacağınız çalışmadan daha önemlidir. Bunu belirtmesi için şans verin. Eğer problem olmayacaksa partneriniz yapacak yeni bir iş çok kolay bulabilir. İş bulamazsa ara verip bir kahve içebilir. 🙂
Güç mücadelesi.
Partnerler arasında güç mücadelesi varsa partnerlerden biri boyun eğmeli midir?
Eğer partnerler arasında çok fazla sürtüşme varsa bu eşleşmenin işlevsel olmadığını gösterir. Belki bu iki kişi olabildiğince az eşleşmelidir. Eşli Programlama akıcı olmalıdır.
Kod geliştirilmeyecek işler olduğunda.
E-Posta okuma, haberler, araştırılması gereken konularda nasıl ilerlenmeli? Çalışanların kişisel bilgisayarı bulunuyor mu? Yoksa insanlar bu işleri evde mi yapmalı?
Kent Beck’in Extreme Programming Explained: Embrace Change kitabında Eşli Programlama yapılan hızlı bilgisayarlar ve daha yavaş bilgisayarların bulunduğu yarı özel ve özel odalar anlatılır. Bu bilgisayarlarda geliştirme yapılmamalıdır. Geliştirme sadece ofisin merkezinde bulunan hızlı bilgisayarlarda yapılabilir.
Eşli Programlama’nın bu kadar verimli olmasının nedeni belkide budur. E-Postaları okumamak, haberlerde kaybolmamaktır. 🙂
Partnerler arası hakimiyet.
Eğer partnerlerden biri klavyeyi eline alır ve diğeri sadece izler ve katkıda bulunmazsa ne olacak?
Eğer partnerlerden biri klavyeyi eline alır ve diğer partneri dinlemeden sadece bildiğini yaparsa diğer partner ayağa kalkıp uzaklaşmalıdır. Eğer sadece bir kişinin söyledikleri yapılıyorsa bu Eşli Programlama değildir. O yüzden ayağa kalkın ve uzaklaşın, yapacak yeni bir iş bulun.
Eğer dominant partner Sürücü koltuğunda değilde Gözlemci’yse ve sürekli olarak karakter karakter ne yazılması gerektiğini söylüyorsa durun ve dinleyin, konuşmasını bitirsin. Konuşması bitmiyorsa klavyeyi eline verin, ayağa kalkın ve uzaklaşın.
Bundan sonrası onun problemi.
Eğer partnerler arasında cevap belirlenemiyorsa.
İki farklı çözüme sahip iki yazılım geliştirici fakat hangisinin çözümü doğru karar verilemiyorsa ve benim çözümüm doğru şeklinde bir tartışma sürüp gidiyorsa ne olacak?
Eğer partnerlerden biri, diğerini, çözümünün doğru olduğuna birkaç dakika içinde ikna edemiyorsa daha fazla zamanı israf etmeyin ve bozuk para atışı yapın. Hızlıca çözüm yollarından birini deneyin ve problemin çözülüp çözülmediğini görün. Eğer problem devam ediyorsa diğer partnerin dediğini yapın. Yine mi çözülmedi! Problemin çözülemeyeceği iki yol buldunuz demektir. Anlamsız bir tartışmayla zaman kaybetmediniz ve yeni veriler elde ettiniz. Bu verileri kullanın. Eğer bu verilerle de çözüme ulaşamadıysanız belki üçüncü bir kişiye sormalısınız belki de ara vermelisiniz. Düşünce şeklinizi değiştirecek bir aktivite gerçekleştirin derim.
İsraf!
Yönetim bir işi iki kişinin yapmasını israf olarak görmeyecek mi?
Eşli Programlama ile elde edilen verimliliği anlatın.
Eşli Programlama yapmaya uygun olmayan kişiler ile nasıl başa çıkarsın?
Çevik yazılım geliştirme takımları kendi kendini yöneten takımlardır. Kimseye iş atanmaz, işler takım üyeleri tarafından çekilir. Eşli Programlama yapmaya uygun olmayan biri çıktığında doğal olarak takım üyeleri onunla beraber çalışmak istemeyecek belkide favori partnerlerini arayacaktır. Eğer bu kişinin yalnız çalışması takım için bir problem oluşturmuyorsa bırakın yalnız çalışsın. Sorun çıkaran kişi, biriyle Eşli Programlama yapmak istiyorsa zaten kendisinin çıkardığı sorunların çözümünü kendisi bulacaktır.
*Uzaktan Eşli Programlama: Remote Pair Programming
*Sanal Eşli Programlama: Virtual Pair Programming
*Dağıtık Eşli Programlama: Distributed Pair Programming
Bu yazı bir serinin devamıdır. Yazının tamamına erişmek için lütfen tıklayınız.
“Pair Programming Üzerine Eleştiriler” hakkında 1 yorum