Technical debt is just like.. well debt
About 2 years ago I first heard the term "technical debt" from one of my coworkers. Well, I heard technical depth instead of debt first, which clearly did not help me see why it was such a great term for crappy code and quick and dirty solutions.
It was not until a week ago when I had a chat with another coworker who casually pointed out to me that you pay interest on any outstanding technical debt you may have. Just like real debt. Any time you are adding something to a code base that has technical debt, you can not help but increase it. You just can not quickly add good and proper code to a code base that has a lot of technical debt. Thus the interest.
This is a great selling point to clean up code early in the project and invest time to fix things now, instead of 6 months down the line when the project is almost over.
One of the projects I worked with recently was a great example. It was a project that had been underway for a long time and no real significant time was spend on cleaning up the code and keeping it clean. They were under a lot of pressure to deliver more functionality. This pressure made them choose suboptimal solutions to the problems they had, increasing their technical debt even further. Until a point where they were not even able to deliver proper solutions and all subsequent solutions were just increasing the debt. This is the interest my coworker was talking about. They finally realized what was going on and they are now spending weeks with more than half the team trying to pay off that debt.