Technical Debt

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.

Pay it down fast

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.

Learning from your code

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.

Make conscious choices

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.

Comments are closed