Software needs an expiry date.
(3 min read) Stop spending money and time on expired software. Its not worth it.
Have you ever wondered, “I think it’s time to rebuild this software”?
That conclusion is usually derived when either
The software stops functioning as expected.
Cannot be extended to address new requirements.
The cost of maintenance is more than rebuild.
Every software has a shelf life, it should have an expiry date. Unfortunately, the software doesn't have a packaging label where engineers can stamp these dates and move on.
All software is created to solve a specific problem. It gets created by specific people to meet specific customer requirements on a specific OS, using specific versions of libraries, deployed using the specific version of the software, and maintained by specifically skilled engineers.
If the software is designed well, it will work forever in a vacuum with all the above specificity satisfied.
But we live in the real world. And in real-world things change.
Engineers move, OS gets upgraded, libraries get updated, security patch gets applied, cloud provider changes, and sometimes (always) a customer wants new things.
As a result, the software we built with original specifications is only good till it needs to support new requirements. I like to call this a best-before date. Date before which we can guarantee its quality.
Now, I am not proposing that we throw out the software when it's best before the date is passed. Softwares are costly. Also, the best before date doesn't mean expiry date, a.k.a. use-by date. The best before date is about quality, and the expiry date is for safety.
Once the software goes beyond its best-before date, it needs more maintenance. In good hands, a software's best-before date can be refreshed way beyond its original best-by date. But this can happen only until a certain point.
When software can't accommodate new customer requirements, it expires.
Expired Software!
The good thing about most well-designed software is that the number of days between the best before the date and the expiry date is huge.
The bad thing is that people don't want to accept that the software is beyond its expiry date. They spend way too much time and money to extend its life. Engineers patch and patch and keep on patching until they start patching the patch.
Patching the patch should be the first sign that software has expired. There are other early signs that we see in the software that's about to expire. Here are a few:
✋ Stores can't sell it: Customers can't ask for enhancements because we cant extend the software to support them. You can't sell the software anymore.
😷 It stats to smell: The operation overhead is huge. Oncall is drowning in pages.
🤒 Someone gets sick: People who are maintaining it are getting burned out and have page fatigue.
🤢 It loses its taste: When an outage happens, the post-mortem says that it's expected, and we can't do anything about it.
🐌 Its slimy: Patch on a patch on a patch on a patch makes a huge continuous slimy, squishy liquid.
☠️ No one touches it: New people are afraid to get involved.
TurboTax
Turbotax is the best example of software that has an explicit expiry date. Every year, Intuit has to release a new version specifically for that year, and after that, it expires. I am sure they do re-use part of TurboTax every year to build next year's version.
Determining the expiry date
Now, you may be wondering, how do we come up with the dates?
Best-before is easy. Ideally, it is the date before we expand it to meet the new customer request. This usually is between 6 months to 1-year time frame from the original general availability (GA) date.
The expiry date is a bit tedious. Depending on the design, it's anywhere between 1 - 3 years (max). If your software is still not near its expiration date at the 3-year mark, either you spend a lot of time over-engineering it and/or rebuild parts of it, or the customer doesn't care about it anymore. If it's later, then the question becomes, is it worth the cost of maintaining it.
If you are currently working on expired software or need to convince someone to let go of the expired software, please share it with them.