Innova Internal Coderetreat
Kasım 2017’den beri çalıstığım bölümdeki junior developer’lar için bilgi/deneyim paylaşım aktiviteleri düzenliyorum. Bu paylaşım aktivitelerinde bazı şeyler çok teorik seviyede kalabiliyor, bunu hem ben hissediyorum hem de bazen katılımcılardan geri bildirim olarak geliyor, özellikle projelerinde çok fazla bir şeyler deneyimleme imkanı olmayan arkadaşlarda problem biraz daha büyüyor. Bunu aşabilmek için bazı session’ları tamamen pratiğe yönelik yaptım, bazı sessionlarda da anlattığım çoğu şeyi pratik olarak temel seviyede göstermeye çalıştım ancak bu yetmedi.
Bu pratik yapma imkanını bir nebze olsun aşmak için bir coderetreat aktivitesi düzenlemeye karar verdik. Coderetreat tam gün süren, developer’lar için düzenlenen, mükemmel kod yazmaya odaklanmış bir aktivite.
Günümüz nasıl geçti bu yazıda bundan bahsetmek istiyorum.
12 istekli arkadaş ve ben de facilitiator olarak 13 kişiydik. Herkesin ilk coderetreat deneyimi olacaktı.
Bir şey bitirmemiz gerekmiyor!
30 dakikalık bir giriş sunumu ile başladık. Günlük iş hayatında kod yazarken başta zaman olmak üzere bir çok stres, baskı oluşturan etmen ile yüzleşiyoruz, bir şeyleri daha iyi yapabilmek için gerekli bilgi ve beceriye sahip olsak bile çoğu zaman bunu ortaya koyacak fırsatı bulamayabiliyoruz. Farklı şeyleri deneyimleyemiyoruz çünkü işlerin yetişmesi gerekiyor, yaptığımız işin seviyesi çoğu zaman “make it work” seviyesinde kalıyor, “make it right”, “make it fast” gibi aşamalara hiç bir zaman geçemeyebiliyoruz, hiç bir zaman test kodu yazamayabiliyoruz vs. Bu daha iyi kod yazabilmek için kendi kapasitemizin hangi seviyede olduğunu da görmemizi engelliyor çünkü çoğu zaman bu kapasitenin altında çalışmak zorunda kalıyoruz, typing kısmı thinking kısmını bastırıyor.
Coderetreat günlük hayatta üzerimize çullanmış tüm bu baskıları alıp atıyor ve bize yapabildiğinin en iyisini yap diyor, bir problem üzerinde çalışacağız ama bugün hiç bir şeyi bitirmek zorunda değilsin, bugün sadece üretebildiğin en iyi kodu üretmeye odaklan, bu en iyi kod 1 satır kod olsa da sorun değil, yazdığın kod en iyi kod olmasa da sorun değil çünkü bir kaç dakika sonra tüm o kodlar silinecek ve her şeye yeniden başlayacaksın. Bugün farklı farklı insanlar ile çalışacaksın, onlardan da bir şeyler öğreneceksin, onların nasıl mükemmel kod yazmaya calıştıklarını gözlemleyeceksin ve onlar da senden öğrenecek. Ve tüm bunları yaparken eğlenmeyi de unutmayacağız.
Format
Genel olarak kullanılan coderetreat formatı ve bizim de kullandığımız format şu şekilde. Kodlamak için problem’i [Conway’s Game of Life] (https://en.wikipedia.org/wiki/Conway's_Game_of_Life) olarak seçtik. Kod yazarken bizi en iyi kod’a doğru götüren veya yazdığımız kod gerçekten iyi mi sorgulamasını yaparken kullandığımız kriter; originator’ı Kent Beck olan, basit tasarımın 4 kuralı;
- Tüm testler geçmeli,
- İsimlendirmeler amacına uygun, anlaşılır olmalı,
- Duplication olmamalı (DRY),
- Mümkün olan en az kod yazılmalı (KISS)
3 tanesi öğleden önce, 3 tanesi öğleden sonra olmak üzere, 45 dakika kodlama, 10 dakika retrospective, 5 dakika ara şeklinde planladığımız 6 farklı seans yaptık. 1.5 saat’lik öğle yemeği arası verdik. Tüm kodlamalarımızı test-driven-development(TDD) ve pair-programming ile yaptık ve her seans’da aşağıda bahsedeceğim kısıtları kullandık. Her seans sonunda yazdığımız tüm kod’ları sildik ve pair’leri değiştirdik.
- S#1: Ping-Pong Pair Programming
- S#2: Immutable Only veya No Primitives
- S#3: No Mouse
- S#4: Tell Don’t Ask
- S#5: No Conditionals ve/veya No Loops
- S#6: Mute Ping-Pong veya Mute With Find The Loophole
Kapanış
Son session’dan sonra yaklaşık 1.5 saat süren, bugünü ve genel bazı problemlerimizi konuştuğumuz bir retrospective yaptık.
Katılan herkes için bu ilk coderetreat aktivitesiydi, süreç içerisinde zorlandığımız bazı noktalar oldu; başlarda probleme adapte olmakta biraz zorlandık, belki ilk session’ı no constraint şeklinde yapmak daha anlamlı olabilirdi. Bazen problemi küçük parçalara bölüp hızlıca test ve kod’a geçmekte zorlandık, büyük bir parçayı tasarlayıp çözmeye çalışınca da odak noktası en iyi kod’dan problemi çözmeye doğru kaydı.
Retrospective’de herkes bugün ne öğrendin, seni şaşırtan bir şey oldu mu, pazartesiden itibaren farklı yapmaya başlayacağın bir şey var mı sorularına cevap vermeye çalıştı.
Retrospective’de herkes çok güzel şekilde günün kendisine olan etkisini anlattı, benim en sevdiğim bölümlerden birisi de burası oldu, günün sonucunu, insanlarda oluşan bazı farkındalıkları gördüğüm için belki de.
Burada öne çıkan yorumlar şöyle oldu; test yazmak güzel bir şeymiş test yazmak istiyorum, etkin bir şekilde farklı bakış açıları geliştiremediğimi gördüm buna çalışacağım, kullandığım IDE’yi daha etkin kullanmaya çalışacağım, pair yaptığımızda farklı farklı bakış açılarını görme şansımın olduğunu gördüm.
Bu tarz aktiviteleri daha sık yapmamız gerektiği konusunda da herkes hem fikirdi.
Katılan tüm arkadaşlarıma; Ahmed, Aras, Ekrem, Giray, Görkem, Beytullah, Merve, Mustafa, Tuğce, Deniz, İbrahim, Simay, teşekkürler.