For a long time, we shipped once a week. Every Thursday afternoon. A single deploy containing every change from the previous seven days. It felt responsible — deliberate, orderly, planned. The kind of cadence that sounds careful when you describe it in a meeting.
It was anything but.
A typical Thursday deploy carried dozens of changes bundled together. When something broke — and something broke often enough — the first question was always the same: "Which change caused this?" The answer was rarely obvious. Rollbacks meant reverting everything, including the fifteen changes that were perfectly fine. Investigations took hours. On-call engineers dreaded Thursdays. The "safe" cadence created exactly the kind of risk it was supposed to prevent.
We moved to one deploy a day. Not because we read a blog post about deployment frequency. Because we got tired of Thursday incidents.
The shift felt uncomfortable at first. More deploys meant more chances for things to go wrong — or so the intuition went. But the math works differently than the gut expects.
A daily deploy carries roughly one-seventh the change surface of a weekly deploy. When something breaks, you're looking at a handful of changes, not a pile. Identifying the cause takes minutes instead of hours. Rolling back means reverting a small, well-understood delta. The blast radius of any single deploy shrank dramatically.
Within a few weeks, the incident count dropped. Not because we suddenly wrote better code. Because when a problem did appear, it was small enough to catch, understand, and fix before it escalated. The fires were still there — they were just matchstick-sized instead of bonfire-sized.
Here's the part we didn't fully anticipate: daily deploys changed how people wrote code, not just how they shipped it.
When you know your change is going out today, you scope it differently. You think harder about what "done" means for a single day's work. Features get sliced thinner. Pull requests get smaller. Reviews get faster because reviewers can hold the full change in their heads.
The feedback loop between writing code and seeing it run in production compressed from a week to hours. Engineers learned faster. Bugs surfaced sooner. The habit of writing small, reversible changes became second nature — not because anyone mandated it, but because the deployment cadence rewarded it.
This is the compounding effect that doesn't show up in a dashboard right away: each deploy gets a little safer because the people making changes internalize the discipline of small batches.
The most concrete improvement was human. On-call shifts stopped being dreaded.
Under the weekly model, an on-call engineer paged at 2 a.m. on Friday was staring at a massive diff, trying to figure out which of thirty changes introduced the problem, while Slack channels filled with speculation. The cognitive load was enormous. The stress was real.
Under the daily model, the same 2 a.m. page comes with a much narrower search space. The most recent deploy is small. The rollback is fast. The engineer resolves the issue and goes back to sleep. That's not a trivial difference — it's the difference between burnout and sustainability.
We started tracking not just incident count but time-to-resolution. Both improved. But the number we couldn't easily track — how much calmer the team felt — mattered more than either.
There's a common framing that treats deployment frequency as a velocity metric. Ship faster, deliver features sooner, impress the board with throughput numbers. That framing isn't wrong, but it misses the more important story.
Deploy frequency is a risk-management lever. Shipping more often, in smaller increments, directly reduces the blast radius of any single change. It makes rollbacks cheaper. It makes root-cause analysis faster. It makes on-call sustainable. It turns "something went wrong" from a crisis into a routine correction.
This is counterintuitive if you come from a world where deploys are scary events requiring war rooms and change-advisory boards. In that world, the answer to risk is fewer deploys, more review, bigger gates. But those gates create batch size, and batch size is where the real risk hides.
Daily deploys are not free. They require investment in surrounding practices: automated testing you actually trust, monitoring that tells you quickly when something is wrong, rollback procedures that work without drama. You cannot just increase frequency and hope for the best.
But that investment pays for itself quickly — not in abstract engineering maturity points, but in fewer incidents, faster recoveries, and engineers who don't flinch when it's time to ship.
We moved from weekly to daily. The deploys got smaller. The incidents got smaller. The stress got smaller. And our actual confidence — not the theatrical confidence of a big weekly ceremony, but the quiet confidence of knowing you can fix anything fast — went up.
Deploy frequency is not about going fast. It's about staying small enough that speed is safe.
Be the first to comment.
0 comments
Loading comments...