
Karmaşıklık bir onur madalyası değil, patlamaya hazır bir teknik borçtur. "Sıkıcı" teknolojileri ve basit mimarileri seçmenin, neden en zekice çözümlerden daha üstün olduğunu inceleyelim.
Her mühendisin başına gelmiştir: Altı ay önce harika görünen "zekice" bir çözüme bakıp, bugün hiçbir şey anlamamak. Çoğu zaman karmaşıklığı gelişmişlik ile karıştırıyoruz; oysa en sağlam sistemler, neredeyse sıkıcı denecek kadar basit olanlardır.
Aşırı kompleks kodun gizli bir faizi vardır. Şunları talep eder:
Sürekli zihinsel yük: Her değişiklikte tüm evreni aklınızda tutmanız gerekir.
Yoğun dokümantasyon: Çünkü kod kendi adına konuşamaz.
Derin bağlam geçişi (Context Switching): İçine girmek zor, içinde kalmak daha zordur.
Nadir uzmanlık: Sadece onu yazan "büyücü" tamir edebilir.
Basit kod ise herkes tarafından okunabilir ve düzeltilebilir. Bir karınca, gösteriş yapmak için gökdelen dikmez; işlevsel bir koloni kurar.
Kalıcı sistemler kurarken şu kısıtları takip edin:
Yenilik yerine Kanıtlanmışlık: Bırakın başkaları "en yeni" teknolojinin hatalarıyla sabahlasın.
Özgünlük yerine Dokümantasyon: Belirli bir hata mesajını dünyada ilk gören kişi siz olmamalısınız.
Zekice olan yerine Sürdürülebilir olan: Gelecekteki haliniz size teşekkür edecek.
Gelişmiş desenlerle (patterns) bezenmiş özel bir "state machine" yazmak yerine, net geçişleri olan basit bir obje kullanın.
Sonuç: Üç ay sonra, junior bir geliştirici 2 saatlik bir oryantasyona ihtiyaç duymadan hatayı 10 dakikada düzeltebilir. Sadelik budur.
Yeni bir karmaşıklık katmanı eklemeden önce sorun:
🐜 Bu gerçekten var olan bir problemi çözüyor mu?
🐜 Başka biri bunu 6 ay sonra anlayabilir mi?
🐜 Bakım maliyeti nedir?
Bu sorulara net bir cevap veremiyorsanız, sadeleştirin.
Basitlik, naiflik değildir. Basitlik: Net niyet, belirgin akış ve minimum sürpriz demektir. En iyi mühendisler, en zekice kodu yazanlar değildir; zekice yazılmasına gerek kalmayan kodu yazanlardır.