The goal of software is to provide value to the business. Businesses evolve and their software must evolve with it. If the alignment between software and business is frictionless then it is not merely a passive part of the organisation but an engine for innovation to allow the business to gain a competitive advantage.
The trouble is that software is rarely a frictionless part of the business, let alone an engine for innovation. Often, existing software is barely able to meet the current needs of the business without failing or requiring constant tactical maintenance. When that happens then software becomes an ever-increasing burden for the business - leading to a slow decline. Left unchecked, this decline will lead to business failure.
The problem is that this decline is often so slow that we become accustomed to it and the true cost of difficult to change, and often defective, software is hidden. We only see that change is already costly and that adding modernisation to that cost is an extra expense. The alternative is much worse! We fail to see that the cost of not modernising is much bigger than the direct cost of building the next feature or the loss in revenue due to a defect.
The ultimate cost to your business is the inability to evolve according to market needs and to innovate to lead the market. It is also related to the cost of attracting and developing the best talent in a very competitive software industry. Businesses must understand this true cost in its entirety and weigh the cost of modernising against the true cost. It is very rare that a truly strategic business plan can forgo investment in the software that enables that business. Ultimately, keeping your software and the ability to change software in the best shape possible must be seen as an investment and not a cost.
“Make the change easy, then make the easy change." - Kent Beck
Kent Beck's advice is as applicable at the highest level as it is at the code level. For software to be a strategic business asset, it must be ready for the next change, and if it is not ready then we must make it ready for that change before making the change. Not working in this way leads to the slow decline that I mentioned earlier and "making the change easy" becomes more and more difficult.
Software modernisation is about remediating the negative effects of a legacy of tactical changes. The negative effects are not only inherent in the software itself, but they're also inherent in people and processes. People, processes and software are inextricably linked in your software development capability. Considering them individually may provide short-term gains but will ultimately fail to make the impact that you need.
A strong software modernisation effort involves creating a holistic understanding of your software development capability. This means that you identify the key measures that you will use to evaluate the current state and the mechanisms for continuous feedback using those measures. You also need to create a shared understanding of Product Strategy, People Skills, Organisation, Processes, Software Architecture, Quality Practices, Build Pipelines, Technology, and Infrastructure. Given this shared understanding we can start understanding the root causes of wasteful activities and plan to eliminate this waste.
Change pushes us to be a better version of ourselves; our technologies, our practices and our businesses. At Codurance, we help you translate change into continuous innovation by providing well-designed and flexible software.
A holistic view will help you plan, prioritise and manage dependencies. While there may be areas that can be addressed in parallel, other areas might be highly dependent on each other. You must also consider the current state and future business direction. For example, an effort to align teams to business initiatives may mean that teams are restructured. However, incumbent systems may reflect the old organisation and therefore require much more frequent cross-team communication that can lead to inefficiencies and frustration. Another example is working to isolate an area of the system that will lead to very little change could prove to be wasted effort. Certain areas will require gradual evolution; other areas can benefit from a much more revolutionary approach.
Some aspects of the strategy will relate to evolving the software architecture so that certain areas can be isolated because they change often. This will require senior software development skills. You will find that this will involve the evolution of people and processes and may require technology and platform updates. It may even require new relationships with suppliers of commodity software. Other aspects of strategy will concern evolving the organisation so that it is aligned to the business goal while minimising cross-team synchronisation.
In short: you may need to run multiple initiatives to address different aspects of your software modernisation strategy. These initiatives must relate to a commonly agreed goal, will require a specific set of people and skills and must remain sympathetic to each other.
In this video, Sandro Mancuso and Mashooq Badar from Codurance are joined by Carl-Gustaf Harroch from Novoda to explore the dependencies between product innovation and a modern tech stack.
Software Modernisation is about ensuring that software is a strategic asset to enable your business and gain a competitive advantage. It is usually necessary when a legacy of tactical changes have resulted in software that is holding your business hostage.
A successful software modernisation effort must remain focused on an agreed goal and continuously seek feedback for progress towards that goal using well thought out measures. It is important to constantly evolve the shared understanding across all aspects of your software capability and review your initiative. Tactical efforts can reap benefits but they should be within the context of an overall software modernisation strategy.
A more concentrated software modernisation effort is only the start to get your software capability back to what it needs to be. In fact, 74% of organisations fail to complete their legacy system modernisation projects. In order to maintain it, you must not revert back to the original operating model. You will need to constantly keep your system well suited to change. That requires that you sustain and further evolve the culture, skills, practices and processes that have resulted from your software modernisation effort.