Approximately ten years ago, I was employed by a sales company that was keen to embrace the then-current trend of using intricate CRM systems. It was relatively straightforward to comprehend the requirements of the sales personnel, develop a web application to assist with customer management, and create an efficient inventory monitoring system.
It became apparent that an update to the database structure was necessary as the existing software was not compatible with the management software used to manage client and warehouse databases. Unfortunately, this meant that the desired solution could not be achieved. The server was overwhelmed by numerous repeated strings, thus concluding the project.
We implemented a system to include a random string of digits and letters at the beginning of customer names in order to store demographic information. In order to ensure our designs were successful, we had to find a way to include these prefixes, otherwise the management software would not be able to load the data. Unfortunately, since the software’s creators had disappeared, we had no access to an API or supporting documentation, so we had to work through the issue ourselves. Fortunately, we were able to resolve the issue successfully.
When delivering lectures on software development, I often draw attention to a cautionary tale that highlights the potential risks that come with a company’s decision to modernise their infrastructure. While computers have been around for some 50 years, the modern concept of interconnected systems, thorough documentation and clear coding is relatively new, posing a challenge in the fast-paced digital world we now inhabit.
Covid-19 may not have been the initial impetus for change, however it has certainly expedited the process, with lockdowns being implemented across the world, prompting businesses to become more agile, agile and virtual. Many companies are now benefitting from the shift in their operational practices.
What use does outdated equipment serve?
Companies that are willing to undertake a full rewrite of their software and infrastructure are rare for software engineers to come across. Generally, they will need to make use of existing systems and develop or improve upon them. This is when the term “legacy technology” is particularly useful.
It is evident that providing an example is the most effective way to illustrate outdated technology. Interestingly, New Jersey’s over-extended system in the early stages of the pandemic necessitated the state to actively look for COBOL programmers. This is a programming language that is 61 years old and still maintainable and improvable. Nevertheless, no educational institute will replace the teaching of C++ or Python with COBOL.
Generally, businesses are reluctant to abandon their legacy systems and software for three main reasons. Firstly, they may subscribe to the philosophy of ‘if it ain’t broke, don’t fix it’. If the technology is working as intended, then it may be more cost- and time-effective to maintain it, even if there are a few quirks to manage. Secondly, it may be simpler to retain the existing system than to have to educate staff on how to use a new one.
The second justification can be described as a snowball effect. As more data is gathered and the system becomes embedded within an organisation, it becomes increasingly difficult to consider replacing it. It is similar to attempting to transcribe a college notebook that is falling apart and stained with coffee; there is too much valuable information contained within it to justify the effort.
Due to long-standing tradition and the fact that these methods have been officially recognised, tried and tested, and certified as secure, banks and government organisations have been using the same outdated processes for many years. To introduce any new technology, a lengthy clearance procedure would need to be undertaken.
How do we handle outdated equipment?
Unfortunately, there is no straightforward solution. Depending on the circumstances, utilising technology that is decades old could be either easy to adopt or strange and unfamiliar. It may be relatively easy to implement changes when dealing with established legacy technology that has a strong support network. As a friend of mine often states, if more than a hundred people are familiar with it, there is likely a solution to be found on StackOverflow.
Working with technologies less commonly used can be difficult as there are fewer developers who have experience of tackling the same implementation issues. It can become a time-consuming process of reverse engineering, particularly when working with bespoke software developed prior to the early 2000s.
We must consider all available options when making the decision whether to replace existing technology with newer alternatives, or continue with what we already have. There are many factors to bear in mind.
- Costs associated with updating or replacing older devices or software
- In-development time
- Interoperability with existing systems
- The cost of employees’ time spent learning the new program
- The potential dangers and outcomes if something goes wrong
It is not possible to provide a straightforward solution. However, it may become clear during the development process that an upgrade to the existing infrastructure is essential.
It is important to bear in mind that the strength of a system is only as strong as its weakest link. Therefore, having the best front-end developer in the world creating the most advanced application is of no use if the backend is powered by a server with low processing capacity.
Think carefully and analytically.
I would like to share one more story with you before you leave. An acquaintance of mine is a professor at a university which has been slow to update their computers, resulting in many of the older desktops and laptops still running Windows XP.
When the pandemic arrived, the need to switch faculty meetings to Zoom created disruption as the older systems were incompatible. Previously, teachers had only needed to check emails and make reports, so the impact of the changes was sudden and the plan to delay implementation was unsuccessful.
Even if your initial response to your developer’s suggestion of updating legacy technology is to stay with the existing infrastructure, I would still urge you to take the time to thoughtfully consider the issue. Utilising outdated hardware or applications could lead to increased expenditure in the long run.