When is it worth rewriting a system using new technology?
Grzegorz Papaj, 23 May 2019
There is no one clear answer to the question whether it is better to improve an existing system or create one from scratch using new technology. Every time the answer must be suitable for a specific situation, taking both technical details and business issues into account. When is it better to rewrite the app from the beginning? Find out what needs to be taken into account during the decision-making process.
Usually companies prefer improving their systems instead of building new one. Unfortunately, impossible cases do happen and the software needs to be rebuild from square one. More often than not it happens when the whole system is based on an outdated technology and its maintenance and development are significantly constricted or turn out to be impossible. In such situations it is better for the team of programmers (it can be an outsourced team) to rewrite the system. This way, new solution will be created, with the same (or similar) functionalities, but working significantly more efficiently in modern technical and business environment and smoothly integrating with currently used systems.
What does it mean that IT systems age and when does this happen?
Every team of programmers creating a system knows that there is a big possibility of the software becoming outdated within several years. In such situations the program needs to be rewritten from scratch. When does it happen? Firstly, when the system can’t keep up with changes in business reality. In practice, this means that it is not compatible with the changes in the company’s operating model, other systems or technological solutions and modern concepts (for example it doesn’t support mobile technologies). Often the system that has grown old and requires rewriting was created using on outdated technology. The technology is no longer supported, any existing bugs (security issues!) are not being fixed and it becomes impossible to run it on newer operating systems.
Trends are another aspect, that affects programmers. When newer and more attractive technologies pop up, the developers are no longer interested in older technologies. This leads to recruitment problems and difficulties with maintaining the system.
That’s why the risk of loosing the last employee that is well-versed in given technology is an important factor to consider by a company working with systems developed a long time ago. It can be almost impossible to find a suitable successor in this situation. But even if the company succeeds, it will certainly entail high costs. Such situation is very difficult for the company and should be avoided at any cost.
What to consider during the decision-making process concerning rewriting the old system?
First of all, it is crucial not to make the decision too hastily and to consider all advantaged and disadvantages to reduce the risk of potential threats and pitfalls. Here are few things that need to be taken into account before choosing between rewriting a particular system using new technology or ordering a new dedicated software.
1. Is the system business-wise or technology-wise outdated?
Customized solutions which aren’t actively maintained age over time. If the technology is outdated, the migration will have to happen sooner or later. But there is still a choice between “sooner” or “later”. If the system is failure-free and you have a team who knows the technology used, there is no rush, you can easily start to look for alternatives for future use. But if it’s failure after failure and the last specialist has just resigned, then it is better to immediately start working.
If the system is outdated business-wise but the technology used is still supported, it will probably be better to work within the current software instead of rewriting the system. When problems arise, programmers often blame the technology which was chosen by previous team or original supplier, and is unknown and unclear for them. Nothing could be more wrong. The technology doesn’t create (or solve) problems. The responsibility is always on the people who might make mistakes in design and implementation. So if someone tries to convince you to rewrite the system to a new technology, be careful. It can be sign of incompetence. The first step should be fixing the most important bugs in the system. It will let you analyze whether the modernization is the best option or not. It’s a game where you can lose relatively little and gain a lot.
2. The availability of programmers
Assess suppliers of old and new technology. If there is no problem with recruiting an employee or finding the company which works with given technology, then you shouldn't be worried about it in the future.
If experts are hardly available, then this technology is not a good choice. Well, unless it is new thing – then, it may be worth waiting a little bit, as the markets become teeming with specialists.
Let’s highlight it one more time. Such an evaluation has to be done in the context of the old (current) and new (planned) technology.
3. Evaluate the cost of investment
Before making a decision, check the cost of maintaining the current system and compare it with the cost of building a new application. It is important to consider whether the employees of IT department are able to perform necessary modernization or there will be need for additional programming outsourcing.
Take a realistic time horizon: Do you want to solve the problem for one, five or more years? IT systems are not immortal.
Do not forget that each innovation temporarily disorganizes employees’ work.
4. Does the bias and trends have an impact on you?
Despite semblances, current trends are a common motivation. Is the current system outdated or you just don’t like it for some reason? Do you like some other solution that makes your systems look behind the times? Does the system really need to be rewritten?
Remember that using the newer technologies can be against your interest. Maybe the better option is to make some changes and improvements to the old system.
Sometimes rewriting legacy applications using newer technology is a good idea or even a necessity. But it is a huge investment. Therefore, it’ good to make a decision after a thorough analysis, taking into account current technological and business situation, costs and availability of specialists.
New custom application is usually a tempting option, but sometimes maintaining legacy software is a better option. If the current system is problematic and causes various issues, it is usually worth trying to solve them, even if you plan to rewrite it in the future.
Notice that there are companies specializing in outdated or exotic technologies. It is usually much more difficult to find them in a market dominated by suppliers who work only with new languages and frameworks. Nevertheless, it is worth spending a little more time to make sure, whether you can use their service or not. After all, writing a system from square one is a major investment.