2023-06-14 · Implementation

Lessons from rewriting a legacy jQuery dashboard

We replaced 8,000 lines and shipped fewer features than planned.

Introduction

A postmortem on a strangler-fig migration: what we froze first, what we rewrote first, and the three regressions nobody saw coming.

Why this keeps coming up

Every Implementation conversation eventually lands on the same tension: what is comfortable for the team today versus what the project will need in a year. Neither side wins by argument alone.

A way to think about it

  • Defaults outlive intentions — design them deliberately.
  • Decisions are cheap to make and expensive to communicate; budget for the second part.
  • Disagreement is data. Write down what would change your mind.

What I would do

Start smaller than feels useful, write the reasoning in the commit or the RFC, and revisit it on a calendar date rather than a feeling.

Closing thoughts

Taste in Implementation is mostly memory. Collect yours on purpose.