I can’t say enough good things about How to Survive a Ground-Up Rewrite Without Losing Your Sanity. Having been party to a few projects like this, a lot of this advice rings true to me. Let me quote you the good parts!

You must identify the business value of the rewrite:

The danger of unicorn rewrites:

Delivering value incrementally is of the greatest importance:

But “big bang” incremental delivery is accidental waterfall:

Always keep failure on the table:

I really wish I’d thought of applying “The Shrink Ray”, an idea borrowed from Kellan Elliot-McCrea:

Engineer your migration scripts as idempotent, repeatable machines. You’re going to run them a lot:

Finally, you should fear rewrites, but developing the skill to pull them off is huge:

Whenever I talk to people with monolithic applications, slow-running test suites, and an urge to do something drastic, I want to mind-meld the ideas above into their brains. You can turn code around, but it takes time, patience, and a culture of relentless improvement and quality to make it happen.