Teknik Borç (Technical Debt) Nedir?
Sözlük

Teknik Borç (Technical Debt) Nedir?

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 3 dk okuma

Teknik borcun tanımı, nasıl oluştuğu, kod, mimari ve test borcu türleri, ölçümü ve önceliklendirmesi örnekle anlatılıyor.

Teknik borç nedir?

Teknik borç, yazılım geliştirirken kısa vadeli kazanç için verilen tasarım, kod ya da test ödünlerinin ileride ortaya çıkardığı ek maliyettir. Kavram finansal borç benzetmesine dayanır: bugün hızlı çözüm seçerek zaman kazanırsınız ama borcun faizini sonraki her değişiklikte ödersiniz.

Burada borç, bilinçli bir tercihten de doğabilir, farkında olmadan yapılan bir tasarım hatasından da. Önemli olan, borcun görünür hale getirilmesi, ölçülmesi ve iş etkisiyle birlikte yönetilmesidir. Teknik borç kötü bir şey olmak zorunda değildir; pazara hızlı çıkmak için bilerek alınan ve geri ödeme planı olan borç, makul bir iş kararı olabilir.

Faiz ne demek? Neden zamanla büyür?

Borcun faizi, kötü yapının her yeni değişikliği yavaşlatmasıdır. Dağınık bir modülde yapılacak küçük bir ekleme, yan etki riski yüzünden uzun sürer; hata düzeltmek zorlaşır; yeni gelen geliştirici sistemi anlamakta zorlanır.

Asıl maliyet yazılamayan özelliklerdir. Ekip zamanının büyük bölümü borcun etrafında dolanmaya gittiğinde, yeni değer üretme kapasitesi azalır. Borç ödenmedikçe faiz birikir ve sonunda ekip, her değişikliği bir önceki borcun üzerine yeni bir yama olarak yazmak zorunda kalır.

Başlıca teknik borç türleri

  • Kod borcu: Tekrarlanan kod, uzun ve çok iş yapan fonksiyonlar, anlaşılmaz adlandırma.
  • Mimari borcu: Büyüyen ürünün taşıyamadığı bağımlılıklar, birbirine sıkı bağlı bileşenler, ölçeklenemeyen yapı.
  • Test borcu: Eksik otomatik test, kırılgan test paketi, elle yapılan tekrar eden doğrulama.
  • Dokümantasyon borcu: Güncel olmayan ya da hiç yazılmamış teknik belge ve karar kayıtları.
  • Altyapı ve araç borcu: Eskimiş kütüphaneler, güncellenmeyen bağımlılıklar, elle yürütülen dağıtım.

Bu ayrım, envanter çıkarırken borcu aynı sepete atmamayı sağlar; çünkü her türün ölçümü, iş etkisi ve geri ödeme yöntemi farklıdır.

Örnek: bir e-ticaret sepet modülü

Örneğin bir e-ticaret ekibi kampanya döneminden önce sepet hesaplamasını hızlıca yetiştirmek için indirim kurallarını tek bir büyük fonksiyonun içine yazdı. Kampanya yetişti, satış hedefi tutturuldu.

Sonraki dönemde her yeni indirim türü bu fonksiyonu daha da karmaşık hale getirdi. Küçük bir değişiklik bile başka bir kuralı bozuyor, test yazmak zorlaşıyor ve düzeltme süreleri uzuyor. Ekip bu noktada borcu envantere yazar: etkilenen modül, hata sıklığı ve değişiklik süresine etkisi. Sonra fonksiyonu kural bazlı küçük parçalara ayıran bir iyileştirme işi planlanır. Yani borç, işin bir yan etkisi olarak değil, yönetilen bir kalem olarak ele alınır.

Teknik borç nasıl ölçülür ve önceliklendirilir?

Ölçüm tek bir sayıya indirilemez, ancak dolaylı göstergeler kullanılır: kod karmaşıklığı ve tekrar oranı, test kapsamı, bir değişikliğin üretime çıkma süresi, hata sıklığı, belirli modüllerdeki değişiklik yoğunluğu ve ekibin kendi tahminleri. Bunlar kanıt toplamaya yarar; tek başına karar vermez.

