How should one perform a major refactor in parallel with continuous delivery of new features?

by alexw   Last Updated June 30, 2020 01:05 AM

Suppose you've been hired to perform a major refactor/rewrite of a large project that is already in production and maintained by a very small team. The scope of this rewrite is to the point where you can't really do small, behavior-preserving transformations - there are simply too many long-chain interdependencies to keep it running smoothly from one commit to the next.

This team is constantly adding new features at the request of the client, racking up more technical debt even as you pay that debt down in your rewrite. At some point, you'll want to integrate these new features, but they will also have to be heavily modified to get them to work with your shiny new implementation.

When should these new features be integrated - as they are released, or at the end when your refactor is complete? What can the "feature developers" do to make this process more efficient? What can you the refactor leader do?

Related Questions

Software Development without Continuous Integration?

Updated February 05, 2018 21:05 PM

Continuous Integration and a Massive Refactor

Updated July 25, 2016 08:02 AM