Rewrite vs Refactor has always been a question every software faces at some point in time which could be because of many reasons. This question usually arises after few years from the first version of the software release. To objectively decide on what is best for the software one should analyze on the following points.
- Are there quality problems with the software with respect to performance
- Is there a need to scale the software because of the increase in volume and currently your software does not support it.
- Is your software’s design difficult to be enhanced to add more features and you are required to add more features rapidly
- It is becoming more and more difficult to trouble shoot the software
- Are there functional issues with the software and it is becoming more and more difficult to fix it and one fix is opening up other issues
- Is your software technology outdated and by using the new technology lots of the future development can benefit significantly
- Is your current technology stack under a threat of becoming obsolete?
- Is your current technology stack becoming a hindrance for your sales?
- Are you anticipating any ground breaking functional changes to the software that is going to have impact on most of your code base
- Is there a clear spec for the software
- Is the business logic of your software easy to be reproduced quickly
- Are there enough test cases or resources with complete knowledge about the software to test it
- Can the market wait for the next version to be released
- Is there a sales advantage for the newer technologies for example RIA
- Is your refactoring cost going to be almost same as rewrite
If the answer to most of the above questions is “Yes” then you should consider Rewrite.
As you can see there is in fact a big risk for rewrite as the time for stabilization of your new software can be high and especially when you don’t have enough documentation to reproduce and test the software. However, most of the softwares are left with no choice but to rewrite because it becomes a hindrance for growth. One of the best practices any software should follow is to consciously plan for a refactoring at definite period of intervals. This will decrease a lot of risk and also keep the software in best quality.
Latest posts by Jothi Rengarajan (see all)
- Predicting ROIs to a Microservices Migration – Sowing Seeds to Success - May 22, 2019
- The 4 Pillars of Microservices: Process – The Fulcrum of Strength (Part 1) - May 22, 2019
- Saga – The key differentiator of Microservices - April 26, 2019