As digital transformation accelerates, companies of all shapes and sizes are left with little choice than to update their app portfolios for the modern era
And while consumers might notice aesthetic changes like swish new websites or online services, developers know those shifts aren’t so pretty behind the scenes. Rather, organisations will be facing complex technical challenges that will need a serious rework of current systems to solve.
Deciding what you’re going to do with each of those clunky apps can be a daunting first step. Organisations often find that there are thousands of highly diverse applications and services on the list. Air France-KLM, for example, has been working on modernising 2,000 applications. Larger organisations could have even more, especially after many years of mergers and acquisitions.
Putting together a plan for what to modernise is confusing when you take into balancing both the business and technical goals behind the project. We should consider whether an application is fit for purpose, rather than whether it should become the fastest and most advanced it could possibly be. There’s no point buying a Ferrari to do the neighbourhood school run.
To simplify this process, we’ve found that there are seven different ways of modernising any given app. By design, these seven dispositions all begin with the letter R so that we can label them “The Seven R’s.” Here they are, ordered from least to most effort, risk, and value: Retain, Retire, Rehost, Replatform, Refactor, Rewrite, and Replace.
As someone wise once said: if it ain’t broke, don’t fix it. If an app is old but still serving its purpose, keep and don’t touch the app for now. That is, make no changes and keep things running as they are. This is probably the default option for most apps in your portfolio, as doing nothing can be a wise strategic choice when there are likely other apps that more urgently need your attention.
Sometimes the need for an app simply runs its course. There’s no need to update it – simply decommission any end-of-life applications. In this case, your analysis often finds that the application is used very little, has been superseded by another application, or is no longer profitable to run. A good example here is the Minitel service, once the world’s most successful online service. Once the Internet gobbled up all of “online,” Minitel was finally retired after 32 years of operating in June 2021.
Often called “lift and shift”, this is repackaging and moving existing applications with as few changes as possible. This is sort of like just copying an application and all its data to a new computer. Typical examples are cloud and data-centre migrations or the process your company has been through while virtualising its data centre.
Now we get into the meat of what might typically be considered modernisation. Here, the application remains the same, but there are significant changes to the underlying technology stack and platform (runtime, framework, middleware, operating system) of your app. This can require changes to the actual application itself, but they should be very minimal.
In this type of modernisation, you’re finally changing your application’s code deliberately. When you refactor, you redesign and rewrite parts of your application to take advantage of new platforms and capabilities. This is distinct from rewriting in that the functionality of the application stays the same and is not updated: just the “internals” of the app are changed.
The name says it all: sometimes it’s time to start from scratch and write a new application. Your organisation still needs what the application does (for example, registering for fishing licences or scheduling ice machine maintenance), but the old application no longer solves the problem well and is challenging to maintain. Instead of just duplicating the same screens and workflows but with new fonts and colours, this type of modernisation gives teams the chance to reimagine how people interact with the application and how it functions. The only real option to modernise a digital user experience is usually to rethink and rewrite it from the ground up. There is nothing like throwing a bit of fairy dust on the frontend code to radically ameliorate usability and ergonomics.
In this scenario, you still need the functionality that the application provides, but you no longer find value in the control and customization abilities that come from owning the application. Instead, you outsource it by replacing it with a commercial off-the-shelf (COTS) application, often a Software-as-as-Service (SaaS). The same “outcomes” are achieved, but you now use a third-party or outsourced option.
Such transformations are straightforward for highly standardised systems like mail or file servers.
For non-standard, end-of-life systems, this is often the most effort-intensive option. Transitioning your highly customised Enterprise Resource Planning (ERP), Customer Relationship Management (CRM), Human Resource Management (HRM), or e-commerce system to another, for example, will likely be a daunting task. The effort is usually worth it, however, as all that customisation, over the years, becomes a boat anchor that’s causing all your problems.
Throughout the process of modernisation, it’s important to keep the key business goals behind the process front of mind. Each technical approach can be vouched for – but in the end, the goal is to streamline and redesign your systems. Thinking about what you want that to look like – rather than opting for the fastest or easiest route – will leave you with a smoothly functioning new environment to support your organisation into the next phase of the digital era. Working to this vision, informed by both business context and technical knowledge, will make modernisation an exciting, rather than daunting, task.
About the Author
Michael Coté, Staff Technologist, VMWare, studies how large organizations get better at building software to run better and grow their business. His books Changing Mindsets, Monolithic Transformation, and The Business Bottleneck cover these topics. He’s been an industry analyst at RedMonk and 451 Research, done corporate strategy and M&A, and was a programmer. He also co-hosts several podcasts, including Software Defined Talk. Cf. cote.io, and is @cote on Twitter.
Marc Zottner is the Global Application Modernisation Lead at VMware. With over 14 years of experience in the industry, Marc has led on numerous projects for more than 60 customers across 12 countries in the finance, software, retail and energy sectors amongst others. His main interests are application modernisation, architecture, security, platform as a service, user experience, front-end technologies, open source software, and Java enterprise.