Are you having problems with adding new features to your project easily? Are you unable to quickly make significant changes to the project? Maybe you spent a lot of money and aren’t seeing results from the development team?
The developer has their world of code. Every single project is a small world that the developer has created. Every project, every single line of code is the result of the developer’s creativeness, imagination, and understanding of the project’s scope. When you are the god of your project you know it from the first word of the first line right down to the last, you understand what you’ve created and you know what you had in mind when you began. That is why sometimes a creator prefers to do a project from the very beginning rather than first analysing and understanding the creation of some other god. Therefore, every IT Project Manager should consider creating the project from the beginning and allowing creators to realise their ideal vision.
Rewriting from scratch?
Some developers assume that it is easier for the creator to start from the very beginning than to improve something that already exists. They believe that it is more difficult to read code than to write it. Sometimes even the creators have problems understanding their own code, so following up on some other creator’s idea is a more time-consuming, difficult and boring task.
Reasonable arguments that speak in favour of rewriting an application:
The creator finds it difficult to understand the source code
The language of the source code must be changed
The source code has become problematic
The source code is not available
The existing code cannot be compiled from some reason
Debugging has become challenging
It is not possible to adapt the code to a new platform
New changes require rewriting
New techniques require rewriting
New code can fix previous problems
There is no way to figure out how the previous code works
The architecture is going to be changed significantly
The code is bug-ridden and poorly structured
For entertainment and as a hobby
Exercising development skills
Intellectual Property or licensing issues
If the new creator is going to be dealing with the project for a long period of time, and they feel uncomfortable with accepting responsibility for the source code base
Bad reasons for rewriting the code from scratch...
Disliking the coding style
It is not done the way the new creator would have done it
The application is too slow (simply find the bottlenecks and optimise them)
Lack of respect for the previous creator
The app was not written by “me”
Some bad arguments for avoiding rewriting the code from scratch…
Not trusting the creators
Sticking to “If it’s not broke, don’t fix it”
How about refactoring the code?
However, some of the above problems may be solved not by rewriting the whole code but simply by introducing small changes - refactorings. Reusing the work of other creators is difficult but it is not completely impossible. Refactoring is a task which takes more time, but in some cases it is understandable. The following arguments suggest refactoring the code:
No information about the features and legacy code
No information about requirements
Reinventing something that already exists is useless
Re-writing usually takes longer than we expect
Re-writing the code step by step does not impact significantly the user experience
There is no guarantee that the new creator will do a better job than than the previous creator
The new creator may introduce the same problems as the previous creator
The new creator may even introduce new problems to the software
The old code has been already tested, bugs were fixed and the project was improved
Throwing away the previous project requires accepting having wasted the time and money previously invested
The investors are put in an extremely dangerous position since users may move to other products
Suggestions from the professional creators at Netguru
We at Netguru suggest taking into account the myriad of factors listed above, and that rewriting at application from scratch is only one of two options. Refactoring is a viable alternative. There is no good answer for whether to rewrite the application from scratch or to refactor it. It depends on the case being considered. As a professional company, it is important to be knowledgeable about both options in order to identify the best solution for the client. Being professional means facing up to challenges.