Unlimited Possibilities through Code
Not all code that is sloppy or messy is technical debt. I tend to agree with Martin Fowler in his assessment of technical debt. When your team is making conscious design decisions for valid reasons (shipping a product, pushing off heavy work for next release, etc) then you are incurring debt. When you just have a mess of code, it is not technical debt.
Technical debt is like a short term high interest loan, you should prioritize paying it off quickly, or the interest quickly overcomes the original principal of the loan.
Remember that whatever you ship to incur that technical debt will still be out there, and have to be supported. You can’t simply tell all your users to upgrade to 2.0 because 1.0 was full of debt. In this way technical debt is a long term bond, you can’t simple buy them back. They take time to mature and be retired.
Programming is always a journey about learning. Often after completion of a project I think of better ways it could have been designed, built, etc. The project could still have been a success, but there were things I would have done differently with the full insight of the completed project.
This usually happens to me when there was simply not enough time to think through everything up front, or the requirements changed during the course of the development.
Bad things happen on projects all the time. Just make sure you are making the decision to incur technical debt consciously. Don’t end up in that accidental debt category.
©2010-2012 Jason Short. All Rights Reserved. The opinions expressed herein are my own and do not represent my employer’s views in any way.