Her yazılım projesinde, ekibin görmezden geldiği o karanlık köşe vardır.
Genelde projenin en eski dosyasıdır bu. Dosya adı CommonUtils.java olabilir ya da GlobalHelpers.js. İçinde binlerce satır kod, iç içe geçmiş if-else blokları ve ne işe yaradığı belli olmayan değişkenler vardır. O kodu yazan arkadaş çoktan şirketten ayrılmıştır ya da daha kötüsü, o kodu altı ay önce biz yazmışızdır ama o anki ruh halimizi hatırlamıyoruzdur.
Ekip içinde yazılı olmayan bir kural işler: "O dosyaya sakın dokunma. Çalışıyor mu? Çalışıyor. Elleme, bozulur."
İşte yazılım dünyasının en büyük yalanı budur.
"Çalışıyorsa dokunma" mantığı, bir yazılımcının kendine söylediği en tehlikeli tesellidir. Çünkü yazılım, binalar gibi statik değildir; yaşayan bir organizmadır. Siz o koda dokunmadığınızda o kod olduğu yerde durmaz, aslında çürür. Kütüphaneler güncellenir, iş ihtiyaçları değişir, yeni güvenlik açıkları çıkar. O "dokunulmaz" modül, projenin ortasında pimi çekilmiş bir el bombasına dönüşür.
Bir Full Stack geliştirici olarak şunu çok net gördüm: Dokunmaya korktuğumuz o kod parçası, aslında projenin hız limitidir. Müşteri basit bir özellik ister, normalde iki saatlik iştir. Ama o özelliği eklemek için o "kutsal ve korkutucu" dosyada bir değişiklik yapmak gerekiyordur. Korkudan yapamayız. Etrafından dolanırız (workaround), üzerine yama yaparız, spagettinin üzerine sos dökeriz. Sonuç? İki saatlik iş olur iki gün. Sistem daha da karmaşıklaşır, teknik borç gırtlağa dayanır.
Refactoring (kodu iyileştirme), can sıkıntısından yapılan bir temizlik ya da estetik bir kaygı değildir. Refactoring, "Ben bu koda hükmediyorum" demenin tek yoludur.
Eğer yazdığınız ya da devraldığınız bir koda dokunurken elleriniz titriyorsa, bomba imha uzmanı gibi hissediyorsanız, orada bir sorun var demektir. O korkuyu yenmenin tek yolu, üzerine gitmektir. Önce testlerini yazarsın, güvenlik ağını kurarsın, sonra o karmaşık yapıyı parçalamaya başlarsın.
Evet, belki ilk denemede bir şeyleri kıracaksınız. Uygulama patlayacak. Ama inanın bana, kontrolsüz bir çürümedense, kontrollü bir yıkım çok daha iyidir. Çünkü "Çalışıyorsa dokunma" diyerek günü kurtarabilirsiniz ama geleceği kesinlikle kaybedersiniz.
O yüzden yarın sabah ilk iş, o projede herkesin korktuğu o klasörü açın ve kendinize şunu sorun: "Patron kim? Ben miyim, yoksa 3 yıl önce yazılmış bu kod bloğu mu?"