Bugünkü günüm bir tweet göndererek başladı. Saat sekiz gibi Frankfurt’ta yapılan Code Retreat etkinliğine katıldım. Code Retreat 15-20 arası programcının bir araya geldiğı ve birlikte gün boyunca kod geliştirdikleri bir etkinlik.
Etkinliğin formatı kısaca şöyle: Etkinlik 45 dakikalık, iki programcının bir araya gelerek eşli programlama (pair programming) yaptıkları altı oturumdan ve her oturum sonunda beş ya da on dakika retrospective ismi verilen, oturum esnasında olup bitenlerin analiz edildiği bölümden oluşuyor. Bir oturum esnasında iki programcı test güdümlü yazılım metodunu kullanarak Game Of Life ismi verilen programı geliştiriyorlar. İlk oturumdan sonra aslında oturum için öngörülen 45 dakikanın böyle bir program yazmak için yeterli olmadığını, ama asıl amacın zaten programı sonlandırmak değil, her oturumda yeni fikirler geliştirerek, başka bir bakış açısından kod yazmaya çalışmak olduğu anlaşılıyor.
İlk oturumda daha önce böyle bir etkinliğe katılmış ve Game Of Life programını tanıyan bir programcı ile eşleştim. Game Of Life hakkında ön bilgim olmadığı için başlangıçta zorlandım. Bunun yanısıra eşimin kodlama esnasında oluşabilecek hataları daha önceden bilerek, beni belli bir yöne doğru itmeye çalışması, oturumu benim için daha zor bir hale getirdi. Ben kafamda Game of Life dünyasını nesnelerle modellemeye çalışırken, birden kendimi eşimin etkisiyle prosedürel bir dünyada buldum. İçgüdüsel olarak bir şeylerin doğru gitmediğini sessiz ve sesli düşünmeye başladım. Oluşan prosedürel bir yapıda benim fikirlerimi nesnelere dökmem imkansız hale geldi. Bu durum beni bloke etti. Ben böyle bocalarken ilk 45 dakika doldu ve ilk retrospective seansına geçtik. Retrospective seansında bunu dile getirdim.
İkinci seansta başka bir programcı ile bir araya gelerek, seansın başlangıcından itibaren Game Of Life oyununu Java sınıfları kullanarak tasarladık. Yazdığımız testler yavaş yavaş sınıflar için gerekli davranış biçimlerini (metot) şekillendirmeye başladı. O test senin, bu kod benim derken ikinci seansında sonuna geldik. Kısa bir retrospektive seansı ardından üçüncü ve diğer seansları tamamladık. Her seansın sonunda yazdığım kodun daha okunur, daha iyi tasarlanmış hale geldiğine sahit oldum.
Her seans sonunda kodları silerek yeniden başlamamız istendi. Bu şekilde yazılan koda ne kadar sahip çıktığımı ve kod silmenin benim için ne kadar zor olduğunu gördüm. Yeni bir perspektif kazanmak için kodun silinmesi gerektiğini anladım. Mevcut bir kodu yeniden yapılandırmak mümkün, lakin çok daha değişik bir bakış açısı ile kod yazmak için kodun silinmesi gerekiyor.
Toplamda bu etkinlik benim için çok verimli geçti. Diğer programcılardan yeni teknikler öğrenme fırsatı buldum. Özellikle eşleştiğim bazı programcıların kullandıkları implementasyon şablonları benim için öğrentici nitelikteydi. Hemen aklıma Kent Beck’in yazdığı Implementation Patterns isimli kitap geldi. Bu kitaba daha önce göz atmış olmama rağmen, şimdi daha başka bir motivasyonla bu kitabı okuyacağım.
Biz programcıların pratik yapması gerekliliğine daha önceki bir yazımda değinmiştim. Bunun ne kadar gerekligi oldugunu bugün daha iyi anlama fırsatı yakaladım. Müzisyenler gibi pratik ve performans arasında ayrım yapmamız ve bu ikisini karıştırmamız gerekli. Ne kadar çok bilinçli pratik yapma fırsati yakalarsak, o oranda programcı olarak daha ileriye gidebileceğimizi düşünüyorum.
Pazartesi Brutal Refactoring Game için Nürnberg’te olacağım. Şimdiden bu etkinliği iple çekiyorum.
EOF (End Of Fun)
Özcan Acar
Yazılım Hakkında Genel Düşünceler kategorisinden son yazılar
- Sekiz Milyar Değişik İşletim Sistemi - July 23rd, 2022
- Gitflow ve Verdiği Zararlar - October 8th, 2021
- Çevik Süreçler Neden Dikiş Tutturamadı - February 14th, 2020
- Bilginin Evrimi - October 29th, 2019
- Yazılım Dünyasının Hızlı Çözüm Üretmek İle Olan İmtihanı - October 4th, 2019
- Yazılım Camiasından Son Gelişmeler ve Gidişat - April 30th, 2019
- Alan Borcu (Domain Debt) - January 29th, 2019
- Neden Debug Yapmak Yazılımın En Kötü Alışkanlıklarından Birisidir - March 20th, 2018
- Yeni Teknolojileri Öğrenme Konusunda Nasıl Bir Yol Haritası Oluşturmalıyım? - August 4th, 2017
- Neden Programcılık Harici İşlerle Uğraşmak Daha İyi Bir Programcı Olmayı Sağlar - June 4th, 2017