The word “debt” is usually related with money. When you take money from somewhere, you have to give it back. It’s pretty obvious that if you don’t, it’s considered a crime. The story complicates when talking about technical debt as we don’t remember to pay it off. Based on that I’d dare myself to separate two different kinds of debt.
Debt as a credit
Let’s say there is some good investment that requires funds that you don’t have. In such case you can get a credit that helps you achieve the goal. As it’s serious thing, you think carefully about the conditions and consequences. If you finally incur the debt, you have a plan how to pay it off. Even more, you pay it in the first place as not paying it results in penalties. All in all you think of it as of something positive, because without it you would not succeed.
Same goes with technical debt. If managed properly, it is just another tool that helps in achieving the goal.
Debt as a speeding ticket
This type is completely different for various reasons. You don’t plan it, it just happens. Of course it is not because of bad luck, it’s effect of breaking the rules.
The other thing is that many people don’t want to pay the ticket at all. As it comes from nowhere, maybe it will vanish by itself. You think of postponing the payment for a better future, when you pay back everything else. Or hopefully it will be forgotten and you won’t have to pay at all.
All in all whatever happens, it is not something that you are really proud of. And finally postponing the payment usually results in high interest and additional penalties.
In development world if you do nothing with the debt, it will grow and may kill you (indirectly force you to quit the job) or at least multiply the cost – instead of refactoring one class you will have to rewrite the whole module.