✍️ Essay
✓ Link checked
Free
Intermediate
Why we picked it
This is the canonical warning against throwing away working code and rebuilding from scratch, told through Netscape's rewrite that handed years to competitors. Read it before you convince yourself the messy MVP needs a clean-slate v2: it names the exact trap you are about to walk into. Treat it as a starting point, not gospel, since sometimes a rewrite really is right, but the burden of proof is on you.
From
Joel on Software
by Joel Spolsky
~10 min read
- Old code that looks ugly is usually carrying years of hard-won bug fixes and edge-case knowledge you cannot see, and a rewrite silently throws all of it away.
- It is harder to read code than to write it, which is why the instinct to rebuild almost always feels stronger than it should.
- Most of what tempts you toward a rewrite (architecture, slow spots, cosmetic mess) can be fixed incrementally through refactoring instead.
Open
joelonsoftware.com →
📄 Article
✓ Link checked
Free
Intermediate
Why we picked it
If Spolsky tells you not to rewrite from scratch, this gives you the alternative: replace the old thing piece by piece while it keeps running, so you never take a big-bang risk. Fowler's strangler fig metaphor (a new system grows around the old one until it can stand alone) is the practical middle path between suffering the MVP and blowing it all up. A good next read once you have decided some part genuinely needs replacing.
From
martinfowler.com
by Martin Fowler
~8 min read
- You can modernize a system incrementally by building new features alongside the legacy code and gradually routing traffic away from the old path, instead of a risky all-at-once cutover.
- Investment and returns arrive gradually and visibly, so you can stop, ship, or change course at any point rather than betting everything on one launch.
- A facade or proxy in front of old and new lets you shift functionality over piece by piece while the product stays live for users.
Open
martinfowler.com →