This resource first appeared in issue #11 on 21 Feb 2020 and has tags Technical Leadership: Software Development, Technical Leadership: Migration
Avoid Rewriting a Legacy System from Scratch by Strangling It - Nicolas Carlo
Because the value of the code is what was learned from writing it rather than the code itself, when it comes time to grow from earlier maturity stages to the next, the recommendation for from other sectors is to migrate away from the earlier code, not to refactor a proof of concept until somehow becomes production quality. (See also Keavy McMinn’s recommendation to throw away code from a proof-of-concept “spike” in her second blog post, or this from Will Larson and his book “An Elegant Puzzle”). Here, the author proposes a specific approach, similar to that Will Larson uses: phase out particular key modules of functionality one piece at a time, replacing them with the new pieces. In some cases that’s easier than others - if your original code is very tightly coupled, the amount of refactoring you might have to do to make that possible might not be worth it.