Teknik Borç (Technical Debt) Nedir?

Teknik borç, finansal borç misali, alındığında faiziyle birlikte geri ödenmesi gereken hayali borçtur. Agile Manifesto’nun yaratıcılarından ve Extreme Programming öncülerinden Ward Cunningham tarafından ortaya atılmış bir kavramdır.

CHEAP-FAST-GOOD Kanununa Göre

Bir özelliğin veya işlevselliğin bir ürüne (alanımızla ilgili olarak bir uygulamaya diyebiliriz) eklenmesi veya mevcut bir özelliğin veya işlevselliğin geliştirilmesi söz konusu olduğunda temelde 3 yol vardır:

  1. Çabuk ve ucuz, ama kötü
  2. İyi ve ucuz, ama yavaş
  3. Çabuk ve iyi, ama pahalı
Ucuz-Çabuk-İyi
Ucuz-Çabuk-İyi

Bu 3 yolun birbiriyle alakası CHEAP-FAST-GOOD Kanunu, Kalite-Hız-Fiyat Kanunu (The Quality-Speed-Price Law) ya da Üçün İkisi Kanunu (The Law of Two-Thirds) olarak geçer.

Varsayalım ki maddi külfetle (finansal maliyet ile) ilgilenmiyoruz ve sabit alıyoruz. Bu durumda sadeleştirmeleri yaptıktan sonra 2 yol kalır:

  1. Çabuk ama kötü
  2. İyi ama yavaş

Yani ya mimari ve tasarımsal açıdan kötü ama daha kısa sürecek geliştirme süreci; ya da mimari ve tasarımsal açıdan iyi ama daha uzun sürecek geliştirme süreci benimsenecek.

Teknik Borç Kısır Döngüsü
Teknik Borç Kısır Döngüsü

Teknik Borcun Çeşitleri Nelerdir?

Kaçınılmaz Teknik Borç

Öngörülemeyen ve önlenemeyen teknik borç çeşididir. Geliştiricilerin hataları veya eksiklerinden kaynaklanmaz. Projenin büyüklüğü ve kapsamlılığı ile doğru orantılıdır.

Stratejik Teknik Borç

“Çabuk ama kötü” seçeneğinin öbür adıdır. Bunun kararını geliştiriciler veya geliştirici ekipleri almaz. Erken istenen ürünün teknik borcu yüksek olur. Hızlı giden atın … deyişini hatırladınız mı?

Taktiksel Teknik Borç

Stratejik teknik borca benzer fakat bunun kararını geliştirici ekip alır. Projenin dead-line’larının normalinden daha yakın olması genelde asıl sebeptir. Tabii ki bu da daha üst yönetim kademelerinin tutumu ile yakından alakalıdır. Taktikten kasıt: “Projeyi erken tamamla ve aldığın teknik borcu başka bir fazda öde”.

Kifayetsiz Teknik Borç

Yeteri kadar yetkin olmayan ya da yetkin olup da gereken özeni göstermeyen geliştiricilerin sebep olduğu teknik borçtur.

Teknik Borç Kadranı
Teknik Borç Kadranı

Bileşik Teknik Borç

Geçmişte alınan teknik borcun ödenmeden üzerine daha fazla teknik borcun alınması ile meydana gelmiş kat be kat borçtur. Saçma sapan workaround’lar bu çeşit borca girer.

Teknik Borç Alınmadan Üretim Olur mu?

Hayır olmaz. Bahsettiğimiz gibi ideal durumda dahi en azından “kaçınılmaz teknik borç” alınmıştır. Mükemmel ürün diye bir şey yoksa her ürünün gelişmeye ihtiyacı var demektir. Gelişmeye ihtiyaç söz konusu ise teknik borç çoktan alınmış ve zamana bağlı olarak şişiyor demektir.

Teknik Borç Kapatılmaya Çalışılmalı mıdır?

Duruma göre. Bazen en kısa zamanda ödenmesi, bazen ödemenin alabildiğine ertelenmesi, bazen borcun azaltılması, bazen artırılması uygun düşer. Borç alma ve ödeme kararlarına etki eden faktörlerden ilk akla gelenler:

  • Ürünün toplam ömrü
  • Pazar stratejisi
  • Risk stratejisi
  • Geliştirici eki(b/pler)in taktiksel bakışı
  • Rekabet
  • İş gücü, hammadde, ar-ge maliyetleri ve başka finansal maliyetler
  • Ürünün marjinal faydası
  • Verimlilik
  • Motivasyon
  • Öngörüde isabet
  • Adaptasyon
  • Kalite sınıfı
  • Marka değeri

Teknik Borç Tesbit Edilebilir mi?

Hiçbir zaman kesin ve net bir biçimde tesbit edilemez. Yaklaşık hesaplamalar ile ancak fikir edinilebilir. Teknik borcu hesaplamaya çalışan tool’lar bulunabilir fakat onlar da yalnızca temayüller hakkında fikir verir ve ancak “nereye doğru gidiyoruz?” sorusuna cevap verebilir.

Yüksek Teknik Borç Ne Demektir?

  • Yüksek teknik borç, düşük verim demektir.
  • Yüksek teknik borç, düşük motivasyon demektir.
  • Yüksek teknik borç, adaptasyon ve oryantasyon süreçlerinin uzaması demektir.
  • Yüksek teknik borç, ilave maliyetler demektir.
  • Yüksek teknik borç, tahminlerdeki isabetlerin az olması demektir.
  • Yüksek teknik borç, kırık camlar demektir (Bkz. Kırık Camlar Teorisi).
  • Yüksek teknik borç, her müdahalenin riskinin yüksekliği demektir.
  • Yüksek teknik borç, daha fazla erteleme demektir.
  • Yüksek teknik borç, müşteri memnuniyetsizliği demektir.
  • Yüksek teknik borç, yüksek hata oranı (yazılımda bug) demektir.
  • Yüksek teknik borç, fazla endişe ve sonucunda daha fazla stres demektir.
  • Yüksek teknik borç, düşük esneklik demektir.
  • Yüksek teknik borç, kötü tasarım demektir.
  • Yüksek teknik borç, kirli proje demektir.
  • Yüksek teknik borç, günün sonunda kalitesiz ürün demektir.
  • Yüksek teknik borç, günün sonunda düşük kar marjı demektir.
  • Yüksek teknik borç, günün sonunda düşük marka değeri demektir.

Hardware veya Software Üretiminin İçinde Olanlara Birkaç Tavsiye