What I wish I'd known about rewrites
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.