Working old software is underappreciated
A decision all programmers have faced is whether or not to replace old working software.
There are usually good reasons to replace but especially extensibility. Old code is brittle
and often contains parts nobody understands. Sometimes it contains inefficiencies for modern
hardware and you wouldn’t design it that way now.
My experience is that for most programmers, they err on the side of rewriting when they shouldn’t.
And this is not a small effect: they err a lot in that direction. I am no exception to this.
I think there are many reasons for this systematic err, but one is programmer personality…
we like to create. Better to build a new creative building than to paint an old one that is boring.
But I think the big reason is we tend to underrate the best quality of old software: it works.
A key invisible thing about old software is that it has survived many battles
nobody remembers and is empirically robust to many situations.
The key is that old software has survived under selection pressure.
As this famous Ape 2.0 has shown, this is VERY powerful:
If you start from scratch, it may take years to develop that intrinsic robustness.
Being more wary of deleting old code is a cousin of this maxim:
“Don't ever take a fence down until you know the reason it was put up” (Chesterton)
Let’s go to an Oryx and Crake style genetic engineering problem if you had the DNA
skills to design creatures. Should you improve on this ridiculous
poorly designed creature (Photo:Samuel Blanc):
I mean it has wings but can’t fly?! Some users may need that feature.
It swims but has feathers than can get wet?! Why not make it like a dolphin.
Sure that creature might be better than version 1.0, but it might need many
mods as it “dies” in various ways.
Another poorly designed creature that should be redesigned? No brains and all spikes:
Make the brain bigger. Make the legs longer. Give it thumbs.
Having had a hedgehog as a pet, I am the first to admit they are ridiculous.
But the hedgehog has needed little revision for 15 million years!
While the penguin and hedgehog are both very robust, if they traded continents both
would probably die. So sometimes the environment changes enough that starting from
scratch is a good thing. But never underestimate all the hidden talents in an
evolved creature or piece of software! Please read more about it in my new book: