Essay · ~10 min read

Things You Should Never Do, Part I

Joel Spolsky · Joel on Software Free Intermediate

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.

  • 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.

It answers 3 questions

  1. We ship fast but our codebase is turning into a mess. How much should a two-person startup care about tech debt?
  2. I built my MVP on no-code but my technical co-founder wants to rewrite it in real code. When is that migration actually worth it?
  3. When is the right moment to stop iterating on the MVP and rebuild it properly, and how do I avoid the second-system rewrite trap?

Read with it

  1. The permission slip to recruit users by hand, do things manually, and deliver 'insanely great' experiences to your first few... paulgraham.com Essay · ~15 min read Do Things That Don't Scale Paul Graham
  2. Michael Seibel, who ran YC, makes the blunt case for shipping something almost embarrassingly simple and learning from real... Y Combinator Startup Library Video · ~10 min video How to Build an MVP Michael Seibel
  3. Concrete, field-tested advice on deciding which debt to pay and how to justify it. Orosz and Franco share practical rules of... The Pragmatic Engineer Article · 20 min read Paying down tech debt Gergely Orosz and Lou Franco
  4. Video · ~13 min How to Plan an MVP Michael Seibel (YC)
  5. If Spolsky tells you not to rewrite from scratch, this gives you the alternative: replace the old thing piece by piece while it... martinfowler.com Article · ~8 min read Strangler Fig Application Martin Fowler
  6. This is the canonical explanation of what a reviewer actually means when they flag your inherited code as risky. Fowler frames... martinfowler.com Essay · About a 10 minute read Technical Debt Martin Fowler
eChai Partner Brands The partnership →