CTO Compass

Are you about to hit an iceberg? The hidden peril of neglected software maintenance

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.

⚡️ Thinking Time ⚡️

This week’s Thinking Time reflection is software-centric.

Reflect on your current software maintenance practices. When was the last time your software was audited for potential risks? Consider the potential ‘icebergs’ your software might encounter. What are the hidden vulnerabilities or performance issues that could emerge unexpectedly? How might these risks impact your business operations or customer satisfaction? Are there some risk mitigation strategies you haven’t considered?

Consider how software maintenance is currently prioritized within your organization’s budget and strategic planning. Is it viewed as a critical investment or an afterthought? How can you reframe software maintenance in your financial planning to ensure it is seen as a driver of long-term value rather than a cost centre?

Reflect on how the balance between innovation/new features and maintenance has been managed in your software development process. Are you adding new ‘rooms’ to the ‘cruise ship’ without ensuring that the ‘engines’ and ‘hull’ are in good condition? How can you strike a better balance to ensure sustainable growth and system reliability?

(And if you need any help with any aspect of this, do get in touch with me. You can just reply to this email).