Software design, Working practices

Technical debt is healthy

Technical debt is not necessarily a bad thing. In fact, having it at all is a healthy sign. Some may think otherwise, as suggested by this tweet from Benjamin Mitchell, which was tracking the discussion at Agile on the Beach last week:

Making technical debt visible might help, but how does it address the causes (saying ‘yes’ too often, fears of showing code mess)? #AgileOTB

That tech debt’s causes need to be addressed suggest that the presenter thought that it needs to be eliminated. After all, if they were happy to deal with it there would be no reason to hunt down its causes.

Paul Dyson thought otherwise:

[…] tech debt is actually a healthy sign unless you’re an academic or have too much £££ /@benjaminm

I couldn’t agree more.

Having no tech debt is akin to code perfection, which cannot be expected in a real environment where ideals have to be balanced against cost. In reality we have to always think about taking shortcuts. We have to make a bet as to which ones are likely to cost us dearly, and which ones won’t be so bad after all. Those which will cost us dearly are shortcuts we should strive to avoid now. Those which we think won’t be so bad after all we can take.

As time goes on, the apparent cost of each shortcut will vary. Some will look like good bets, and some we will need to be sorted out. It’s those latter ones, where the cost is mounting up, that provide the “debt” part of “tech debt”.

If we have no tech debt it’s because we were too cautious: we didn’t take any bets, we played it too safe. That, as Paul said, should only happen if you’re an academic or have too much money. And that’s why it’s a sign of ill-health to have no tech debt otherwise.

Advertisements

Discussion

6 thoughts on “Technical debt is healthy

  1. Hi Nik

    I’ve just been reading a blog post by Israel Gat on this – The Equipoise of Technical Debt (http://blog.cutter.com/2011/04/16/the-equipoise-of-technical-debt/).

    He makes the point that organisations need to decide what level of technical debt to accept. Too much is a risk; too little is likely to make you late to market.

    Alex

    Posted by Alex McLachlan | 12 September 2012, 2:12 pm
  2. @Alex, that’s great, thanks for the link.

    Posted by Nik | 12 September 2012, 5:22 pm
  3. I think a lot of people who advocate no or nearly no tech debt are development coaches and consultants who are primarily advising on things like writing better code, delivering more reliably, etc. which tech debt is clearly a force against. The article linked above is spot on: taking on technical debt is a tactical or strategic decision made by the technical team *for the business* and the business needs to decide what level is acceptable. A while back I wrote up our view of tech debt fairly early on in the life of my startup: http://pauldyson.wordpress.com/2011/08/15/technical-debt-and-the-lean-startup/ (and I’m pleased to report none of the tech debt we were holding at the time of writing has caused us undue issues a year further down the line).

    I think one of the big problems with tech debt is the lack of sophistication in the measurement of it. The ‘credit card analogy’ in particular is regularly rolled out: tech debt mounts very quickly with a compound affect; anything other than a tiny amount is ruinous. The Cutter tech debt metrics sound interesting, my own view is to treat it the way any business treats any other form of debt: as a line of monetary credit to be used as necessary to enable the business to achieve its goals (http://pauldyson.wordpress.com/2011/08/18/an-economic-model-of-technical-debt/)

    Great article Nik … I often wish I could express myself as clearly and concisely as you :)

    Posted by pauldyson | 13 September 2012, 6:24 pm
  4. @Paul, I stand on the shoulders of giants

    Posted by Nik | 13 September 2012, 8:38 pm
  5. You might also be interested in Nigel Kneill’s blog post – Debt on Agile projects is not just technical! http://www.indigoblue.co.uk/blog/debt-agile-projects-not-just-technical

    Posted by alexmclachlan | 26 September 2012, 9:43 pm
  6. Excellent link. Thanks, Alex.

    Posted by Nik | 26 September 2012, 11:22 pm