Boring deploys are a feature
1 min
Small, reversible, observable. The most senior thing on my last team wasn’t a system — it was that nobody felt anything when we shipped.
We got there by shrinking the unit of change until a deploy stopped being an event. A pull request that touched one behavior, behind a flag, reviewable in ten minutes, was the default — not the exception we reached for under pressure. Big rewrites still happened, but they shipped as a sequence of small, boring steps instead of one weekend cutover.
Reversibility did more for our confidence than any amount of pre-deploy testing. Every change had an undo that took less time to execute than the incident review that would follow if we didn’t have one. That single property let us deploy on a Friday afternoon without the usual dread, because “roll it back” was a five-minute action, not a war room.
Observability closed the loop: a dashboard that answered “did this change what I expected” within a couple of minutes of shipping, without anyone having to go looking for it. When the answer was no, we knew before a customer did.
None of this is exotic. It’s mostly the discipline to keep changes small even when a bigger change would be more satisfying to write — and the patience to build the tooling that makes “small” cheap instead of tedious.