Çatlak Kodun Güzelliği: Legacy Sistemlerde Wabi-Sabi Bulmak

Çatlak Kodun Güzelliği: Legacy Sistemlerde Wabi-Sabi Bulmak

Bir yazılım ekibine eski bir kod tabanı gösterin; odada üç duygu belirir: korku, küçümseme ve hafif bir kaçma isteği. Oysa Japon estetiğinin wabi-sabi bakışıyla yaklaşınca, o yamalı sınıflar, unutulmuş yorum satırları, kimsenin dokunmaya cesaret edemediği fonksiyonlar yalnızca kusur değil; zamanın, emeğin ve hayatta kalma mücadelesinin izleridir. Wabi-sabi, kusurlu, geçici ve eksik olanın içindeki değeri görür. Legacy code ise tam olarak budur: kusurlu, geçici sanılmış ama inatla kalıcı olmuş bir dijital çömlek.

Elbette bu, kötü kodu romantikleştirelim demek değildir. Çürüyen bir mimariyi şiirsel bulup üretim ortamında yangın çıkarmasına izin vermek, estetik değil ihmaldir. Fakat modern yazılım kültürü bazen steril bir mükemmellik fantezisine kapılır. Her şey temiz mimari, kusursuz test kapsamı, parlak isimlendirme ve kutsal SOLID ilkeleriyle doğmalıymış gibi davranırız. Gerçek dünyada ise yazılım, genellikle cuma akşamı yetişmesi gereken bir kampanya, beklenmedik bir regülasyon, ayrılan bir kıdemli geliştirici ve müşteri tarafında hâlâ Internet Explorer kullanan biri tarafından şekillendirilir.

İlk Satırın Gölgesi: Mimari Kararlar Neden Yıllarca Peşimizi Bırakmaz?

Bir yazılım projesinin ilk günlerinde alınan kararlar çoğu zaman masum görünür: Veritabanını şimdilik tek sunucuda tutalım, kullanıcı kimliğini e-posta adresiyle eşleştirelim, modülleri hızlı ilerlemek için aynı kod tabanında toplayalım. Ekip küçüktür, müşteri acele eder, bütçe dardır. Herkes “sonra düzeltiriz” der. Fakat bilişim dünyasında bazı “sonralar”, yıllar sonra milyonlarca kullanıcının, yüzlerce geliştiricinin ve kritik iş süreçlerinin omzuna çöken birer mimari gölgeye dönüşür.

Geri dönüşsüz karar, teknik olarak asla değiştirilemeyecek karar demek değildir. Çoğu sistem yeniden yazılabilir, veri taşınabilir, servisler ayrıştırılabilir. Ancak değişimin maliyeti zamanla öyle büyür ki karar pratikte geri dönüşsüz hale gelir. Bir apartmanın temelini değiştirmek mümkündür; fakat apartman doluyken, çevresinde trafik akarken ve kiracılar her gün yaşamaya devam etmek zorundayken bu iş yalnızca mühendislik problemi olmaktan çıkar. Yazılım mimarisi de böyledir: Kodun altında çalışan iş kuralları, kullanıcı alışkanlıkları, entegrasyonlar ve kurum hafızası vardır.