Thursday, February 26, 2009

Technical Debt

Technical Debt is an interesting and familiar metaphor within software development.

To extend if further we can even consider scenarios whereby we choose not to take out a loan when designing, however it is still prudent to make regular payments into the bank account otherwise you begin to creep into the overdraft. Design decisions taken up-front may have been made with a full-understanding of the requirements and even some built-in flexibility because we had the cash available to avoid taking out a loan. However the business changes and new features are introduced which conflict with the conceptual integrity of the original design. Without regular payments into the bank account in the form of refactoring we eventually end up with unmanageable debt whereby the only solution is to bring in the administrators. The administrators salvage what they can but the reality is we need to start re-building from the ground-up.

The essence of this metaphor is that refactoring is essential to the longevity of software. This acts as a prompt for us to promote the practice of refactoring, however the success of refactoring is reliant upon either maintaining or reliably evolving the conceptual integrity of the design. This presents a challenge for small to medium size development teams whereby the turnover rate of architects or senior developers is high.

Scott Wood’s Technical Inflation metaphor featured on Martin Fowler's Bliki similarly applies but in the context of technological debt as opposed to design debt.