I'm starting to think the Japanese have the right idea: build the house to last 20 years and rebuild often. Some parts of modern house design are fads that I hope to see die, but there are a lot of parts about modern houses that make them much better than old ones.
Applications are more like buildings which need to be maintained. Perhaps you could consider it a multi-use building with many tenants and sometimes under attack.
It will be replaced this year however, not because there's anything wrong with it besides code quality, but because it generates files for a system that'll be changed to something entirely different this year.
If the ground around your house physically changed completely every 5 years, then maybe you'd switch out bricks more often as well...
Excellent. This is a great analogy!
- Did the weather in your area change? Maybe you live in Texas and experienced an abnormally huge freeze in 2020 which cause most people to have to replace plumbing and water heaters?
- Maybe you are experiencing more hurricanes than normal and so flooding has become more likely. Now you need to put your house up on stilts?
- What about that new Tesla you might have bought that needs a 240v charger? Can you do this without ripping open the wall?
Software entropy is not just because the software changes, but because the environment changes.
Maintenance is one way of extending the lifetime of things. Otherwise, your building would regularly be torn down and rebuilt. This is often the case, when maintenance is no longer enough. That's the best case scenario, too, as the worst case is it collapses of its own volition, potentially with you in it.
Everything has a lifetime: https://tildes.net/~talk/109v/thoughts_on_lifetimes_limits_a...
Yet they are still functional and secure. They still work with the latest screws. If I had to switch out my bricks every 5 years, I don't think I'd have any time or money left for the rest of life.
Can we make software that's a little more like my bricks?