YBYönetim Bilişim
Yazılım Geliştirme·5 dk okuma

Teknik Borç Nedir ve Nasıl Yönetilir?

Her yazılım projesinde birikim yapar. Tamamen kaçınmak mümkün değil, ama kontrol altında tutmak mümkün. İyi teknik borç ile kötü teknik borcu ayırt etmek işin yarısı.

Son güncelleme:

Kısa cevap

Kısa cevap

Teknik borç, bugünkü hız için alınan ve gelecekte geliştirme maliyetini artıran teknik kararların toplamıdır. Sorun borcun varlığı değil, görünmez ve önceliksiz kalmasıdır.

Bu yazıdan ne alacaksınız?

  • Teknik borç görünür bir iş listesinde izlenmelidir.
  • Küçük ve sürekli iyileştirme, büyük yeniden yazımdan daha uygulanabilirdir.
  • Ürün takvimi teknik riskleri bütünüyle dışarıda bırakmamalıdır.

Teknik borç kavramını Ward Cunningham 1992'de ortaya attı. Finansal borç metaforuyla anlatıyor: kısa yoldan bir karar almak şimdi hız kazandırır ama ileride "faiz" ödetir — yani o kararı düzeltmek için ekstra zaman harcarsınız.

Buradaki kritik nokta şu: teknik borç kötü değil. Sıfır teknik borçla yazılım geliştirmek neredeyse imkânsız — ve çoğu zaman buna çalışmak bile verimsiz.

İyi teknik borç vs kötü teknik borç

İyi teknik borç, bilinçli alınan bir karardır. "Şu an bunu tam doğru yapmak 2 hafta alır; şimdilik çalışan ama temiz olmayan versiyonu yazalım, müşteri geri bildirimi gelince düzeltiriz" demek. Bu borcu alırsınız çünkü kazancı maliyetini karşılıyor.

Kötü teknik borç, farkında olmadan birikir. Kopyala-yapıştır kod, test edilmemiş kritik işlevler, kimsenin tam anlamadığı konfigürasyonlar. Bu borç kimsenin tutanak tutmadığı, faiz oranı her geçen gün büyüyen bir kredi kartı gibi.

Nasıl birikir?

Çoğunlukla zaman baskısıyla. "Şimdilik böyle kalsın" kararları belgelenmez ve giderek normlaşır. İlk kişi o kodu yazarken bağlamı biliyordur; 6 ay sonra kodu okuyan kişi bilmez. O "geçici çözüm" production'da 3 yıl kalır.

Bir de büyüme sancısından kaynaklanan borç var: başlangıçta doğru olan mimari karar, 10 kat daha fazla kullanıcıyla yanlış hale gelebilir. Bu kaçınılabilir değil — ama öngörülebilir.

Pratik yönetim

Teknik borç görünür olmak zorunda. Bir backlog'da izleyin — ister ticket ister yorum satırı olsun. "TODO: bunu daha iyi yap" yazan bir yorum, o sorunun en azından var olduğunu belgelemiş olur.

Her sprint'e biraz teknik borç ödeme kapasitesi ekleyin. %10-20 oranı sürdürülebilir bir başlangıç noktası. Tüm sprint'i refactoring'e ayırmak çoğu zaman mümkün olmaz — ama küçük, sürekli iyileştirme birikir.

Boy Scout Kuralı: "Bulduktan daha temiz bırak." Her dokunduğunuz kod parçasını biraz daha iyi bırakmak büyük refactoring ihtiyacını önler. Büyük temizlik girişimleri genellikle ertelenir ve hiç yapılmaz; küçük sürekli iyileştirme gerçekleşir.

Sıfırdan mı yazalım, refactor mü edelim?

Sıfırdan yazma kararı çok daha nadir doğru çıkar. Joel Spolsky'nin klasik "Things You Should Never Do" yazısında anlattığı gibi: çalışan kod ne kadar çirkin görünürse görünsün, içinde yıllar içinde öğrenilen edge case'lerin bilgisi var. Sıfırdan yazınca bu bilgiyi de sıfırlıyorsunuz.

Kademeli yeniden yazım genellikle daha güvenli. Bir modülü, bir servisi, bir dosyayı. Büyük bang refactoring'ler çoğunlukla yarıda kalır veya yeni sorunlar üretir.

Müşteri olarak ne yapabilirsiniz?

"Hızlı bitsin" baskısı teknik borç biriktirir. Bir hafta daha süren ama doğru yapılan iş, ileride 3 haftalık düzeltmeden daha ucuza mal olur. Yazılım ekibinizle teknik borcu konuşmak bir lüks değil — uzun vadeli bakım maliyetini doğrudan etkileyen bir tartışma.

Sık sorulan sorular

Her eski kod teknik borç mudur?

Hayır. Eski ama stabil, anlaşılır ve ihtiyacı karşılayan kod borç değildir. Borç, değişiklik maliyetini veya operasyon riskini yükselten koddur.

Sıfırdan yazmak çözüm müdür?

Çok nadiren. Çalışan sistemin içinde birikmiş iş kuralları vardır. Önce en riskli modülü ölçüp kademeli iyileştirmek genellikle daha güvenlidir.

Projeniz için danışmanlık alın

Bu yazıda anlattıklarımızı projenize nasıl uygularsınız, birlikte konuşalım.

İletişime Geçin