The first effect of outdated software we want to highlight is perhaps the most obvious one; cost. There are several ways in which outdated software can lead to higher maintenance and operational costs. This is an example of the problems we categorize as operational challenges; problems which arise while simply maintaining functionality as-is.
A) Some software requires specific hardware
Some software has been written to be executed on specific hardware. This can be anything from a Point-Of-Sale device to a mainframe. Issues arise when, after a certain time, this hardware fails and needs to be replaced. Finding spares for older equipment can be a difficult and costly process, and code tailored specifically for certain devices limits the possibilities of transplanting the software unto more modern hardware or cloud environment.
B) Finding personnel capable of working with outdated software stacks can be a challenge
Software stacks like programming languages and semi-customized off-the-shelf systems require specific expertise to create functioning, performing, secure software. The availability of engineers with the right skillset to support a chosen software stack is therefore of vital importance to a companies’ ability to maintain software written on that stack.
Trends in software development change rapidly, so the current generation of engineers might not be as able to work with an older software stack as the previous generation was. Finding engineers capable of working with an older software stack can get to be a challenge after some time, as governments and large companies still running COBOL software are finding out. As the pool of skilled engineers decreases, rates increase.
C) Code complexity tends to grow over time
Most business software is never finished. As time goes on, feature changes or additions, bug fixes and changes in coding style can increase the complexity of a system. After years of changes, the increased complexity of code can steepen the learning curve for new developers, and can make executing changes take longer. Increased complexity also increases the chances of bugs being introduced
in new changes, and can lengthen the testing process, leading to increased time-to-market.
D) Knowledge will have gotten lost
One often overlooked cause of increased maintenance costs in older software is the loss of knowledge about that system. At the inception of a piece of software, some people within the company tend to know exactly what the software does, both from a business perspective and a technical one. Those people know all the quirks and features, and the reasoning behind their existence. Unless an extensive effort is made to convert all this implicit knowledge to explicit knowledge, and the documentation is continuously updated, knowledge will get lost.
The architect who designed the software might leave the company, or the developers who know every part of the code by heart. Documentation might have gotten lost. Losing knowledge about the working of software increases the time it costs to resolve bugs, and to build new features.