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.

  1. Are there quality problems with the software with respect to performance
  2. Is there a need to scale the software because of the increase in volume and currently your software does not support it.
  3. Is your software’s design difficult to be enhanced to add more features and you are required to add more features rapidly
  4. It is becoming more and more difficult to trouble shoot the software
  5. 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
  6. Is your software technology outdated and by using the new  technology lots of the future development can benefit significantly
  7. Is your current technology stack under a threat of becoming obsolete?
  8. Is your current technology stack becoming a hindrance for your sales?
  9. Are you anticipating any ground breaking functional changes to the software that is going to have impact on most of your code base
  10. Is there a clear spec for the software
  11. Is the business logic of your software easy to be reproduced quickly
  12. Are there enough test cases or resources with complete knowledge about the software to test it
  13. Can the market wait for the next version to be released
  14. Is there a sales advantage for the newer technologies for example RIA
  15. 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.

Jothi Rengarajan

Jothi Rengarajan

Chief SaaS Architect at Aspire Systems
Jothi has exclusively architected more than 50+ SaaS solutions across various domains. She provides strategic and technical direction, helping customers move up the value chain by delivering innovative, scalable, out of box SaaS solutions. Jothi is also the architect of the award winning SaaS Development Framework – Techcello, which has won accolades like Gartner Cool Vendor, Microsoft “Partner of the Year” finalist, SIIA Codie finalist. She is a prolific speaker on Cloud technologies across various technical forums.
Jothi Rengarajan