Legacy application costs

Vytas Prazarkevicius
4 min readJan 1, 2021

Introduction

Applications based on legacy code exist in most mid-to-large companies. At the company I work we have them too. It is not that difficult to identify those applications. Development teams know them well as they usually require a lot of attention. Yet a deeper look reveals the reasons why we consider those application legacy are different. And they pose different downsides as well as risks.

My motivation for this post is to look at common attributes of legacy applications. What are the costs and risks of not addressing the legacy aspect of those applications?

What is legacy code?

There is a plethora of definitions of legacy code. Below are a few of the most popular:

  • Code which uses no longer supported technology
  • Code without tests
  • Code written by another team than maintaining one
  • Code that has different conventions than ones used by maintainers

Who should care about the application being a legacy?

The most vocal people about legacy applications are developers. Legacy code impacts developers in daily work. Yet, legacy applications impact business as well. Legacy can pose business risks and incur significant costs. I identified 4 groups of people affected by code being legacy:

  • Developers
  • Engineering managers (responsible for organizing work to keep the application running)
  • Clients of the application (usually business people who bear application maintenance costs)
  • Users of the application (business people who use the application to do their work)

Why should they care about code being legacy?

Changes take a longer time

Making changes in legacy code is hard. Changes take much more time compared to well-maintained code. Lack of documentation, poor code structure, no tests, and tight coupling make changes risky. Developers take extra time to gain confidence that nothing gets broken by accident.

Changes causing unexpected application behavior

Changes in legacy code may cause an application to start having unexpected behavior. We call it regression. Developers change the code to add a feature. That code change introduces unwanted application behavior. Sometimes weeks pass before someone notices that the application has bugs. If more changes were added meanwhile, then it is also difficult to track back which change caused it.

We use testing to catch unexpected application behavior when we add some new feature or fix a bug. Legacy projects often lack automated tests. They also lack documentation for testing the application behavior manually.

Application scaling difficulties

Applications used for a long time may need more resources than originally planned. Scaling the infrastructure of a legacy application is usually very challenging.

Imagine a situation where a legacy application consumes all available server memory. We could try to split the application between several servers to gain more resources. If the application architecture is not modular then such a split is not possible. The application needs refactoring first.

Legacy project staffing

Developers usually aren’t motivated to work on legacy code. It takes them a lot of time to understand why an application works the way it works. It may take weeks of reading badly-structured code and reverse-engineering it. And writing code is always easier than reading someone else’s.

Developers also often fear to add bigger changes to legacy applications. There is always a risk of bigger changes introducing unwanted behavior.

Legacy applications often rely on outdated and no longer supported technologies. A company would need to find developers who know such technologies and it doesn’t come cheap. Developers also not keen to learn such outdated technologies. Most of them prefer to learn skills useful in the future. Skills that open opportunities to join new projects.

Developers may also fear to be stuck maintaining projects based on outdated technologies. It is much easier for a company to staff new projects than legacy projects.

What are the hidden costs for business?

Long lifecycle for changes, unexpected application behavior and staffing challenges are the problems that affect development teams. The negative effects of legacy incur additional costs to business as well. These costs aren’t directly visible and often cannot be quantified easily.

Maintenance and Support

Maintenance cost can exceed the original development budget just 3-5 years after release on an application. Research shows that on average the maintenance consumes around 60% of software costs.

Integration and Compliance

Failure to comply with industry regulations could potentially lead to penalties. Recent changes in the GDPR area made it a real concern for most companies and not just ones specialized in regulated industries.

Security

Legacy code can lead to data breaches, which can lead to financial and reputational losses. Cybercriminals are armed with the knowledge of the weaknesses in older systems and those older systems are used to run legacy code.

Lost Business Opportunities

The lack of innovation and development speed can impact profitability and competitiveness. Not being able to meet new customer needs under reasonable time and budget may cause a company to lose business opportunities. In long-term, a company could lose its market share given legacy application is critical to the business.

Organizational Agility and Efficiency

The average efficiency of some processes can increase multifold through automation and modernization. Many manual steps performed by organizations can be either automated or eliminated at all. Think of all those steps business teams perform daily to clean and prepare data. Or the amount of hours those teams need to spend to test a legacy application after some minor change.

Conclusion

I conclude that legacy applications have hidden costs which we often oversee. It was helpful to list those costs as I can use it to analyze individual applications further.

Identification of costs and risks is the first step in managing legacy applications. In my next post, I will explore different legacy application modernization techniques.

--

--