Hangi Teknik Borç Ödenir, Hangisiyle Yaşanır?
Her teknik borç ödenmeyi hak etmez. Faiz ödeyen borçla sessizce duran borcu ayırmak ve sınırlı bütçeyi doğru yere harcamak.
Kısaca
Teknik borcu kötü yapan anapara değil faizdir: sık dokunulan ve her değişikliği yavaşlatan borç ödenir, kimsenin dokunmadığı çirkin ama çalışan kod olduğu yerde taşınır. Borcu ne kadar kötü olduğuna ve ne sıklıkta dokunulduğuna göre sınıflandırmak, sınırlı refactor bütçesini gerçekten faiz ödeyen işlere ayırmayı sağlar.
Bir backlog’da iki yüz “teknik borç” bileti vardı. Ekip bunları bir ahlaki kusur gibi taşıyordu: “hepsini ödememiz lazım.” Oysa o iki yüz biletin çoğu, ömrü boyunca tek kuruş faiz ödetmeyecekti.
Teknik borç bir suçluluk meselesi değil, bir muhasebe meselesidir. Ve her borç ödenmeyi hak etmez.
Teknik borç bir muhasebe meselesidir
Borç metaforunun en önemli kısmı çoğu zaman atlanır: faiz. Gerçek bir borcu kötü yapan anapara değil, faizdir.
Teknik borçta da öyle. Bazı borçlar faiz öder: her dokunduğunuzda sizi yavaşlatır, her değişikliği zorlaştırır, her hafta vakit yer. Bazı borçlar ise sadece durur — çirkindir, ama size hiçbir şeye mal olmaz. İkisini aynı kefeye koymak, sınırlı bir refactor bütçesini yanlış yere harcamaktır.
Faiz ödeyen borç
Ödenmeyi hak eden borç, faiz ödeyendir:
- Haftada birkaç kez dokunulan sıcak bir kod bölgesi, dağınık olduğu için her değişikliği yavaşlatıyor.
- Kırılgan bir alanın çevresinde test yok ve orası düzenli olarak production’da patlıyor.
- Bir soyutlama yanlış çizilmiş ve her yeni özellik onunla güreşmek zorunda.
Bunların ortak noktası: maliyetleri tekrar tekrar ödeniyor. Bu borcu kapatmak, her gelecekteki değişikliği ucuzlatır — yatırım geri döner.
Faizi olmayan borç
Şimdi öteki uç: kimsenin dokunmadığı bir modülde, çirkin ama çalışan bir kod. Üç yıldır değişmemiş, muhtemelen üç yıl daha değişmeyecek.
Bu borcu “ödemek” — yani onu refactor etmek — bütçeyi sıfır getiri için harcamaktır. Daha kötüsü, çalışan bir koda dokunmak yeni hata riski taşır. Faizi olmayan borç ödenmez; olduğu yerde taşınır.
Borcu sınıflandırmak
Pratik bir çerçeve, her borcu iki eksende konumlandırır: ne kadar kötü × ne sıklıkta dokunuluyor.
- Çok kötü + sık dokunulan → şimdi öde. Faiz yüksek.
- Az kötü + sık dokunulan → fırsat buldukça, dokunmuşken düzelt.
- Çok kötü + nadir dokunulan → dokümante et, sınırla, ama acele etme.
- Az kötü + nadir dokunulan → görmezden gel. Bu bir liste maddesi bile olmamalı.
İki yüz biletlik bir backlog, bu süzgeçten geçince genelde yirmi gerçek işe iner.
Kasıtlı borç da bir araçtır
Borç her zaman bir hata değildir. Bazen bilinçli olarak borç almak doğru karardır: bugün hızlıca yayınla, fikir doğrulanınca düzelt. Modüler monolit yazısındaki “yanlış çizilen sınırı düzeltmek ucuz” mantığı budur — ucuz düzeltilebilen, bilerek alınmış, kayıt altına alınmış bir borç sağlıklıdır.
Tehlikeli olan, farkında olmadan biriken ve boring architecture yazısındaki karmaşıklık bütçesini sessizce yiyen borçtur.
Teknik borcu bir utanç kaynağı olarak görmeyin; bir bilanço kalemi olarak görün. Soru “borcumuz var mı” değil — her sistemin vardır. Soru “hangisi faiz ödüyor”.
Faiz ödeyen borcu kapatın; geri kalanıyla huzur içinde yaşayın.