I’m willing to bet you know of at least one large scale technical project that has failed. A project that did not deliver on its grand promises and wasted millions or billions of pounds in development. The reasons for its failure become shrouded in a cloud of tweets and finger pointing, legal teams on all sides engage in combat over who owes who compensation for what, but in the end the project is left in the dust to be quietly forgotten.
Technology products cannot afford to stay still, the landscape is constantly evolving and there comes a point where they creak at the seams, no longer run well in modern environments and end up in painful need of major surgery.
What do you do at this point? Do you throw the old system out, and re-design it, using all the new shiny tools and technologies that are available today? Or do you keep it running like an old classic car, spending more and more on maintenance to ensure it is in fit condition for it’s annual day out in August.
If a product no longer serves a purpose, it should be left to die. For example you might think that an old Coal Power Station no longer has any purpose, and should be wound down and eventually decommissioned in a world where burning coal is no longer an acceptable means of generating electricity. The power station and all its peripheral systems have served their purpose, and although it consisted of ingenious technology of it’s time, all of that dies with it.
Or does it. What if, with a little ingenuity and engineering know-how, the old coal fired power station can be converted to run on sustainably forested logs from Canada, bio-diesel or left over straw from the farmers wheat crops? After all, we still need power. By standing on the shoulders of giants, a new product can be created relatively quickly that is a better fit for the current and future environment it needs to work in. Would you do it?
That is the key question, does re-purposing the old architecture allow you to retain enough of the business processes, relationships, supply chains and customers so that you are not completely starting from scratch? If the answer is yes, then a migration path that solves your biggest problems first offers you clear benefits.
You give your legacy product a new lease of life. You continue to serve your existing customers and new customers in new ways, all the while your application in module by module starts to take advantage of increased scalability, and acceleration of your development process that modern application architectures can offer.
Sure there will be technical challenges. You will have to figure out how to get your legacy UI to play nicely with both new and legacy code, and spend time understanding your most complex and least well documented modules. However, by extending the life of your existing product in a modular way, you will de-risk the process
By targeting your high maintenance legacy modules first, you can begin to reap your return on investment far quicker than if you tried to build your application again from scratch.