Many companies depend on legacy software for some of their most business-critical processing. But useful as they are, those applications can hold companies back from being able to keep pace with rapidly changing marketplace demands. The culprit is the technical debt of their legacy apps.
Technical debt makes software difficult and risky to change, which increases the cost of maintaining legacy software systems. Dealing with technical debt in legacy applications can eat up substantial portions of a company’s IT budget and schedule, diminishing the organization’s ability to create new features and capabilities. In one survey of C-level corporate executives, 70% of respondents said that technical debt severely limits their IT operation’s ability to innovate.
Yet, many companies hesitate to commit themselves to modernizing their legacy apps. They often take the attitude that since their legacy systems are still functioning and doing the job they were designed to do, there’s no need to invest the time, money, and organizational effort that would be required to update them. But is that really the case? What are the true costs of maintaining legacy systems that may be approaching or beyond their technological expiration dates?
How Technical Debt Impacts the Cost of Maintaining Legacy Software Systems
TechTarget explains the concept of technical debt this way:
“Software development and IT infrastructure projects sometimes require leaders to cut corners, delay features or functionality, or live with suboptimal performance to move a project forward. It’s the notion of ‘build now and fix later.’ Technical debt describes the financial and material costs that come with fixing it later.”
As with financial debt, technical debt consists of two distinct components: principal and interest. Both must be paid off before the debt can be retired. In the financial sphere, the concepts of principal and interest are well understood. But how do those terms apply to technical debt?
The Principal on Technical Debt
The principal on your technical debt is the amount you’ll pay to clean up (or replace) the original substandard code and bring that application into the modern world. According to one research report, companies typically incur $361,000 of technical debt for every 100,000 lines of code in their software.
Just as with financial debt, you must eventually pay off the principal on your technical debt, and until you do, you’ll pay interest on it.
The Interest on Technical Debt
The interest on technical debt consists of the ongoing charges you incur in trying to keep flawed, inflexible, and outmoded legacy applications running as the technological context for which they were designed recedes further and further into the past.
It’s an unavoidable cost of maintaining legacy systems. And those interest charges can be substantial—according to InformationWeek, U.S. companies are spending $85 billion every year on maintaining bad technology.
Specific Legacy Software Maintenance Costs
According to Gartner, by 2025 companies will be spending 40% of their IT budgets on simply maintaining technical debt. But that’s not the worst of it. The direct financial cost of maintaining legacy systems is just the tip of the iceberg. There are other impacts on your company and its IT organization that may be even more significant. Let’s take a look at some of them.
According to a survey by Stripe, out of a 41.1-hour average work week, the typical software developer spends 13.5 hours, or almost a third of their time, addressing technical debt. When developers were asked how many hours per week they “waste” on the maintenance of bad legacy code, the average of their answers was 17.3 hours. That means that developers typically believe they are “wasting” more than 42% of their work week on legacy software.
The fact is, most of today’s developers just don’t like working on legacy code or dealing with technical debt. They’re usually far more interested in working with modern programming languages, architectures, and frameworks.
For many of them, spending significant amounts of time dealing with older, technically obsolescent applications can seem mind-numbing, unproductive, and frustrating. When Stripe asked about issues that negatively impact developers’ morale:
- 78% named “Spending too much time on legacy systems”
- 76% cited “Paying down technical debt”
The natural result of low morale on a development team is decreased productivity and increased turnover. With the U.S. currently experiencing a shortage of more than a million software developers, the costs for finding, hiring, and training replacements for unhappy employees can be significant.
Not only does technical debt impose a direct financial cost on companies, but there is a very real opportunity cost as well—the time devoted to maintaining legacy applications is time that’s not being spent to develop the innovations that can propel a company forward in its marketplace. A recent Deloitte report highlights the importance of this issue:
The accumulation of technical debt adversely affects an organization’s ability to innovate and employ new technologies … which makes it harder for the organization to retain its market share, secure clients, and stay on track with market trends.
Other Indirect Costs
There are other costs of maintaining legacy software systems that, while perhaps not easy to quantify, are nevertheless quite real. These include:
- Slow test and release cycles: Technical debt makes legacy apps brittle (easy to break) and opaque (hard to understand), which lengthens upgrade/test/release cycle times.
- Inability to meet business goals: The inability to quickly release and deploy innovative new applications or features can cripple a company’s ability to meet its marketplace goals.
- Security exposures: Legacy apps were not designed to modern security standards, and neither were the quick fixes, patches, and ad hoc workarounds that typically have been incorporated over time.
A report from McKinsey sums up the negative impact of technical debt this way:
“Poor management of tech debt hamstrings companies’ ability to compete.”
Overcoming the Challenges of Maintaining Legacy Applications
Continuing to spend your company’s time and resources on keeping “venerable” applications running is a losing proposition—the cost of maintaining legacy software systems will only increase over time. Instead, the key to maintaining the value these applications have for the organization is to modernize them to bring them into today’s technological universe.
That means transforming the typically monolithic structure of these apps into a cloud-native microservices architecture. The result will be a codebase that has minimal technical debt, and that can easily be adapted, upgraded, and integrated with other cloud resources.
But the modernization process is not without its own challenges. The average app modernization project costs $1.5 million and takes about 16 months to complete. And after all that investment of time and resources, 79% of those projects fail. Speaking of companies that have not had the success they hoped for with their application modernization efforts, McKinsey reports that:
“In our experience, this poor performance is a result of companies’ uncertainty about where to start or how to prioritize their tech-debt efforts. They spend significant amounts of money on modernizing applications that aren’t major contributors to tech debt, for example, or try to modernize applications in ways that won’t actually reduce tech debt.”
This assessment points toward two critical elements of a successful legacy app modernization program:
- You must choose the right modernization strategy – it’s not enough to simply migrate legacy apps to the cloud. Instead, true modernization involves refactoring monolithic legacy codebases into microservices.
- To know where to start and how to prioritize your modernization efforts, you need comprehensive, quantifiable data concerning the complexity, risk, and technical debt of your legacy app portfolio.
Let’s look at this data requirement in a little more detail.
Getting the Data You Need for Legacy App Modernization Success
As the McKinsey report indicates, without good data that allows you to assess which of your legacy apps need to be modernized, and in what order, your modernization efforts are likely to fall short. But asking developers to manually assess a legacy application portfolio that may contain multiple applications, some with perhaps tens of millions of lines of code and thousands of classes, is rarely a viable approach.
The task of unraveling the functionalities and dependencies of a large, non-modularized, monolithic codebase is simply too complex for humans to perform effectively in any reasonable timeframe. As one IT leader told McKinsey,
“We were surprised by the hidden complexity, dependencies and hard-coding of legacy applications, and slow migration speed.”
Instead of a manual approach, what would serve you best is the use of an automated, AI-enabled analysis platform that can perform the required static and dynamic analyses of your legacy apps in a fraction of the time your developers would require. Such a solution will also provide the information you need to quantify the expected ROI of your modernization program.
The vFunction platform offers all those features and more.
To see first-hand how vFunction can help you modernize your legacy apps, schedule a demo today.