Imagine you’re the captain of a magnificent cruise ship, a marvel of modern engineering and luxury. Year after year, you add more rooms and more amenities – a new lounge, an extra swimming pool, and even a state-of-the-art theatre. Passengers are thrilled, and your profits soar. But beneath the surface, all is not well.
The ship, now weighed down by the new additions, begins to strain against the added load, and the engines, once roaring powerhouses, now wheeze and falter. An iceberg is sighted dead ahead; the added drag and weakened engines mean it’s far more likely that you cannot change course in time… In the world of software systems, this tale is not just a story – it’s a stark reality that countless companies face.
Do you like surprises? Aside from an unexpected gift, I prefer not to be surprised, and it’s especially true when it comes to software development and its costs.
One of the things we strive to do at Foxsoft is adhere to an adage of “No Surprises”. We don’t want to be surprised, and we definitely don’t want our clients to be surprised. We specialise in looking after Ruby on Rails-based bespoke software for the long term. Often, clients come to us with systems that have been in existence for several years and, as we often discover, have had little time or effort spent on maintenance. Our first task, just as we’re getting to know each other, is the most difficult–taking a system that has been unloved and making it shipshape.
We do our best to manage expectations and factor in a level of the unknown into our estimates when we go through our roadmapping process. However, as hard as we try, when it comes to updating and upgrading a codebase that’s been written by many people over the years and has not been actively maintained, the only surprise would be not finding a surprise or two.
The reality is that a software system is only truly an asset to your organisation if it’s been properly cared for throughout its life; otherwise, at some point, you’ll be in for a surprise – and not the good kind.
If you are responsible for a bespoke software system, you get to own the good and the bad. When times are good, you’re reaping all the benefits, but if you have neglected to budget and allow for continual maintenance, you also have to own the bad. As with the cruise ship analogy, the problem can remain hidden until you hit a point of no return, and then the debt becomes due. With the interest that has accrued over the years, the bill can be an unpleasant one.
Maintenance is a business strategy, not just an IT task
Remember, maintenance is a business strategy, not just an IT task. It should be viewed as a strategic business activity with a clear ROI, rather than a technical necessity. Done well and properly budgeted for, it will improve customer satisfaction, reduce downtime and ensure the system remains operational.
So how can you assess the state of your software “ship”?
- Engage in periodic code audits to proactively identify areas of complexity, redundancy and potential security vulnerabilities. Use the results to guide your roadmap to budget for these important elements before they become urgent.
- Monitor performance metrics to track responsiveness, speed, and stability and look for patterns or trends that may indicate there are underlying issues that should be addressed.
- There is often a critical dependency chain reaction that’s waiting to spark where an upgrade to one is dependent on another, and so on down the line. It pays to stay ahead of the curve.
- If you’re finding the pace of development to be slower than expected, that’s also a likely sign that the system architecture might need some attention.
If your software ‘ship’ runs your business, it is one of your most critical assets. Regular maintenance is not just a safeguard; it’s a strategy for sustainable growth and competitive advantage. Just as a captain must be vigilant to keep their vessel seaworthy, so too must you be in proactively maintaining your software.