Why Should We Manage Software Debt?
Posted by Chris Sterling on 18 Oct 2008 at 12:38 pm | Tagged as: Acceptance Testing, Agile, Architecture, Leadership, Product Owner, Scrum, Software Architecture, TDD, XP
In the past I have blogged on software debt in terms of:
- Going beyond code to manage software debt in “Clean Up, Clean Up, Everybody Do Your Share”
- Problem with catching up on software debt in “The IT Manager’s Dilemma with Software Debt”
Although there are reasons defined or implied in those blog entries I think it is important to discuss it more directly. The following image will be the backdrop for the rest of this blog entry.
Software that has been around for some time usually gets difficult to work with. The value of the software depreciates as more debt creeps into the software because the costs have not went down and probably went up to keep up with maintenance. So the costs are rising to maintain the system and the value of the software is depreciating. A business asset that has these kind of characteristics is in jeopardy of getting scrapped. Sometimes the only thing stopping us from scrapping the software is that we have nothing else to replace it and the business processes it currently supports are dependent on it.
Depreciation of software is inevitable but when we manage software debt diligently with a disciplined approach we can significantly prolong the depreciation from going below the minimum acceptable value for the software. In fact, if we manage software debt in the process of adding business functionality we will increase the software’s value and therefore further prolonging significant depreciation.
I will be at Agile Vancouver speaking on “Managing Software Debt” on November 6th. This presentation has been given in multiple variations over the past year and a half. Although I won’t go into detail here, the following 6 principles are what I see as essential to managing software debt effectively:
- Maintain one list of work
- Emphasize quality
- Evolve tools and infrastructure continually
- Improve system design always
- Share knowledge across the organization
- And most importantly, hire the right people to work on your software!
I will post on more details of managing software debt in the near future.

