Last Update: 21.11.2018. By Jens in Newsletter
Legacy apps are the bane of developers. Many have to work on one, nobody loves them. But why do they grow to such a pain?
I mentioned it in yesterdays’ email, a major issue is because nobody actually plans in their maintenance budget for that. They plan to have a budget for fixing things if they break. But as long as they do not break, they won’t do anything. And updating dependencies because of security issues counts as did not break. Yep, as long as there is no acute threat, no action will be taken.
It is the same as with material goods. Things you actually can touch. Nobody cares for example about the brakes in the car as long as they work. You might plan for maintenance, so like changing brake discs every X kilometers or after some years or whatever. We can count that as a bugfix. But plan for anything else? Nope.
Same for other goods. If it ain’t broken, we ain’t fixing it. And most of the time, not even doing simple maintenance work. If it breaks, we might fix it. Depends on the problem and the costs. Changing rusted screws or the shock absorber is a bug fix. It’s a tiny part of the whole product and isolated fixable.
If it ain’t fixable or the costs are too high, it goes to the trash. Or sometimes the cost of fixing is not economical anymore. Buying a new printer might be cheaper than buying a refill. Anyways, the will drift us too far, so we will leave that out for today and the non-repairable stuff too.
Imagine now there is an issue with a type of screws used in the car. They can crack in certain conditions (our security vulnerability). Are we going to replace any of those screws now? Probably not as it could result in disassembling the whole car and then assemble it again. Nobody will do that. In the physical world, we keep the thing as is and just build new cars with the new screws. If the risk is extremely high, we might recall it and fix it for free. But that’s quite seldom in relation to the number of cars built.
Now, we got a car with bad screws and can’t fix it. What are we going to do? Ah, the prob is not that bad, won’t happen to me, so we just continue driving it.
It’s the same for legacy apps.
With a major difference though.
Fixing physical stuff is way harder than fixing this immaterial code thingie. Keeping the legacy app up to date with all its dependencies is way easier than fixing all screws in a car. However, we humans are so used and still fixated on touchy material goods that we still use the same rational and irrational decision making on immaterial stuff like software applications.
For most of us, especially the business decision makers, the software is like a car, TV or a factory. If the issues are getting too huge, we just buy a new one.
-