← semua materi
19:00 Tips · 29 Oct 2026 · 19:02

Technical Debt: Utang Mana yang Wajib Dibayar, Mana yang Biarkan Sampai Kiamat

Semua utang itu jahat? Salah. Yang jahat bukan utang — tapi utang yang tidak kamu sadari sedang kamu ambil.

Empat Kuadran (Martin Fowler)

Sumbu: sengaja vs tidak sengaja × bijak vs ceroboh.

Ceroboh (Reckless) Bijak (Prudent)
Sengaja "Deadline besok, gak sempat bikin test. Ship aja." "Kita tahu ini jebakan. Rilis dulu, refactor minggu depan — tiket sudah ada."
Tidak sengaja "Apa itu layer? Apa itu index DB?" "Sekarang baru paham cara yang benar. Kode lama ditulis sebelum kita tahu."

Hanya kuadran kanan atas yang benar-benar "utang" dalam arti finansial: kamu pinjam waktu, bunga tercatat, ada rencana bayar. Tiga kuadran lain bukan utang — itu kerusakan atau ketidaktahuan.

Yang WAJIB dibayar (bunga tinggi, makin lama makin mahal)

Yang boleh dibiarkan

Aturan praktis

Debt tanpa tiket = bukan debt, itu sampah. Setiap utang yang sengaja diambil harus punya jejak: komentar // ponytail: atau // DEBT: dengan alasan + kondisi kapan harus dibayar. Kalau tidak ada kondisinya, jangan tulis.

// DEBT: cache in-memory, single instance only. Pindah ke Redis kalau replica > 1.

Satu baris. Nol meeting. Orang berikutnya langsung tahu batasnya.

Yang bisa langsung dipakai

Jalankan ini di repo sekarang, 30 detik:

git log --since="3 months" --pretty=format: --name-only | grep -v '^$' | sort | uniq -c | sort -rn | head -15

15 file teratas = tempat utangmu paling mahal. Bukan yang paling jelek — yang paling sering disentuh. Bayar di situ. Sisanya diamkan tanpa rasa bersalah.

Takeaway

Utang teknis bukan soal kode jelek. Soal kode jelek yang sering kamu lewati. Yang tidak pernah dilewati bukan utang — itu museum.