views:

584

answers:

6

Can someone give me a good definition of what they mean by the phrase "Technical Debt"?

+18  A: 

From the man himself,
http://martinfowler.com/bliki/TechnicalDebt.html

To summarize, it is a debt that you incur everytime you avoid doing the right thing (like refactoring, removing duplication/redundancy) letting the code quality deteriorate over time. As with financial debt, it is the easy thing to do in the short term.. however over time, the interest you pay on this debt is humongous - the code quality deteriorates over time to a point where a rewrite of the app is more feasible than maintaining or changing it. (So the question is whether you want to pay a little now (fixing the tiny issues) or pay lots more after N months (by which time the code has turned into Jurassic Park II).

Gishu
+2  A: 

A good answer here.

Matthieu
+7  A: 

Jeff Atwood's blog, Paying Down Your Technical Debt

Nick D
+17  A: 

It's a metaphor mentioned by Ward Cunningham, Martin Fowler, Jeff Atwood, Steve McConnell, Uncle Bob.

The concept tries to put into numbers measurable software metrics like these:

The idea is that you could get a number from these metrics, which would represent the technical debt - in $$$. You always pay interest on your technical debt when you add functionality to the code, or fix defects. If you don't pay back the technical debt - by fixing the issues - you will pay increasing interest forever. A business person may find this argument more reasonable than the pure technical ones.

You can see this idea in action with the technical debt plugin for Sonar:

http://nemo.sonarsource.org/

More info here:

http://sonar.codehaus.org/evaluate-your-technical-debt-with-sonar/

Mercer Traieste
+1  A: 

Technical debt is bad code. That's it. The debt is a metaphor: If you have a lot of bad code, it prevents you from getting new work done because you are spending all your time dealing with the bad code. If you have a lot of debt, it prevents you from using your money on other things, because you spend it all on interest.

Technical debt as a metaphor is used to communicate to non-programmers what every programmer knows: a code base full of hacks takes more effort to maintain than a clean code base. This leads to the paradox: shortcuts taken to speed development actually slow it down. Technical debt is a way to explain this to non-programmers.

Sean McMillan