Technical Debt Doesn’t Exist
Technical debt isn’t an arbitrary thing; it’s a metaphor to try to explain doing maintenance to non technical folk.<p>The explanation goes like this:<p>If you have no debt, you can borrow money.<p>If you have a bit of debt, you can borrow money, but you have to make regular repayments of <i>maintenance</i> to service that debt.<p>...but when you have a lot of debt, lenders are cautious about lending you money. Will you pay it back? Why didn’t you pay back any of your other debts? Can you afford the repayments?<p>The metaphor isn’t perfect, but the point being made is that <i>maintenance</i> is the repayments on technical debt; if ignore it, at some point you are going to end up spending all your developer hours on maintenance, and your throughput for features will grind to a halt.<p>You “repay” the technical debt by fixing stuff that causes problems, not by randomly rewriting it because you can’t be bothered reading the existing source code.<p>It’s not maintenance.<p>That’s a different thing; that’s <i>making changes</i>.<p>Technical debt is more like a metric of how prone to failure &#x2F;what feature velocity your software is &#x2F; has.<p>Sure, the metaphor falls over; you can just keep slapping broken features and other crap on top of either other indefinitely if you <i>dont care</i> if your existing features work or not... but, that’s a different issue.