The first version did its job: it got you customers. Then the customers changed what the software has to be, and the build that was right for the launch is wrong for the load.

  • Pages that get slower every month
  • Timeouts on your busiest days
  • The query someone warned you about
  • Manual steps that made sense at ten customers
  • An infrastructure bill growing faster than revenue

Before anyone rewrites anything

The reflex answer is a rewrite, and it’s usually wrong. Most growth problems live in a few specific places.

  1. Measure

    I find the real bottlenecks by measuring rather than guessing: a query, a job that runs too often, an architecture call that was right at the time.

  2. Fix in place

    Where possible the fix happens inside what you already have, and I rebuild only the part that has to be rebuilt.

  3. Spend on evidence

    You get the findings in writing, ranked by what each fix costs and what it buys you, so the spend follows the evidence.

Where I’ve done this

I’ve seen both ends of this. My own Little Memory grew past a million saved entries on infrastructure that had to grow with it, and I’ve built inside systems at the other extreme of scale, like Twitch’s.

Also: iOS apps · Web apps · An existing product · Fractional work · All services

Tell me what you're working on

I've got room for a few new projects. Write to me and I'll reply with how I'd approach it. I read every message myself.

hello@nerdtower.com