Wednesday, July 25, 2007

OSCON: Managing technical debt

I'm in Managing Technical Debt with Andy Lester. He's really rolling, and taking the audience with him and his five step plan to reduce your technical debt...


Andy Lester talking about technical debt

  • Identify your debts
  • Determine the costs
  • Pay the most profitable
  • Stop incurring new debt
  • Repeat as necessary
Andy is arguing that clutter is probably the biggest indicator of technical debt; failing tests, fragile code, ugly code.

A failing test is a car alarm, you'll just ignore it...

Outdated comments are also a big problem, if the comments don't match the code then you have real problems. "Bus-sensitive knowledge" is any knowledge where if you get hit by a bus, and you loose that knowledge, is technical debt. You might also be missing vital infrastructure; RT, version control, backups and cron jobs to automate tasks.

Update: Andy is making a lot of good points, including advocating giving non-critical projects to your not so smart people to free up the smart ones to do the critical ones. You need to pick one thing to work on, don't pick the easiest, don't pick the most fun either. Think improvement, not perfection.

Land one plane at a time

If you try to do two things, you're going to do both of them poorly.

Update: Technical debt is obviously an issue really close to everyone's heart, Andy is getting a lot audience interaction. I'm half expecting people to start standing up and say, "I'm Bob Smith, and I have technical debt...", followed by a group hug.

3 comments:

  1. "Outdated comments are also a big problem"

    Comments are a problem as they cannot be verified, unless you do it "by hand", but in order to do that you need to read the code and understand it, thus comments are superfluous.

    ReplyDelete
  2. The most important part about comments is the stuff that you can't read out of the code. Typically, this is the "why" of the code. Why are we doing a sort in this manner? Why are we calculating tax based on an internal table instead of getting the rates from the database? etc etc etc.

    ReplyDelete
  3. And Alasdair, I'm glad you liked the talk. If you see me walkin' around, say hi!

    ReplyDelete