The Dopefly Tech Blog

<< The Dopefly Tech Blog Main page

Technical Debt - it's still a bad thing, right?

posted under category: Software Quality on March 30, 2011 at 1:00 am by MrNate

So I was trying to tell the story of my friend who called me up a few weeks back. I got distracted by the question of should you even try to avoid technical debt. Like I said, he has a lot of technical debt.

Remember that technical debt is a way of describing certain problems in programming.

See, there I get stuck on another question: Is technical debt even bad? Is it really just problems? I mean, it is, right? It represents a hole in our program that needs to be filled. The truth is, technical debt isn't the problem, your application is the problem. Technical debt is just a metaphor.

Of course no metaphor would be so damaging if it were only a figure of speech. The phrase "technical debt" is actually very valuable. The real strength lies in its ability to cross boundaries, into management and ownership and finance.

Back in the land of nerds where I dwell, where technical debt has a face, it describes a gap, not necessarily a problem. It's the distance between a perfect application and an app that basically mostly sort of kind of works. Debt is the effort that will get me where I want to be.

My first car was a 1989 Geo Metro. Stick with me here.

I wanted a Lamborghini. I got a Metro. The Metro got me across town, and those 3 cylinders had to work overtime, but there was a noticeable gap between my Metro and the V12 I was hoping for.

Will I ever get that Lamborghini? I don't want to make the effort to come up with those payments, and I don't really need to go 0-60 in 3 seconds - I can't imagine what good that would do.

Will I ever get my application perfected? I don't want to put in the untold hours and make the sacrifice to remove every ounce of debt from my system, and it's ok if there's room for improvement - I can't imagine not having a little room.

Maybe the real goal should be something in the middle, where it's affordable and has enough cup holders. Every application is different, and every working environment is different, but almost none of us are going to get that Lamborghini. My friends, make your applications a Camry or an Explorer. Something that's nice but not impossible.

I'll try to pick up the conversation with my friend next time.

Too old to comment!
On Mar 31, 2011 at 1:00 AM Peter Boughton (dopefly_blog via said:
Your analogy doesn't make sense. Application speed is not "technical debt" (unless it's too slow).

For a standard backoffice application, it needs to be fast enough for its users.
Once it's fast enough then that's fine - not going faster than that is *not* a problem!

The "technical debt" metaphor is for non-developers, to explain that a car might look all shiny, but it may still break down at any moment, and needs constant upkeep to keep it going - it's a rationalisation of a developer's ability to say "this code is crap" or "we did this wrong" or whatever; things that a non-technical user almost certainly wont understand otherwise.

Beyond being able to identify badness and quantify how bad it is, developers don't need the term, and over-using it will just result in a buzz-word that nobody can correctly define.
Too old to comment!