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

The reflex answer is a rewrite, and it’s usually wrong. Most growth problems live in a few specific places: a query, a job that runs too often, an architecture call that was right at the time. I find them by measuring rather than guessing, fix them in place where possible, and rebuild only the part that has to be rebuilt. You get the findings in writing, ranked by what each fix costs and what it buys you, so the spend follows the evidence.

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.

This is one shape of an existing product, picked up and moved forward. The full walkthrough, from first call to launch, is on the services page.

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

Ivan Tse, founder of Nerd Tower

Let's build it

I'm taking on new projects. Tell me what you're working on and I'll tell you how I'd build it.

Get in touch

I read every message myself.