Also known as: tech debt · code debt
Technical debt is the accumulated future cost of choosing an expedient implementation over a better one, analogous to financial debt in that it carries ongoing interest in the form of slower development and higher defect rates.
The metaphor's useful part is deliberateness: taking on debt knowingly, to ship sooner, is a legitimate engineering decision provided the obligation is tracked and eventually repaid.
It is frequently misapplied to code that is merely unfamiliar or written in a style the current team dislikes. Genuine debt has a measurable cost — recurring incidents, changes that take disproportionately long, areas everyone avoids — and that measurability is what separates it from aesthetic preference.
Code Review
Code review is the practice of having changes examined by other engineers before they are merged, catching defects, spreading knowledge, and maintaining consistency across a codebase.
Static Analysis
Static analysis examines source code without executing it, detecting bugs, security vulnerabilities, and style violations by reasoning about possible program behaviours.
Type System
A type system is a set of rules that assigns types to program constructs and verifies their consistent use, catching a class of errors before the program runs in statically-typed languages, or during execution in dynamically-typed ones.
Observability
Observability is the degree to which a system's internal state can be understood from its external outputs — logs, metrics, and traces — particularly for diagnosing problems nobody anticipated.