One recurring challenge that CIOs & CTOs have is talent retention: in the face of continuing and accelerating innovation in technology, and continued lowering of barriers to entry for those who want to get involved in technology, finding and retaining people who are professionally satisfied with looking after so-called ‘legacy’ technology is increasingly difficult.
The most visible impact is inexorable rising cost of change, which CIOs usually deal with in the traditional way: by outsourcing or offshoring the work to locations where similar talent can be found, but cheaper.
But this tends not to solve the problem: rather, the ‘hard’ bits of the legacy applications are ignored in favour of writing new code that the current maintainers can understand. Fear, uncertainty and doubt then creeps in when any of the ‘legacy’ software needs to change. The end result is increased complexity and no sustainable reduction in cost of change.
Only a few years ago, mainframes were considered to be legacy applications. Today, applications written 7+ years ago are the new legacy applications in most organisations, but ostensibly any application whose original architects and maintainers have moved on are now ‘legacy’.
With all the focus on new, exciting technologies, what technical strategy should be adopted to maximise valuable existing functionality, retain and engage development talent, and allow legacy architectures to fit seamlessly and sustainably into new, innovative (cloud/mobile-based) architectures?
Legacy applications have a significant advantage over new applications: they reflect what is effective and useful from a business perspective (even if their implementations do not reflect what is efficient). With the benefit of hindsight, it is possible to look at these applications through a modular lens, and define architectural boundaries of change that can be enforced through technology.
Such an approach can then lead to potential opportunities for decomposing complex monolithic applications, optimising infrastructure usage, deploying components onto anti-fragile infrastructure (elastic fabrics), and finally identifying potentially reusable business services and components that can form building blocks for new applications using innovative technologies.
In particular, it allows complexity to be managed, useful working software to be maximised, and talent to be retained, through providing a route to working with new, in-demand technologies.
In defining a technical strategy supporting a enterprise-wide digital strategy, this is a feasible, cost manageable way to evolve the large portfolio of legacy applications that many large organisations have, both from the bottom up, as well as the top down.
In the last few years, there have been significant advances in certain enabling technologies (around modularity, APIs, IaaS/PaaS, containers, HTML, etc) and increased focus on enabling architectural disciplines (like business, data, and solution architecture) that are making such a strategy feasible as part of a medium/long-term plan to address IT complexity.
In short, if firms do not have some strategy for dealing with their legacy technology, they will be unable to compete in the increasingly digital economy that is impacting almost every industry out there.