Önceliklendirmede iş etkisi belirleyicidir. Sık değişen ve riskli bir modüldeki borç, nadiren dokunulan bir modüldeki borçtan önce ödenmelidir. Her borç için şu sorular sorulur: bu borç hangi iş sonucunu yavaşlatıyor, ödemek ne kadar emek istiyor, ödemezsek ne olur? Sonuç, geri ödeme portföyü olarak sıralanır.

Borç nasıl ödenir ve yenisi nasıl önlenir?

Geri ödeme yöntemleri arasında yeniden düzenleme (refactoring), ilgili modüle dokunulurken küçük iyileştirmeler yapmak, belirli süre ayırarak planlı iyileştirme işleri yürütmek ve gerektiğinde bileşeni yeniden yazmak bulunur. En sağlıklı alışkanlık, iyileştirme işlerini ürün çalışmasıyla birlikte planlamaktır; ayrı bir tek seferlik temizlik projesi çoğunlukla ertelenir.

Yeni borcun önlenmesi için kod incelemesi, kabul ölçütlerinde kalite maddeleri, tamamlandı tanımı ve otomatik testler kullanılır. Bilinçli alınan borç ise kayda geçirilir ve geri ödeme tarihi belirlenir.

Bu konuyu Mindset programlarında nerede çalışırsınız?

Mindset kataloğundaki Teknik Borç Yönetimi: Ölçüm, Önceliklendirme ve Geri Ödeme Planları eğitimi Teknik Borcun Tipolojisi ve Envanterin Kurulması, Ölçüm Yöntemleri ve Kanıt Toplama, İş Etkisinin Hesaplanması ve İş Diline Çeviri, Önceliklendirme ve Geri Ödeme Portföyü modüllerini içerir. Teknik Borç Yönetimi ve Ölçümü eğitiminde Borç Tespiti ve Ölçümü ile Önceliklendirme ve Azaltma Planı yer alır.

İlgili Mindset programı

Teknik Borç Yönetimi: Ölçüm, Önceliklendirme ve Geri Ödeme Planları

Sık sorulanlar

Sık sorulan sorular

Teknik borç her zaman kötü müdür?

Hayır. Pazara hızlı çıkmak için bilerek alınan, kayda geçirilmiş ve geri ödeme planı olan borç makul bir tercih olabilir. Sorun, borcun görünmemesi, ölçülmemesi ve hiç ödenmemesidir; faiz sessizce birikir ve ekip bunu ancak teslimatlar yavaşladığında fark eder.

Teknik borç yalnızca eski kodda mı olur?

Hayır. Yeni yazılan kodda da, zaman baskısı ya da yetersiz tasarım yüzünden borç oluşur. Eski olmak borç demek değildir; asıl ölçüt, kodun değiştirilmesinin ne kadar zor ve riskli olduğudur. Düzenli bakılan eski kod sağlıklı, aceleyle yazılmış yeni kod borçlu olabilir.

Teknik borç ile hata (bug) aynı şey mi?

Hayır. Hata, yazılımın beklenen davranıştan sapmasıdır. Teknik borç ise çalışan ama değiştirmesi zor ve pahalı olan yapıyı anlatır. Borç, zamanla hata üretme olasılığını artırabilir; bu yüzden ikisi ayrı kayıt altında ama birbirine bağlı izlenir.

Yöneticilere teknik borç nasıl anlatılır?

Teknik terim yerine iş etkisi anlatılır: teslim süresindeki uzama, hata kaynaklı kesintiler ve yeni özelliklere ayrılamayan emek gibi. Ölçüm verisiyle desteklenen bu dil, iyileştirme çalışmasına bütçe ve zaman ayrılmasını kolaylaştırır.

Teknik Borç Nedir? Türleri, Ölçümü ve Örnek