Refactoring in Small Teams

Abstract code gradient artwork

The rollback plan should exist before the rollout plan is approved. We wrote the migration twice: once to learn, once to ship. Caches are easy to add and surprisingly hard to remove.

A small example

A boring deploy pipeline is a feature, not a lack of ambition. Naming things well saved us more time than any framework migration. The fastest query is the one you never send, but the second fastest has a good index.

The fastest query is the one you never send, but the second fastest has a good index. Most production incidents start as a small assumption nobody wrote down.

Getting started

Naming things well saved us more time than any framework migration. Most production incidents start as a small assumption nobody wrote down. Latency percentiles tell a story that averages politely hide. Every retry needs a budget, otherwise it is just a slower outage.

  • Alert on symptoms, not causes
  • Measure p95 and p99, not just the mean
  • Delete dead code the same week
  • Pin versions, update on purpose

We wrote the migration twice: once to learn, once to ship. Every retry needs a budget, otherwise it is just a slower outage.

What didn’t

The fastest query is the one you never send, but the second fastest has a good index. The best architecture diagram is the one the new hire can redraw from memory. Small pull requests get real reviews, large ones get approvals. Security is mostly about saying no to defaults that were convenient in 2010.

The fastest query is the one you never send, but the second fastest has a good index. Most production incidents start as a small assumption nobody wrote down.

Most production incidents start as a small assumption nobody wrote down. Small pull requests get real reviews, large ones get approvals.

Comments

2 responses to “Refactoring in Small Teams”

  1. Sofia Avatar
    Sofia

    Great write-up. The part about the trade-offs was spot on.

  2. I tried this last week and can confirm it works.

Leave a Reply

Your email address will not be published. Required fields are marked *