In this article we will discuss Legacy Systems and Code Modernization which is often the Achilles’ tendons of organisations that are undergoing large scale Digital Transformation. From there, we will go on to discuss some high level strategies for dealing with this modernization.
Legacy systems and the associated code that runs on them can be categorised in a number of ways. Generally, they exhibit some key characteristics such as:
The applications are undocumented and are using vendor specific implementations (such as frameworks, utilities and tools). They are connected through IO on the same machine or set of machines.
Quite often changing these systems will be difficult because there are deep architectural issues within the code. Software Coupling is rife and it is difficult for software developers to understand any single part in isolation.
There may be little or no automated testing with these systems. This compounds the internal design issues somewhat since it becomes even harder to change them.
They may sit within teams or departments that have taken over ownership but can’t easily provide access to them for various security or operational reasons. They will often be deployed in a live or near live environment and perhaps their development environments have been poorly maintained.
It’s just one big ball of tar! Unfortunately all of the above contribute to an unhealthy application that is just one big mess. There is no modularity so trying to upgrade or improve parts is very risky.
An example of a jumbled mess of concerns on the left and a neat well abstracted design on the right
Legacy code isn’t an issue if it isn’t causing any problems. Just because something is old does not make it inadequate, especially if it is serving a purpose, but what are some of the problems that legacy code can cause? Here are a few:
According to a study by Forrester, 75% of North American and European enterprise IT budgets are expended on ongoing operations and maintenance, leaving a mere 25% for new investments. Simply put, this considerable cost is eating up businesses ability to innovate and bring new products to market. This leaves your business exposed to threats from competitors simply because your applications are so cumbersome!
It’s quite possible that simply not upgrading or being able to easily change your legacy systems means that your day-to-day business operations will be impacted upon. This is obviously a cause for concern, especially in larger companies with interconnected departments that have a high reliance on IT in order to carry out their work and create revenue.
Quite often organisations can have intricate business process rules wrapped up in large fragile code bases. Because their systems are undocumented this can pose a problem since if they are to be replaced, they are difficult to test. Added to this, security violations and or data protection problems can emerge because of this ‘black hole’ of knowledge.
With outdated systems or even code that isn’t de-coupled from outdated systems, legacy systems can create staff resourcing issues. Older technologies may have fewer people available that understand them and companies may have to rely on vendors to provide expensive maintenance contracts or consultants.
In a recent survey of insurance firms by BT Global Services, the firm’s researchers reported that although legacy systems were affecting the ability of insurance firms to generate new business, only 42% said they would rather adopt new systems. Some 37% said they planned to upgrade old systems.
In order to scale your Digital Transformation projects successfully you are going to need to come up with a plan for your legacy systems. One tool that helps you plan is the Gartner TIME Model:
Using the Gartner TIME model technical business leaders can come up with a way to decide how important it is that they upgrade their systems. The system uses two factors to evaluate a code base or system that is deemed legacy:
Gartner provides a handy ‘quadrant’ which includes these two factors and some action plan outputs:
Gartner’s TIME Model for legacy systems appraisal
The model explains 4 states that organisations can decide to categorise legacy code into in order to help them decide what to do with it:
The next section will talk about modernization of legacy code and the approach that can be taken.
Digital Transformation (the business transformation of people processes and technologies) is not something that can be achieved in one fell swoop. In order to mitigate risks, organisations need to take it on a step-by-step basis. In fact, as part of a sound business strategy, being able to improve small parts of complex system at the low level will (over time), yield significant advantages over simply trying to make too many large changes at the same time.
One case study that highlights this point is that of Team Sky that used ‘Marginal Gains’ to win the Tour de France within 5 years.
So let’s a review a process for making small improvements to our code and see can we start cashing in on those Marginal Gains!
When we decide to modernize code the first thing we need to do is to audit the code and try and work out how hard modernization might be. This should be done by a skilled engineer who has experience in building large and complex decoupled systems. Typically, they will have lots of skills in refactoring and improving legacy systems and will be able to make a judgement on the viability of improving/modernising it.
There are 3 key areas to consider during this audit.
Once the code has been audited and a decision has been made to begin to Modernize the code, the following steps can be followed:
The above steps can be repeated in small iterations, lasting only a few days at a time. The trick is to make very small changes and to keep adding automated tests as you go. You should also enlist some users to help with testing at this point.
A great book to read to help keep you on track when refactoring legacy code is Working Effectively with Legacy Code (by Michael Feathers)
In this article we have discussed a hot topic in today’s Digital Transformation landscape; Legacy Systems!
We have seen how firstly organisations can define what state their applications are in (by using Gartner’s TIME model). This will help them get an idea of where to focus and which route to take (Eliminate, Migrate, Tolerate or Invest). Then we discussed an effective approach to modernising applications which involves taking small steps and thoroughly testing work.
Most organisations see Legacy code as a thorn in their side. It’s worth remembering that every organisation has legacy code so whatever operational cost they are experiencing it is offset by the fact that competitors are having to deal with exactly the same.
Organisations can realise that Legacy Code actually represents an opportunity to enhance the structures supporting their IT systems. By taking a proactive approach to, and modernising assets with high business value, they will begin to see pay-off later down the line that will manifest in more business flexibility; enabling greater competitiveness.
Request a call back and let's see if we are a good fit...