Technical Debt is subject that is very close to my heart, I first heard of the concept at a great session that Gary Short gave and ever since I have found ways of finding and addressing the problem. So what is Technical Debt?
Technical Debt is a like any other kind of debt.
Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly with a rewrite... The danger occurs when the debt is not repaid. Every minute spent on not-quite-right code counts as interest on that debt. Entire engineering organizations can be brought to a stand-still under the debt load of an unconsolidated implementation, OO or otherwise. - Ward Cunningham.
So what causes Technical Debt, for that I'am going to borrow Martin Fowlers great quadrant diagram.
Every hack, work around, bad piece of code builds technical debt. So what it is the cost, an image from this great article sums it up well.
The real cost of Technical Debt is that for every bad piece of code, it can cause problems to your customers and cost you and your business money. It can cause you defects (and in some cases) cost the business money. It can takes other coders time to find and fix the problems or work with the code, time is money.
As time goes by and theh debt builds up the cost also goes up, the further the problems, the harder to resolve and the bigger the cost.
I'll move into approaches to resolving technical debt in later posts.