Legacy software can be both a blessing and a curse. On the positive side of things, if it was well designed when it was built, it just works. On the downside, it just works and if it “ain’t broke, don’t fix it”, means your business can get stuck in ruts as you don’t want to risk breaking things. But before we start replacing legacy software, perhaps we should put a definition to what a legacy system or software is.
What is legacy software?
Wikipedia’s definition for Legacy systems as “… an old method, technology, computer system, or application program, ‘of, relating to, or being a previous or outdated computer system’, yet still in use”. Legacy software falls under this broad definition. It is software that has been in service for a significant period of time that captured a way of working that is not as modern as it could be. It can also include software that, while meeting the businesses needs, is using outdated technology, code or frameworks. A critical aspect of what makes legacy systems problematic, is the level of support they receive. Legacy systems with strong support and regular updates, aren’t as much of a concern as the risks are significantly mitigated of issues arising.
But it still works!
More often than not, legacy software still works. While all software will have bugs or issues that don’t quite make it perfect, your business has built processes and “work arounds”, to allow the software to be continually used. Unfortunately though, the real issue is that it was built so long ago and has received minimal (if any) maintenance, that unfortunately it will be showing cracks. These cracks might not be catastrophic but could they could be ticking time bomb that the question isn’t if they will go off but when.
The biggest causes of outages for legacy software are:
- Security issues
This can be by far the scariest issue for any business. All software has bugs hidden somewhere and hackers are continually looking for them to breach the security of systems and servers. While any kind of system outage can have a negative impact on your business, having information stollen, especially customer information, can be devastating. A lot of business large and small never recover.
- No one knows how to update it
Especially an issue for smaller businesses who had an outside company build the software for them some time ago. Once the software was delivered and met the business needs, there was no need to maintain the relationship with the developer. The developer moved on to the next project and so the software just kept working and wasn’t maintained. The issue arises though when something needs to be changed with the software to support a new business process.
- Technology dependancies are no long supported
All software is built using various technology dependancies. Whether it be the programming language used, the software frameworks or databases, the list can be quite extensive. All of these technologies typically will get updated and support for older versions doesn’t last forever. An example that many corporate and government departments around the world faced some time ago was the retirement of Internet Explore 6. Many of the online tools and systems that had been built were built with IE6’s many “quirks” in mind. This meant as newer versions of IE were released and legacy software wasn’t updated to support them, major issues were created as Microsoft tried to stop supporting IE6, costing millions around the world to fix.
- The expert users retire
So often in businesses, there is that one or two people who understand the history and reasoning behind how a system or software works. As legacy software ages, it becomes more out of date with modern processes and harder for newer people to learn. When the time comes for the experts to leave the business it can cripple the efficiency of a business in increased cost to server or processes.
- Ageing servers unable to keep running
Servers really aren’t any different from the phones and computers we use everyday. Eventually we should replace them with newer servers that will have newer versions of operating systems and software. When software maintenance is neglected, it can become incompatible with versions of server software or every the computers and phones you might access your business software with. Again, this can really disrupt your business if the computers that run it start to die of old age.
So I should be replacing legacy software now?
There is a question I like to use when people ask when is the right time to prevent long term problems: When is the best time to plant a tree? The answer if of course 20 years ago, but the second best answer is right now. When it comes to the obvious eventuality of unmaintained software becoming a legacy system and you didn’t plant the tree when you should have, the second best time to address the issue is right now.
But, before you quickly start spending money and throwing the baby out with the bathwater, let’s take an environmental approach to the solution.
Reuse, recycle and reduce
While legacy software can often not be updated, very often some or most of it can be salvaged in some way. If the software isn’t too old, perhaps it can be mostly updated with the latest versions of dependancies and only the parts that can’t be updated would need to be ported over to an updated app. Porting software code is where it is essentially paraphrased into a newer language or framework, where by saving the key business logic without having to completely reinvent the wheel.
When software really is too old to salvage, then there will still be some useful information there to provide a leg up to how to build the replacement. The key to a successful upgrade of legacy software is to do it piecemeal. Break the project down to small deliverables and move the businesses processes over in logical chunks. This requires a robust strategy for how you are going to integrate the data between the two systems or otherwise you will be signing up the business to a painful period of double handling everything between the two systems.