A race against software calcification

Eventually, software is very hard to change. There are numerous reasons for this, and they often don’t even involve the software. The systems that run the software are old, regulators don’t let you change things, security controls, people have just forgotten how to program COBOL. There is so much code that it’s hard to know what the code does.

So when you want to change it, you don’t know what to do. The ultimate sign of legacy software is that you don’t know how to test it after making changes. If you can’t test software, you can’t safely make changes, the Michael Feathers definition of legacy code.

I could get distracted by discussing the reasons, but we all know that software just becomes “legacy” at some point.

This means that you have to figure out building software that will be valuable in the long-term before the software calcifies. Early on you can change things, more or less at will. But, slowly at first, it takes a bit longer to make changes. And, eventually, what used to take “just one line of code” will take 6 months.

You’re in a race against software calcification.