What is Legacy Software?
We are going to spend the next few posts looking at something we are very passionate about, Legacy Software. So many companies have at least some of their processes working on legacy software, in fact you would be surprised how often we see it being used in business critical situations.
So first of all, what is it? Well, it will have one or more of the following attributes:
- It is no longer be receiving regular updates or scheduled maintenance from the software developers.
- The original developers are not be involved anymore, in fact it is common that it has been through several developers since it was first installed.
- Software maintenance will be ad hoc, fixing critical bugs, just enough to keep it working.
- It will be running on out of date platforms, such as older versions of software languages and libraries and no longer supported operating systems.
- The hardware it runs on may no longer be upgradeable.
- Very few people in the company, if any, understand how it works. It has become a black box that does a job but the knowledge about how it does it has been lost.
Why do companies still use Legacy Software?
The biggest reason is that it still works for the company. Even if it is not perfect the limitations have not yet become bigger than hassle and cost of trying to update to something more modern.
The cost of replacing legacy systems can involve a large upfront investment in money and time. Although the cost of maintaining legacy software can be very high, the payment profile is smaller regular amounts that fit in better with most companies cashflow.
Change is hard, especially when it involves software that is widely used by an organisation. The “if it isn’t broke, don’t fix it” approach is easier.
It is often the case that a direct off the shelf replacement is not available. Even the leap to the most current version of the software in use might be involve losing critical functionality.
What are the risks in using Legacy Software?
Firstly, as the technology stack gets older so does the availability of developers that can maintain the software. Some of the highest paid developers are those who can still code in very out of date languages.
Secondly, the maintenance is often just to stand still, to keep the software working as it does. This is often dead money; no progress is being made.
Every part of the technology stack that is legacy and no longer getting security patches is a risk and that risk increases over time. For example, if the software can only run on Windows XP, then no matter what the state of the security patches of the actual software, Windows XP becomes the weak point.
Performance of unmaintained software tends to degrade over time. The gap to modern software will also widen as new technologies in the software stack often improve performance.
It is hard to justify spending money on legacy software if there is any plan in the future to upgrade.
Technically we will often say that legacy software is a data silo when it is not practical to keep it integrated with other bits of software. The data is in one place (a risk) that can only be manually be transferred to and from other bits of software (human error risk and inefficient).
The 4 Options You Have
It works now, so just keep your fingers crossed!
Keep it all working as best you can by bug fixing as and when they come up. Accept that maintenance costs are going to be high, that the money spent is probably wasted in the long term and that there will be a day when this is just not possible to continue with.
Start from scratch with a modern tech stack taking the best bits from the legacy software and building new functionality that you need at the same time. Although this tends to be intensive for both cashflow and time in the short term it is a very valid route to take.
The hybrid approach between maintain and start again. Keep the current legacy software working and incrementally redevelop parts of it into modern standards. Therefore, over time, the whole software gets updated. This requires a specialised development team who can deal with both the legacy code but also develop to modern standards with modern technologies.
Which should you choose? Well, we really like the incremental improvements approach and would class ourselves as experts in doing just that. It is, however, not always the right answer (for example if you no longer have access to the underlying code) and that is where we would recommend starting the development from scratch. The “do nothing” and “maintain” options are just too short term to be valid ways to approach legacy software.
In the next post we will cover how to start from scratch approach and after that we put up a post on the incremental improvements approach. In the meantime, if you need any help with your legacy software, then please contact us.