Application Modernization vs Building App from Scratch — Choosing the Lesser of Two Evils
In the article we discuss the difference between application modernization and application rewriting and explain in which cases this or that option should be chosen.
In a dynamically changing software industry it’s just impossible to know all technology stacks, since they are constantly updating, and this process seems to be endless. And actually it is, let’s just take into consideration the past decade! There is a variety of technology stacks that have seen the world, each of them has its basic features and is applied for specific purposes. Now, if an application was developed with a currently contemporary stack, it won’t be a big deal to make some changes in the code. But it should be taken into consideration that some time later the stack, application was built with would become obsolete and would give a way to more recent technologies, so making adjustments in this app may turn out to be a real challenge. So what options do we have if there is a necessity to make changes in the already existing app? Let’s discuss application modernization and rewriting and try to figure out which one fits you better.
Option 1: Legacy Application Modernization
If you consider requesting legacy application modernization services (refactoring) — you should know that this process presupposes transformation of software’s inner structure, which does not affect its behavior and aimed at better understanding of the written code. This technique allows to make improvements to an application on the fly, so further updates may be implemented easier. There is a necessity to bear in mind the absence of possibility to change technologies and frameworks completely when you deal with refactoring. Meanwhile, the possibility to make adjustments using more contemporary technologies during the application modernization process still remains.
Pros of Application Modernization
- Fits Any Software Architecture
It doesn’t matter if the application is monolithic or modular — refactoring may be applied to both of them.
- Gradual Updating
After you finish one piece of work, get down to another, you can take things slowly. Such an approach helps to preserve the stability of a legacy system you are working on.
- Relative Flexibility
An issue might be revealed in only one part of a legacy system, so developers may choose to refactor this problematic segment only.
- One Codebase
There is no need to create an additional codebase if you choose an option of legacy app modernization.
Since you already have the written code and there is no necessity to build an app from scratch, costs for modernization are relatively low.
Cons of Application Modernization
- Not a Universal Solution
Sometimes the issue is not about the structure, but about functionality. In this case refactoring is powerless, and it’s better to pay attention to a rewriting option.
- Extensive Skill Set Required
If you deal with refactoring, you have to be ready to face plenty of complex patterns and ambiguities, so developers working on the project should have a lot of expertise.
- Obsolete Technologies
Dealing with refactoring is normally equal to dealing with an old tech stack, so it may be a real challenge to find developers that are ready to work on such a project.
- There’s No Escape from Testing
It’s obvious that after refactoring the app should have the same functionality and meet the same business needs as before. And when there are hundreds of lines of old code, making correct adjustments turns out to be a real challenge. Therefore testing is an obligatory point for successful application modernization.
Option 2: Legacy Application Rewriting
If we consider rewriting, during this process developers create absolutely new code, which is completely different from refactoring. Also, in case of building an application from scratch, changes affect not only the inner structure, but the functionality of the whole system.
Pros of Application Rewriting
- The Absence of Limitations
You are creating a completely new application, what limitations can be here? If you decide in favour of a rewriting option, there are no limits imposed by the previous structure. It’s possible to consider other technology stacks that would have been impossible to implement in case of refactoring, and this is a big plus.
Dealing with lines of someone other’s old code, sometimes not of the highest quality — is it what you want to do? In case of building an app from scratch, developers that didn’t create the initial code would be able to complete such a task much easier, so this problem becomes irrelevant, which is another important advantage.
- Old Mistakes are Kept in Mind
Rewriting an application allows you to evaluate flaws and errors committed in the legacy system, which allows you to avoid them in the future version.
- New Opportunities
A decision made in favour of rewriting may open new market opportunities. A new market, new users, new technologies — all it becomes more real in case you decide in favour of application rewriting.
Cons of Application Rewriting
Time required for recreation of the legacy application is one of the most significant disadvantages of rewriting. Dealing with rewriting without the maintenance of the current app is like to make a present to a competitor of a year head start. So if you want to deal with this option, good strategic planning is essential.
- Lack of Updates
Users do not receive frequent updates in case you are focused only on rewriting, which may lead to a decreasing level of users’ retention.
- Only Better or at Least Equal
Releasing an application with less number of features and worse functionality makes no sense, since your users do not expect any disappointments from the new version. But you wish not only to conquer the new market, but keep old users loyal as well, don’t you? That’s why the necessity to maintain the quality is a priority.
Costs for recreation of the legacy application is derived from disadvantage #1 you have to accept — time required for rewriting.
So in Which Favour Should I Decide: Application Modernization or Rewriting?
Ok, let’s draw a parallel with the old building, and it’s necessary to make a decision considering its fate. Should it be just modernized or it’s better to bulldoze the place flat and build it from the ground up? It’s obvious that an architect will assess the real condition of the building and will make a decision on the basis of all technical evaluations. The same thing is with applications — it’s necessary to take into consideration all the factors that may impact the final decision. Of course, for the majority of developers the option of rewriting is much more attractive since there is no need to deal with the legacy code written by another specialist. But it’s necessary to perceive the situation from both points of view: developer’s and business’s.
The key factor here is a technical debt of the application. When there are hundreds lines of convoluted code, that makes the project almost impossible to work with, or if the technologies that had been used for the app are absolutely obsolete, it makes zero sense to deal only with modernization. That’s why it’s necessary to evaluate the project from all sides to make an informed decision and not to waste time on useless actions.
Technologies and stacks are changing, the programmers’ skill sets are also. And sooner or later it becomes necessary to make changes and improvements, especially if we speak about long-playing projects. But which option of these two described above to choose — depends on what exactly you want to gain from the application. And to make an informed decision it’s vitally important to assess all the aspects of the existing legacy application. If you are considering legacy app modernization or rewriting but don’t know where to start, please contact us, our team will help you to make the right choice.
Originally published at xbsoftware.com.