The term comes from programmer Ward Cunningham, developer of the first wiki. Cunningham, who coined the phrase more than a decade ago, said the failure to address problems during software development was like “borrowing money thinking you never had to pay it back.”
“Of course, if you do that—say with your credit card—eventually all your income goes to interest and your purchasing power goes to zero,” he said.
Dave Smith, an agile software development coach, describes technical debt as “those internal things (in the planning or execution of a software project) that you choose not to do now, but which will impede future development if left undone.”
He offers a few examples of the thinking behind technical debt:
- “It’s too late in the life cycle to upgrade to the new release of the compiler. We’ll do it next time.”
- “We’re not completely conforming to the user interface guidelines. We’ll get to it next time.”
Or as Martin Fowler, chief scientist at ThoughtWorks, describes it, “Doing things the quick and dirty way sets us up with a technical debt, which is similar to a financial debt. The technical debt incurs interest payments, which come in the form of the extra effort that we have to do in future development because of the quick and dirty design choice.”