I'm not a cylon!

Posts tagged technical

0 notes &

Code Rot and Technical Debt

Sometimes I have trouble explaining the concept of code rot to people.

They look at me strangely and ask how it’s possible for code to decay.  I mean, after all it is software isn’t it?  Short of disk corruption or human intervention it doesn’t change, right?

Well sort of.

A piece of software quite possibly won’t change, but if you want to use it in 5 years time (a number that is rapidly decreasing) chances are you’re going to want to use it in a different environment, for a different task, possibly with different collaborators.

So while the software itself doesn’t change, everything else around it does.  Relative to what’s around it, the software has aged, and if it no longer performs its tasks as we want it to, then I think it’s fair to say it’s rotten.

To pursue projects under the assumption that existing code bases are eternal and will not need updating, is to accrue a form of technical debt.  

Technical debt is a reasonably prevalent concept on IT projects now, however some people seem to feel that it is only of concern when building new systems, or directly modifying existing ones.

My view is that techincal debt (possibly architectural debt) accrues over time for all parts of the system.  As it sits there it accrues interest, and adds hidden costs to both development, and operation.

The biggest problem I see is that when adding new features, there’s a focus on minimum change to achieve additional functionality.  People are encouraged to take a view of “it works fine, don’t mess with it”, however when it comes time to fix the bugs that have sprung up, it often turns out that the minimum change has proven far more costly than the alternative of fixing all broken windows that are visible from the point of your change.

Especially after you’re a few iterations in and that compound interest is kicking in

Filed under technical process software