Care and feeding of software
I was listening to an episode of the Modern Wisdom podcast episode, the guest was Sam Corcos, former CEO of Levels and current CIO of the US Department of Treasury.
It’s an episode worth checking out in general, but this quote stuck out to me:
We need to stop doing “modernization” as a concept. It stems from a general misunderstanding of the software development process.
That we need to throw a bunch of money at a problem, one time and then never touch it again.…
There are two ends of the spectrum where one end is like building a house, where almost all of the work goes up front and there is this trickle of maintenance. The other is like getting a puppy. There is some extra work upfront with a puppy, but you can’t just not feed the puppy for year.
With a house you can just ignore it for a year and it’s fine.
In case it isn’t clear, software is more like a puppy than a house.
This shows up in so many forms in our industry!
This is what is happening when people say:
- If we just rewrote this in <insert other language>…
- Instead of Kafka we need to use NATS and then we won’t have these problems
- Once we’re on Kubernetes…
My friends will realize I’ve said all of these things to them at one point or another.
And that is the problem. There is some truth in those statements.
These changes may be necessary and may totally resolve the current problems at hand.
However, without regular care and feeding you will still end up with a dead puppy. Just a dead puppy in Rust or a serverless dead puppy.
If your current puppy has some behavioral problems, you need to work to resolve those. Not kill it and try again with a new puppy.
Frank Wiles
Founder of REVSYS, Django Steering Council, PSF Fellow, and former President of the Django Software Foundation .
Expert in building, scaling and maintaining complex web applications. Want to reach out? Contact me here or use the social links below.