Thursday 1 April 2010

Something for the Weekend - Technical Debt

Technical Debt is a metaphor developed by Ward Cunningham to raise awareness of some of the long term impacts of the decisions that we take to get project or technical change live. 
 Ward's metaphor refers more to 'debt' taken with ugly coding or patched together architecture but I think this concept expands well to design too.

We all take shortcuts in order to meet deadlines, restrict cost or work within other constraints. More often than not it’s the right commercial decision but the metaphor really helps to ground the decisions you need to take. 
So what is Technical Debt… imagine it as a bank account, if you take a shortcut with your project/design you go into debt and will, one day, need to repay that debt (correct your shortcut).

Also, just like an overdraft you incur interest... perhaps operational pain, perhaps defects in the code & most likely rework. The longer you live with the debt the more you pay. 
No ones saying you can't go into Technical Debt but there are rule…
  • Make decisions that are deliberate - inadvertent decisions are just bad design (or worse)!
  • Take the debt if its prudent to do so, if the commercial advantages outweigh the debt you're in the right place.
  • Have a plan to repay the debt - a follow up release, back out, etc. Compounding the problem will just make it un-repayable.

This virtual bank account isn't really measurable in £ - it's unquantifiable productivity cost and therefore needs subjective judgment but I really like the concept to articulate some of the decisions we take and live with. 
This cover the basics but if you want to read more check out the links below.

Sources and Credits
http://martinfowler.com/bliki/TechnicalDebt.html
http://senses.thirdi.com/posts/225-what-is-technical-debt/

1 comment:

  1. more info here:

    http://thecriticalpath.info/2011/01/16/technical-debt/

    ReplyDelete