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.