Baştan Sona: Katathon

Gizem Ayas
Jan 28, 2019 · 3 min read

“Kendini kodlamada geliştirmek için aralıksız ayırabileceğin 2 saatin olsa hangi konuda çalışmak isterdin?” Katathon, işte tam böyle bir zaman aralığında yapılabilen, hem eğlenceli hem de bir o kadar öğretici bir etkinlik!

Kata, karatede belirli bir düzeni olan hareketler bütünüdür. Karate öğrencileri katalarla pratik yapıp, tekniklerini geliştirirler. Programcılar için kata; katathon veya kod katası olarak karşımıza çıkar. Katathon, programcıların kendilerini belirli bir konuda geliştirmek ve yazdıkları kodun kalitesini arttırmak için yaptıkları bir etkinliktir. Test driven development (TDD), refactoring gibi konularda katathon düzenlenebilir.

Biz de önce kendi takımımıza yukarıdaki soruyu sorduk ve test driven development’a ilgi olduğunu gördük. Konuyu belirledikten sonra katathon programı hazırlamaya başladık: ilk adım, üzerinde çalışacağımız problemi belirlemekti.

Problem

Rahatça test yazılabilecek ve tek bir yanıtı olmayan bir problem arama sürecimizi başlattık. Problemin pair programming ile çözülebilecek ve test yazmaya odaklanmamıza alan yaratacak düzeyde olmasına özen gösterdik. En sonunda anagramlar konusunda bir problemde karar kıldık.

Anagramlar tamamen aynı harflerden oluşan farklı kelimelere denir. Örneğin “orman” ve “roman” birinin anagramıdır. Kısaca değinmek gerekirse bizim problemimizde amaç: verilen bir sözlükteki tüm anagramları bulmak ve her satırda bir grup anagramı yazdırmaktı.

Kodlama dilinden bağımsız olarak önce problemin çözümünde kullanılacak veri yapısının belirlenmesi, pseudo kodların yazılmasını önerdik. Bu fonksiyonlara göre önce test yazılması, ardından testi geçecek kodun yazılması ile test driven development pratik etmeyi amaçladık. Amaç problemi kusursuz bir şekilde çözmek değil; test yazarak ilerlemek ve çözümü testler üzerinden oluşturarak sonuçlar almak. Artık sıra nasıl takım oluşturcağımızı belirlemekteydi.

Takım kurmak

Herkesin kodlamada tercih ettiği dil farklılık gösterecekti ve kısıtlı bir zamanda katılımcıların eşleşmesini amaçlıyorduk. Bu nedenle “tanışma” kısmında hızlandırıcı nitelikte bir yardıma ihtiyaç duyduk ve çözüm olarak etiket tasarladık.

Katılımcılara en üstteki kısma isim yazdıktan sonra aşağıdaki boşluklara tercih ettikleri kodlama dilleri belirtmelerini ve o dildeki rahatlıklarını 3 kutucuktan istedikleri kadarını doldurarak derecelendirmelerini istedik. Etiketlerimizin tanışma kısmındaki hızlandırıcılığını test etmenin sırası gelmişti.

Ve Katathon Başladı!

İlk 15 dakikayı hem tanışma hem de genel bir açılış konuşması için ayırdık. Etiketler işe yaradı ve benzer dil tercihleri olanlar kısmen daha hızlı bir araya gelip takım oluşturdu. C#, Javascript, Python ve Java grupları oluşup yerlerini aldılar. Katathon hakkında kısa bir girizgahtan sonra ilk oturum başladı.

Katılımcılar ilk oturumda 75 dakika boyunca takımlar önce problemi tanıyıp çözüm yollarını tartıştılar. Daha sonra tek bir bilgisayardan önce test yazıp ardından birbirlerinin yazdıkları testleri geçecek kodları geliştirdiler. Böylece amaçladığımız gibi TDD pratik etmiş oldular. Testlerin yazımında Javascript grupları Mocha, Chai, Python’cular unittest, PyTest; Java’cılar JUnit gibi framework’ler kullandı.

Her kodlama ile alakalı etkinliğinin vazgeçilmezi pizza ile kısa bir aranın ardından 60 dakika sürecek ikinci oturuma geçildi. Bu sefer her takım üyesi ilk 75 dakikada takımca geliştirdikleri kodu tek başına inceleyip hem refactor etti, hem de optimize etmeye çalıştı. Oturumun sonlarına doğru takımla bir araya gelerek herkes kendi geliştirmesini paylaştı.

İkinci oturumun da tamamlanmasının ardından tüm gruplar bir araya gelerek bir kapanış ve retrospective yapıldı.

Retrospective

Agile metodolojisindeki Sprint Retrospective’leri gibi biz de etkinlik sonunda tüm katılımcılarla bir retrospective gerçekleştirdik. Burada katılımcılardan sıcağı sıcağına geri bildirim almayı ve bununla beraber bir sonraki etkinliği şekillendirmeyi hedefledik.

Katılımcılardan bazıları daha önce unit test yazmamıştı. Bu etkinlikte hem unit test yazmayı hem de test driven development’ı daha yakından tanımış olduklarını söylediler. Testlerin kod yazarken ne kadar önemli olduğunu ve kodlarını refactor etmekte çok faydalı olduğunu belirttiler. Aynı probleme farklı dillerde, farklı çözüm yolları tartışıldı ve herkes birbirinden, yeni bir yol öğrenmiş oldu. Ayrıca bireysel çalışmadan çıkan optimizasyon yollarının da farklılığı yeni bir bakış açısı kazandırdı. Kısacası Katathon’u Deloitte Digital ekibi çok sevdi!

Etiket tasarımı için Can Atakol’a ve etkinlik organizatörü Emrah Kivanc’a teşekkür ederiz.

Deloitte Türkiye Dijital hizmetler ekibi olarak…

Gizem Ayas

Written by

Deloitte Turkey Digital

More From Medium

Also tagged Test Driven Development

Top on Medium

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade