The year of 2006 - Amazon launches cloud-based services, Microsoft releases Windows Vista. It used to be a golden time for countless systems built on top of Flash technology. You probably smiled to yourself hearing of Flash, but hey, back then companies like Disney or Xerox used to use Flash heavily. Until four years later Apple stopped installing Flash on their Macs, which led to ceasing official support for the last Flash survivors in 2020. That’s how Flash and a long queue of solutions that used it became an unmaintainable legacy forever. What about companies that implemented them in their systems?
What is a legacy system and why should you care?
According to Gartner’s definition, a legacy application is an information system that may be based on outdated technologies but is critical to day-to-day operations.
Apart from tech being no longer supported, there is one more category that falls under so-called legacy. These are systems written in supported yet still rapidly developing technologies. If systems are not maintained and upgraded, then they become a risk as the newly developed libraries or extensions are not compatible with an older version of the language.
Listening to all those stories you could be asking “why should I care”? Well, the answer is simple. You have no guarantee that the software you build today wouldn’t be at risk of becoming legacy tomorrow. In the fast-developing software environment, no matter if you use a licensed or open-source framework, you need to carefully choose your tools and invest in keeping the software updated, maintainable, and refactored. Not to look too far, check what happened to AngularJS - once a star of banking applications, now going through its last support period that ceases in April 2021.
I bet you don’t want to live through the day when your carefully crafted piece of software shares the fate of all those legacy applications. What can you do?
- Invest in solutions that have a big potential of continuation, like well-supported frameworks, with a solid history and big, engaged communities around it.
- Put your effort into maintenance and refactoring. Make regular checks and update your knowledge about the development of used libraries and integrations.
- Modernize to add new functionalities or to redesign whole modules of the application to keep up with growing business objectives.
Why don't companies put effort into software maintenance and modernization?
You might think it’s all about the money. After all, someone already paid for the system at one point in time and is, so to speak, reserved, to do it once again. Obvious as it may sound, that’s not a reason good enough. Just as some of the others we listed below.
If everything works, why bother?
Can you recall the feeling when you finally manage to line up and connect a long and working chain of Christmas lights? No one cares how you did it and whether the power cord is almost touching the tree’s water. What matters is that after you finish, a warm glow would fill the entire room. At least, until the cord actually plunks in the water.
The same story applies to legacy systems. They’re said to be as fragile as a cord of Christmas lights. “Don’t touch unless you want to break!” Meanwhile, as the dust is settling on your dimmed lines of code, your competition uses a more secure database, more suitable backend tech, or implements AI mechanisms under the hood.
It’s a long and demanding journey
Let’s say that you were just sweeping the surface by upgrading library versions. It’s better than nothing, still, it can be not enough. Especially if there are more serious changes in your plan. Most of the upgrades in legacy code touch not only the very heart of the system but also the business processes. You need to prepare for a long and demanding journey that requires remodeling some parts of the system, as well as communicating the change across your organization (and then to the external users if you have them and running smooth and painless onboarding). You can easily imagine that while remodeling is closer to the idea of continuous improvement than to “done and forgot”, software modernization is different - the bigger the previous negligence, the more demanding the project.
People don’t like changes, but the users just hate them
Oh, I know. Those lousy users, keeping their Twitter accounts hot and ready to tell the world how much they hate the change you made in your software. Let’s try to take a look at it from a slightly different perspective. People like what they are familiar with. It makes them feel safe and secure. At home. The phenomenon is called the Baby Duck Syndrome and applied to the design, it shows how much we feel accustomed to certain interface elements from the first time we see them in the app prototype.
Changes in the interface design disturb the fluffiness and make users relearn what they have already learned by heart. Still, it doesn't mean that modernizing your product should not introduce changes to the UI. If you don’t want to get stuck five years ago forever, you’ll need to make redesigns at some point. Just don’t make them a surprise gift. Plan, prepare, pretest first
Why is maintaining legacy the way to go?
The moment you release a system, you breathe a new life into it. Literally. Now you need to (again) give all your strengths to prepare the system for the future. Like with knowledge (or parenting) - what you learn today might be outdated tomorrow but it should not keep you from learning further.
Competitive advantage is what you should see at the end of the tunnel when thinking of keeping your legacy systems up and running fast and secure. And to keep it, you can’t stand still but always be one step ahead by adapting your software to the changing market conditions, tech possibilities, and customers’ needs.
Security and compliance
Unsupported technologies often become carriers for security breaches. The lack of updates and regular maintenance puts data at risk. IBM’s 2019 Cost of Data Breach Report showed how much such a risk is worth. An average cost of a data breach reaches 3.92mln USD. We’ve lived through times when cybersecurity is not a geek’s fad but a vital part of system quality.
And when it comes to data, there’s another variable in the equation - the legal consequences of pulling off the data protection restrictions. In 2018, British Airways leaked personal data from more than 400 thousand customers due to a clickjacking hacker attack. The company was not able to detect it for two months! The insufficient security measures regarding login, payment card, and booking details turned into a fine of 20 million GBP.
British Airways could probably afford compliance. But what about all those legacy systems that could not adapt to data privacy restrictions (GDPR) in 2018 because of the one-time adaptation cost?
Cost and time
There’s no denying that reviewing, rewriting, refactoring and remodeling requires a fair dose of time and money. Just like a vascular surgery you need to pay out of your pocket for because you never exercised. Planning how to keep your application healthy after it’s released on the market is like planning a healthy diet. Everyone should do it, yet so many wait until something hurts.
Now, coming back to money, you would want to think of refactoring as insurance. A few hours a month, or a few minutes with every new feature, can keep your software healthy, maintainable, and ready for new integrations and technologies that can give your business a competitive advantage.
… also in terms of recruitment
There’s one more factor to take into consideration when it comes to costs. People. The older your stack, the fewer people available for hire. Not to mention that according to Stack Overflow Developer Survey 2020 software developers as a professional group tend to learn a new technology every few months. In such a case, chances to end up with a solid in-house team of legacy developers who know every in and out of a stack from 2010 is close to impossible (or at least very expensive).
Not to mention that tampering with legacy requires much more experience and risk management than any other aspect of application development.
Lack of performance
Refraining from software maintenance (“let’s not upgrade as long as it works ok”) will give you a tit for tat. Software is a living organism, and so are the languages and frameworks we use to build it. A gap of several framework versions will be much more difficult to bury compared to a slight version change. As much as re-versioning with every new release might be too much, keeping the core functionalities in shape is vital for the application performance.
If you keep yourself from updating your software long enough, you’ll quickly see that you end up with an old structure, difficult to grow without affecting the entire system. The technology debt taken out by legacy code leads to a lack of application performance as well as a lack of flexibility to improve the solution.
And that’s not the end of the implications. Let’s take Google’s page rank as an example. Slow-performing pages that load longer than 3 seconds on the mobile rank lower and are less visible in the search result. It can translate directly to the business.
Poor user experience
Testing new ideas is strictly connected with the ability to innovate. Companies that gain competitive advantage often experiment by introducing new 3rd party integrations, connecting to APIs, or simply adding new tech solutions to the picture. Some of the solutions businesses recently adapt are those based on big data, machine learning, or AI. Elderly systems often make it impossible to connect with new technologies. One of the reasons is the lack of support for certain new libraries. Another - the monolithic composition that carries an enormous cost of integrating with an external service.
Now, the aforementioned service doesn’t have to be anything super innovative - enough if it’s a fast and commonly adapted solution such as a chatbot. Many businesses can’t imagine to exist without it nowadays. Your legacy system will probably have to do without it. The question is how much behind the competition will it leave your business.
Legacy system costs - key takeaways
When speaking of legacy, we picture a wealthy and frugal land of prosperity. In software, it’s everything but that. The software needs constant support, care, and updates unless we want it to rust in only several months. Industries that need to innovate (such as banking, insurance, or healthcare) dedicate even up to 75% of their IT budgets to maintaining existing systems, according to Applied Computer and Informatics.
We can’t pretend anymore that legacy is only the domain of big corporations and enterprises. Every system becomes legacy the moment its backlog grows empty. The technology debt starts to creep up exposing the system to security threats, lack of performance, poor user experience. Until it numbs it completely... unless you don’t let it happen.
Want to learn more about consequences of leaving your outdated system be? Watch our expert discussion about legacy design and its impact on business.