Friday 26 October 2012

Don't Laugh It's Paid For - Technical Debt

What do you think technical debt is? Most likely you answered bugs. But technical debt is more than bugs and is sometimes not bugs at all!

Ward Cunningham - developer of the first wiki, and a pioneer in Extreme Programming - first coined the term technical debt in 1992. After a while the industry started talking about Technical Debt, and with the excitement around Agile at the moment, there are a lot more people looking for answers to why their software has failed to deliver.

Many have explained the debt metaphor and confused it with the idea that you could write code poorly with the intention of doing a good job later. More confused?

So what is technical debt?

Martin Fowler describes technical debt through the use of a technical debt quadrant. Personally, I really like this - http://martinfowler.com/bliki/TechnicalDebtQuadrant.html.

We must treat Technical Debt like this is just as the entrepreneur treats financial debt. They use it. It speeds delivery, but, so long as it is properly managed.

So, where do bugs fit in? Bugs and technical debt can be entirely different things. Fixing a bug may reduce tech debt, leave tech debt unchanged, or even increase tech debt, depending on how the fix is done.

A bug by itself is not technical debt. It is more likely poor testing, requirements, design, coding, etc; Something within the development lifecycle, something that we could probably have fixed before it became a bug. If bugs continue to appear within the same area, function, feature, this may be a sign of technical debt. (See http://www.rants.org/2010/01/10/bugs-users-and-tech-debt/)

What are some signs of Technical Debt? Ever said any of these?

“Don’t we have docs on the file layouts?”
“I thought we had a test for that?”
“If I change X, it’s going to break Y. I think.”
“Don’t touch that code. Last time we did, we spent a week fixing it.”
“We just lost the drive. Where are our backups?”
“Where’s the email about that bug?”
“Just put in a comment with XXX. We’ll see it later.”
“Just put in a comment with TODO. We’ll see it later.”
“Just put in a TODO. Right about the XXXs.”

If you would like to know more check out my presentation on Technical Debt here


Dont laugh it's paid for - if you want the powerpoint version please email me at mike.burns@alumni.qut.edu.au.

1 comment:

  1. I agree technical debt is more than just bugs put into a backlog. I also really like the comparison to an entrepreneur. you can go into to debt to get the first sale but if you don't pay back that debt you will soon be out of business.
    I always think of this one project i worked on at a former employer. The technical debt was created to get the first sale but it was never paid back and much like interest on a credit card the debt just kept on growing. I am now told they are looking to retire the product because the debt has crippled them.

    ReplyDelete