Bir ürün büyümeye başladığında genellikle şu cümleler duyulmaya başlanır:

  • “Şimdilik böyle idare edelim”
  • “Bu kısmı sonra temizleriz”
  • “Önce büyüyelim, sonra toparlarız”

Bu cümleler tek başına yanlış değildir. Asıl problem, bu kararların hangi bağlamda ve ne kadar süreyle alındığının net olmamasıdır.

Teknik borç çoğu zaman hatalı bir kararın değil, doğru görünen ama zamanla güncellenmeyen kararların sonucudur.

Teknik borç neden ürün büyürken görünür hale gelir?

Erken aşamada teknik borç genellikle tolere edilebilir. Çünkü:

  • kullanıcı sayısı azdır
  • değişiklikler sınırlıdır
  • sistemin sınırları zorlanmaz

Ancak ürün büyüdükçe üç şey değişir:

  • değişiklik sıklığı artar
  • sistem üzerindeki baskı yükselir
  • kararların yan etkileri görünür olur

Bu noktada daha önce “idare eder” dediğiniz her karar, ürünün hızını ve hareket kabiliyetini etkilemeye başlar.

Teknik borç ürün büyürken ortaya çıkmaz.
Ürün büyürken teknik borcun bedeli görünür hale gelir.

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

Hayır.
Teknik borç her yazılımda vardır ve bu doğaldır.

Problem şurada başlar:

  • teknik borcun bilinçli mi,
  • yoksa fark edilmeden mi biriktiği

Bilinçli teknik borç:

  • belirli bir süre için alınır
  • ne zaman ele alınacağı kabaca bellidir
  • sınırları tanımlıdır

Bilinçsiz teknik borç ise:

  • sessizce büyür
  • kimsenin sahiplenmediği alanlar yaratır
  • zamanla “dokunulmayan” kod parçaları oluşturur

Ürün büyüdükçe asıl risk ikinci türdür.

Ürün büyütme kararları teknik borcu nasıl tetikler?

Büyüme aşamasında genellikle şu kararlar alınır:

  • yeni pazarlara açılma
  • farklı kullanıcı segmentlerine hitap etme
  • kullanım senaryolarını genişletme

Bu kararlar ürün tarafında mantıklı olabilir.
Ancak teknik tarafta şu sorular sorulmadan alındığında borcu artırır:

  • Mevcut mimari bu genişlemeyi kaldırır mı?
  • Bu karar sistemi geçici mi yoksa kalıcı mı zorlayacak?
  • Bu değişiklik hangi varsayımları geçersiz kılıyor?

Bu sorular sorulmadığında teknik borç birikmez gibi görünür,
ama ürünün her yeni adımında faiz işlemeye başlar.

En sık yapılan yanlışlar

Teknik borcu yalnızca kod kalitesiyle ilişkilendirmek

Teknik borç çoğu zaman “kirli kod” olarak düşünülür.
Oysa gerçek hayatta teknik borç;

  • yanlış soyutlamalar
  • belirsiz sınırlar
  • net olmayan sorumluluklar

gibi yapısal problemlerden kaynaklanır.

Kod temizliği bu borcun sadece küçük bir parçasını çözer.

Büyümeyi hızlandırmak için borcu sürekli ertelemek

“Şu an büyüme daha önemli” yaklaşımı kısa vadede işe yarar.
Ama bu yaklaşım sürekli hale geldiğinde:

  • her yeni özellik daha pahalıya mal olur
  • hata çözme süresi uzar
  • ekip karar almaktan çekinmeye başlar

Bu noktada teknik borç artık teknik bir problem değil,
organizasyonel bir yavaşlatıcıdır.

Teknik borcu görünmez kabul etmek

Teknik borç hakkında konuşulmayan ekiplerde borç hızla büyür.
Adı konulmayan borç, en pahalı borçtur.

Teknik borcun gerçekten problem olmaya başladığı anlar

Şu işaretler ortaya çıkıyorsa dikkat:

  • Basit değişiklikler beklenenden uzun sürüyorsa
  • Yeni ekip üyeleri kodu anlamakta zorlanıyorsa
  • Her sprintte “beklenmeyen” teknik işler çıkıyorsa
  • Küçük hatalar zincirleme sorunlara yol açıyorsa

Bu belirtiler genellikle aynı şeyi söyler:

Ürün büyümüş, ama teknik kararlar bu büyümeye ayak uyduramamıştır.

Gerçek hayatta sık karşılaşılan senaryolar

Büyüme sonrası şu durumlar sık görülür:

  • “Eskiden hızlıydık” söylemi
  • Her release öncesi artan stres
  • Kimsenin dokunmak istemediği alanlar
  • “Buraya hiç girmeyelim” cümleleri

Bu noktada sorun genellikle tek bir kötü karar değildir.
Sorun, biriken ve hiç ele alınmamış kararların toplamıdır.

Büyüme ile birlikte teknik borcu düzenli olarak ele alan ekipler,
uzun vadede hem hızlarını hem de karar kalitelerini koruyabilir.

Kapanış

Ürün büyütmek sadece kullanıcı sayısını artırmak değildir.
Aynı zamanda alınmış kararların hâlâ geçerli olup olmadığını sorgulamayı gerektirir.

Teknik borç, büyümenin doğal bir yan ürünüdür.
Ama kontrol edilmezse, büyümeyi sessizce yavaşlatan en güçlü faktöre dönüşür.

Bu yüzden asıl soru şudur:

Teknik borcumuz var mı değil,
hangi borcun farkındayız ve hangisini görmezden geliyoruz?