I mentioned before that a complete rewrite of a complex codebase is not a badge you should wear proudly on your vest – quite the opposite. If you need to be convinced, check out what Callum McKenzie reports from experience:
In hindsight the effort would have been better spent on incrementally changing the code-base. There was a lot of code that just didn’t need changing. Even the idea that a complete rewrite will get rid of all the design problems and half-baked patches isn’t correct: I still screwed up several parts of the design and there are still places where I did something because it was easy-to-write, not because it was the best way to do it. […]
The extra time spent levering new code and even new designs into existing code is far less than the time you spend rewriting all the code that still works.
(Be sure to read the entire post – the above is quoted a little selectively.)
This is not an “I told you so.” I applaud him for consciously making this experiment on a medium complexity codebase to make a judgement, since he wasn’t already convinced, and for posting his results as a data point for me and you as well. Thanks, Callum.