All Case Studies Design Development Interviews Our Way Project Management

The Pros and Cons of Rewriting the App From Scratch

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? As a product owner, you might want to rewrite the application from scratch. Take a look at the possible advantages and disadvantages of such a solution and make a wise decision.

Developer as creators?

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...

  • Ugliness
  • Disliking the coding style
  • Laziness
  • 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.

New Call-to-action
Follow Netguru
Join our Newsletter

Scaling SaaS
READ ALSO FROM Project Management
Read also
Need a successful project?
Estimate project or contact us