Although now we are in the age of the Internet of Things, Machine learning and other modern tech trends, still there are a lot of companies that have core business applications based on legacy technologies. Generally, the main reason why companies still have legacy applications is that such application is one of their biggest IT assets. They invested a lot of different resources in it, even got used to it but over the time, which in IT industry flies faster than ever, they realize that they are left behind and that they need to speed up the game.
Story of an old horse and carriage
Initially, such applications don't cause many problems, but as the time passes by they become a huge problem for development departments when it comes to maintenance and improvements. Such systems can’t track dynamic changes in business and an increase in the amount of data that must be processed in a shorter time. To illustrate: This is like using the old horse and carriage with tons of material in it and trying to pass a Bugatti. It simply doesn’t work that way anymore.
What is more, there are different reasons why companies end up with complex and hard to maintain legacy application; from compromising on quality to speed up delivery time, high fluctuation of people who worked on the application, lack of code refactoring, etc. As a result, each new feature was developed by adding new code to the legacy application as a base, so over time, this base became larger and more complex. Moreover, such applications aren't developed within clean code standards.
Do you have the means to act like a drunk billionaire?
Modern technologies are interesting to engineers and there is a lack of professionals who know or want to work with outdated technologies. Even when there is an engineer who is to get involved with this, he goes through a long learning period and knowledge acquisition. In most cases, there is no complete technical documentation, so developers must figure functionalities out from the code. Needless to say, this is more difficult with legacy applications and it prolongs the implementation of new features. However, the biggest risk of all is that there is a lack of people who are able to work with legacy applications and thus the risk that there will no longer be anyone who will be able to maintain a core application. In other words, this means that all money that is invested in such core application could be lost investment.
Getting from A to B using highway vs side roads. What’s your pick?
Usually, when the company is looking for external help they are already in 'firefighting' mode which makes outsourcing process more complicated. Apart from that, companies are usually aware of the risks mentioned above and they start to think about it on time but usually, there are some other business priorities and they occasionally give up. It is hard to justify the return on investment in a new application that will do more or less the same thing as the old one. That is why CFO’s usually don’t approve such investments. Actually business and finance people don’t see the problem. IT people see the problem because they have ever increasing challenges to maintain the application and support the business. When business and finance people see the problem that means the problem is out of control because company is probably losing customers who can’t get what they expect. For example, we had one customer with legacy outdated application ready to be redesigned from scratch. Their customer asked them to support different common web browser and not only Internet Explorer. This cross-browser functionality would take about one month of work in regular application but for that customer it was almost year-long complex project in order to make it work. How many customers want to wait for whole year to get such simple improvement? As a result, such projects are delayed until companies don’t find themselves in the situation of keeping their heads above the water and while an old application doesn't start to disrupt the achievement of business goals.
Don’t let it burn.
When this happens, usually, companies are out of business and in financial sense there are not enough resources to modernize such application. Apparently, when they were in a situation to invest in modernization, and that is when they were at the peak of their business growth, they weren’t recognizing a need for that.
As a result, there is no more space to delay the modernization of such an application and for this reason, they outsource it. At Serengeti, we have a lot experience working on such projects, and in the following lines you will find a summary of best practices that each company can and should implement:
Parallel teams Organize two teams; one to maintain the existing application, and the second one to develop a new one.
Bring together different experiences for a joint goal Make each team as a mix of internal and external engineers. Internal ones are those who understand the business domain while external ones will bring their knowledge about new technologies.
Be very clear about the main features Identify what are the main features needed to replace an old application. Slow down the development of new features as much as possible. During parallel development, all new features should be implemented on both, old and new application, and that’s why it is crucial to have a few main functionalities to make parallel development shorter.
Think about microservices Microservice architecture is proven to be good for such projects due to the fact that you can transfer the application part by part.
Look for a partner who is familiar with your business domain As mentioned above, the internal team knows your business domain, but try to find an outsourcing partner that is familiar with your business domain because this development cycle will be much shortened.
There is no doubt that only businesses that are keeping the pace with actual technology developments are those who will successfully overcome the modern business challenges. But for many companies with a long history, it is not always an option to throw away all those applications that grow together with the company and that keep a lot of valuable data.
This is where modernization of legacy applications helps. We have experience and are aware of proven processes that will help one move to the modern application with better user experience and the capacity to process a lot of data. Moreover, there is an improvement in application stability, maintenance is cheaper and it is easier to integrate with different business applications. Besides, steps we suggest can help you to optimize resources, have better scalability and workload. As we previously said, there is a lack of engineers in general, and there is a lack of engineers who are familiar with legacy technologies. The longer companies wait, the adjustment of legacy applications to the modern age is more difficult, and therefore more expensive.
If you are curious about what factors to consider when selecting a consultative outsourcing partner, download this checklist we put together.