Bir yazılımcının ekranındaki dağınık kod ile bir insanın dolabındaki kullanılmayan eşyalar arasında gizli bir akrabalık vardır. İkisi de bir zamanlar gerekli görünmüştür. İkisi de “belki lazım olur” bahanesiyle orada kalmıştır. Ve ikisi de sonunda sistemi yavaşlatır: biri programı, diğeri zihni. Minimalizm ile temiz kodun ortak derdi aslında aynıdır: çalışmayanı değil, çalışsa bile gereksiz olanı fark etmek.
Temiz kod yalnızca bilgisayarın anlayacağı komutlar yazmak değildir; gelecekteki insanın, yani çoğu zaman bizzat kendimizin, ne anlatılmak istendiğini anlamasını sağlamaktır. Minimalizm de yalnızca az eşyaya sahip olmak değildir; yaşamın okunabilirliğini artırmaktır. Karmaşık bir fonksiyonun içinde kaybolmakla, ağzına kadar dolu bir odada nefes alamamak aynı deneyimin iki farklı arayüzüdür.
Fazlalık Bir Hata Değil, Bir Semptomdur
Kötü yazılmış kod genellikle kötü niyetten doğmaz. Aceleden, korkudan, belirsizlikten ve “şimdilik böyle kalsın” cümlesinden doğar. Hayattaki fazlalıklar da böyledir. Kullanmadığımız nesneler, yarım kalmış planlar, gereksiz ilişkiler, otomatik tepkiler ve zihinsel gürültüler çoğu zaman birer eşya değil, ertelenmiş kararların tortusudur.
Bir kod tabanında kullanılmayan değişkenler, tekrar eden bloklar ve belirsiz isimler varsa, sistem teknik borç üretir. Yaşamda da benzer bir borç vardır: psikolojik borç. Her gereksiz şey dikkatinizden küçük bir vergi alır. Her ertelenmiş mesele arka planda çalışan bir süreç gibi bellek tüketir. Bilgisayar buna RAM der; insan buna yorgunluk.
Refactor: Yıkmadan Yeniden Düzenlemek
Temiz kodun en zarif kavramlarından biri refactor etmektir. Refactor, çalışan bir sistemi bozmadan iç yapısını iyileştirmektir. Minimalist yaşamın da en olgun hali budur. Her şeyi yakıp dağa çıkmak şart değildir. Bazen yalnızca bir fonksiyonu bölmek, bir değişkenin adını değiştirmek, bir bağımlılığı azaltmak yeterlidir. Hayatta da bazen devrim değil, iyi adlandırılmış bir niyet gerekir.
Mesela “daha iyi yaşamak istiyorum” çok genel bir fonksiyon adıdır. Ne yaptığı belli değildir, test edilemez. Buna karşılık “her sabah telefona bakmadan önce on dakika yürümek” daha temiz bir koddur. Girdisi, çıktısı ve davranışı nettir. Zihin belirsizlikten hoşlanmaz; belirsizlik, iç dünyamızın spagetti kodudur.
Minimalizm burada estetik bir moda olmaktan çıkar, bilişsel bir optimizasyon tekniğine dönüşür. Amaç boş duvarlara bakıp kendini ermiş sanmak değildir. Amaç, karar verme maliyetini azaltmak, dikkat bant genişliğini korumak ve anlamlı işlere daha fazla işlem gücü ayırmaktır. Kısacası mesele az şeye sahip olmak değil, sahip olduklarının seni yönetmemesidir.
Okunabilir Bir Hayat Mümkün mü?
İyi kod kendini açıklamak için bağırmaz. Doğru isimlendirilmiş, gereksiz tekrarları azaltılmış, sorumlulukları ayrılmıştır. İyi bir hayat da böyledir: her an dramatik açıklamalara ihtiyaç duymaz. Ne için çalıştığınız, kime zaman ayırdığınız, neye hayır dediğiniz ve neyi koruduğunuz okunabilir hale gelir.
Burada temiz kod prensipleri şaşırtıcı biçimde varoluşsal prensiplere dönüşür. “Tek sorumluluk ilkesi” der ki bir sınıfın değişmek için tek nedeni olmalıdır. İnsan için de benzer bir bilgelik var: Her role aynı anda tutunmaya çalışma. Herkesi memnun etmek, her projede bulunmak, her tartışmaya girmek, kişiliği çok amaçlı ama kırılgan bir sınıfa çevirir. Sonra küçük bir değişiklik bütün sistemi çökertir.
“Kendini tekrar etme” ilkesi de yalnızca kod için değil, davranış için önemlidir. Aynı hatayı farklı dekorlarla yaşamak, ruhsal düzeyde kopyala-yapıştır programlamadır. Jungiyen bir gözle bakarsak, tekrar eden desenler gölgenin imza dosyalarıdır. Onları silmek yetmez; neden üretildiklerini anlamak gerekir. Yoksa bastırılmış kod başka bir modülde yeniden belirir.
Elbette her optimizasyon iyi değildir. Erken optimizasyon yazılımda nasıl bir tuzaksa, hayatta da aşırı sadeleşme bir performans takıntısına dönüşebilir. İnsan bir algoritma değildir; bazı verimsizlikler oyun, sanat, dostluk ve merak olarak hayatı güzelleştirir. Temiz kod donuk kod demek değildir. Minimalizm de steril bir boşluk değil, anlamlı karmaşıklığa yer açmaktır.
Sonuçta hem kodda hem hayatta asıl soru şudur: Bu şey gerçekten çalışıyor mu, yoksa sadece orada durduğu için var mı sanıyorum? Bazen en büyük ilerleme yeni bir özellik eklemek değil, gereksiz olanı silmektir. Çünkü sadeleşmek eksilmek değil; sistemin gerçek amacını daha net duyacak kadar gürültüyü kısmaktır. Hayatınızı refactor edin: önce küçük bir fonksiyondan başlayın.