Hybrid rewrite-refactor

By chance I discovered a middle-ground between completely rewriting a software program and laboriously making incremental changes to little effect.

The third alternative is to start an entirely a new project implementing the ideas/improvements in mind … without the encumbrances of the old project’s architecture. At the end of this time-boxed period of fresh development, there is often a more straightforward opportunity to take those learnings and apply it to the old project, improving its architecture in the process.