What We’ve Learned About Modernizing legacy technology and services

What We’ve Learned About Modernizing legacy technology and services

Our experience with various legacy modernization projects across Ministry of Justice, DWP etc has allowed us to assist numerous departments in updating and modernizing legacy tech/services. We have aided companies in updating outdated applications, moving them to the cloud, and simply improving the underlying code. Although each situation is unique, we have noticed certain similarities present in most legacy software migration efforts. Here are four observations we have made:

Tech teams often face the challenge of "code rescue" - modernizing or migrating legacy codebases. This can involve updating outdated applications, moving them to the cloud, or simply improving the code itself. While each situation is unique, there are some commonalities that tend to emerge in legacy software migration projects.

First, there is always a cost of transition.

This can be thought of like the cost of moving to a new apartment - even if you find a no-fee place, there is still a cost involved in physically moving your belongings. In software development, the transition cost is typically around 10-20% of the first month's work. This includes activities such as becoming familiar with the codebase, setting up the new development environment, and aligning with the team on priorities and workflow. It's important to consider this transition cost and determine whether the return on investment is worth it.

Second, problems will not go away overnight.

Imagine you are a doctor in the emergency room when a patient arrives with a critical condition. You must quickly assess the situation and take action to stabilize the patient. You focus on the most pressing issue, which is often the heart, as it is the foundation for all other systems. As you work to stabilize the heart, you may become aware of other problems that need to be addressed, but you must prioritize and tackle the most pressing issues first.

Improving legacy code can be like performing surgery in the emergency room - you need to prioritize and address the most pressing issues first. Even if you have a skilled team working on the project, there may be other issues that arise during the process. It's important to have a trusted partner to guide you through this process.

Third, assessing the quality of the existing code is a critical.

It can be tempting to jump right in and start coding, but it's important to take the time to understand the codebase first. This can be done through a quick assessment to get a general sense of the code, or a more detailed analysis. By understanding the current state of the code, you can make informed decisions about what needs to be migrated and what can be left behind.

There are 2 methods to assess legacy code:

  1. The quick “red flag”, “yellow flag”, “green flag” method. This involves a few hours of time, to get an overall gut feel for the overall code quality. We’re not writing code here and we’re not basing any final software migration decisions on it. Rather, it’s an initial first dive into the code so that we can find out what we are dealing with. Following the quick and dirty assessment, a more detailed assessment might make sense. And sometimes, the initial assessment is good enough. It’s very easy to quickly assess code that is really good, and it is equally easy to assess code that is really bad. Code that’s ‘so-so’ takes longer. Also, how much time you spend analyzing the existing code should depend on what you are trying to learn from it. Ask the team what goals they have and what their objectives are, so that you can determine how much time to spend digging into existing code.
  2. The “spot check” method. This is a bigger investment yet sometimes needed. Identify key functionality that is critical to the future success of your business and review parts of the code. Here, you ideally want to make a list of high, medium and low priority areas of the code base to migrate.

Finally, it's important to have a plan in place

for maintaining the code once it has been migrated. This can involve regular code reviews, testing, and monitoring to ensure that the code remains stable and effective.

In summary, modernizing or migrating legacy codebases is a complex process that requires careful planning and execution. By considering the cost of transition, being prepared for ongoing issues, thoroughly assessing the existing code, and having a plan for maintenance, tech teams can successfully navigate the challenges of "code rescue" missions.

If you are looking for legacy migration services or want to learn how this can benefit your business, contact us