Its time to call Bullshit on "Technical Debt"

You know what "Technical Debt" is, right?
Ok, heres the (official?) Wikipedia definition
 Technical debt (also known as design debt or code debt) is a neologistic metaphor referring to the eventual consequences of poor or evolving software architecture and software development within a codebase. The debt can be thought of as work that needs to be done before a particular job can be considered complete. As a change is started on a codebase, there is often the need to make other coordinated changes at the same time in other parts of the codebase or documentation. The other required, but uncompleted changes, are considered debt that must be paid at some point in the future.
And in this - somewhat purist - sense, "Technical Debt" is absolutely valid.
The problem arises in the way it is almost invariably used, viz., as an excuse to not do something.
Herewith a simple exercise - the next time you hear someone cite "Technical Debt" as a reason to not do something, use the following three-part test
  1. Replace "Technical Debt" with "Chewbacca".  
  2. Check to see if  the information content of the explanation has changed.
  3. If it hasn't changed, the explanation is bullshit.
  4. Heck, if it has increased, the explanation is clearly bullshit!
Now, think back of all the times someone in your organization has done this
  • We can't implement the new sorting algorithm because we're still dealing with Chewbacca
  • We're going to have to wait on the GUI because of Chewbacca
  • We'll update the fetzer valve as soon as we've dealt with Chewbacca
 See? Makes just about as much sense now as before, doesn't it?

Oh, as a bonus, swapping in Chewbacca sounds funnier - at least you'll have that...


Anonymous said…
I see what you did there! Anyone who defends the concept labels herself as among the do-nothing party!

If TD looks like a phantom from where you sit, you must be sitting pretty!
dieswaytoofast said…
I'm not denying that it exists - just pointing out that in the vast majority of cases, it really is bullshit, and is - absolutely - an excuse to do nothing :-)
J said…
Technical debt is just a marketing bullshit invented by agile pros when their books' sale fell. It might be good for language dicksize wars (as in "java incurs more TD than lisp!!1!"), but since it's not only impossible to measure, but even to conclusively define (eg. singletons today would be mostly considered TD, but not so 15 years ago), it's essentially worthless as a notion. A blogpost metaphor, nothing more.

The problem of course exists, as does bad code, but it's no way to deal with it, just to sell consulting services. :-)
Anonymous said…
Employee design debt in customer support refers to the accumulation of problems or inefficiencies in the way that customer support is structured or carried out that can lead to increased difficulty or burden for employees.

Popular posts from this blog

Cannonball Tree!

Erlang, Binaries, and Garbage Collection (Sigh)

Visualizing Prime Numbers