İçeriğe geç
parazade

Teknik Borç Nedir?

İngilizce: Technical Debt

Yayın: · Son güncelleme:

Teknik Borç Nedir? Kısaca

Teknik borç (technical debt), yazılımda hız kazanmak için seçilen kolay ya da geçici çözümlerin, ileride kodu değiştirmeyi zorlaştırarak ek iş ve maliyet doğurmasıdır. Tıpkı finansal borç gibi faizi vardır ve ödenmezse büyür.

Teknik Borç nedir?
İçindekiler
  1. Teknik borç nedir?
  2. Borç büyüdüğünde ne görülür?
  3. Geri ödeme planı nasıl kurulur?

Teknik borç nedir?

Teknik borç, bugün kestirme bir yol seçtiğinizde gelecekteki kendinize yazdığınız bir senettir. Bir özelliği yetiştirmek için kodu aceleyle yazar, testleri atlar ya da kopyala yapıştır yaparsınız. İş biter ama kod kırılgan kalır.

Benzetme bilinçlidir. Finansal borç gibi teknik borcun da faizi vardır: o kodla her çalıştığınızda ekstra zaman harcarsınız.

Borç büyüdüğünde ne görülür?

Bazı işaretler borcun büyüdüğünü gösterir. Küçük bir değişiklik beklenmedik yerleri bozuyorsa, yeni ekip üyeleri kodu haftalarca anlayamıyorsa ve "o dosyaya dokunmayalım" sözü sık duyuluyorsa borç yüksektir.

Bir senaryo düşünelim. Bir girişim ilk müşterisine yetişmek için fatura modülünü üç günde yazar, test eklemez ve aynı hesaplamayı beş ekrana kopyalar.

Altı ay sonra vergi kuralında küçük bir değişiklik gerekir. Beş yerin her birini bulup düzeltmek, test etmek ve gözden kaçan birinin müşteriye yanlış fatura kesmesini yönetmek günler alır. Baştan bir gün fazla harcansaydı bu iş birkaç saatte biterdi.

Geri ödeme planı nasıl kurulur?

Her teknik borç kötü değildir. Bir fikri hızla denemek için bilinçli olarak alınan borç mantıklı olabilir. Sorun, borcun unutulmasıdır.

Borcu görünür kılın: bilinen sorunları iş listesine yazın. Her sprintte zamanın bir kısmını refactoring ve test eklemeye ayırın. En çok değişen ve en çok sorun çıkaran modüllerden başlayın, çünkü faizin en yüksek olduğu yer orasıdır. Yöneticilere de durumu iş diliyle anlatın: "bu modüldeki borç yüzünden her yeni özellik iki kat sürüyor" cümlesi, teknik bir açıklamadan daha ikna edicidir.

Sıkça Sorulan Sorular

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

Hayır. Bir pazarı test etmek ya da kritik bir tarihe yetişmek için bilinçli alınan borç mantıklı olabilir. Önemli olan borcun kayıt altına alınması ve geri ödeme planının yapılmasıdır.

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

Kesin bir ölçüsü yoktur. Kod analiz araçlarının raporları, hata sıklığı, değişikliklerin ne kadar sürdüğü ve geliştiricilerin geri bildirimleri birlikte değerlendirilerek fikir edinilir.

İlgili terimler

RefactoringRefactoring (yeniden düzenleme), yazılımın dışarıdan görünen davranışını değiştirmeden kodun iç yapısını daha okunur, sade ve bakımı kolay hâle getirmek için yapılan düzenlemelerdir. Yeni özellik eklemek ya da hata düzeltmek değildir.Legacy Kod(Legacy Code)Legacy kod (miras kod), hâlâ kullanılan ama eski teknolojilerle yazılmış, çoğu zaman belgesi ve testi eksik, yazanların artık ekipte olmadığı koddur. Şirketin işi için önemlidir ama değiştirmesi risklidir.Spagetti Kod(Spaghetti Code)Spagetti kod, akışı tabaktaki spagetti gibi birbirine dolanmış, yapısı belirsiz, takip etmesi ve değiştirmesi çok zor koddur. Genelde plansız büyüyen, kopyala yapıştırla genişleyen ve kuralsız yazılan projelerde ortaya çıkar.Temiz Kod(Clean Code)Temiz kod (clean code), başka bir geliştiricinin kolayca okuyup anlayabileceği, değiştirebileceği ve test edebileceği biçimde yazılmış koddur. Anlamlı isimler, küçük ve tek işe odaklı fonksiyonlar ve gereksiz karmaşıklıktan uzak bir yapı temel özellikleridir.Fatura(Invoice)Fatura, satılan mal ya da yapılan hizmet karşılığında müşterinin borçlandığı tutarı göstermek üzere satıcı tarafından düzenlenip alıcıya verilen ticari ve vergisel belgedir. Vergi Usul Kanununda düzenlenir.Özellik(Feature)Özellik (feature), makine öğrenmesinde her bir örneği tanımlayan ve modelin tahmin yaparken girdi olarak kullandığı ölçülebilir nitelik ya da değişkendir. Örneğin ev fiyatı tahmininde metrekare, oda sayısı ve konum birer özelliktir.