Owning projects
Launch readiness
Merged to main is not launched. Walk monitoring, rollout, rollback, docs, and a named owner before the flag goes to 100%.
"Merged to main" is not launched. Before you flip the flag for everyone, walk a checklist. Product launch tactics (timing, messaging, packaging) live in launching. Your job as eng owner is the technical and operational go/no-go.
If you cannot articulate the rollback, you are not ready.
| Area | Questions |
|---|---|
| Monitoring | Dashboards for the new path? Alerts on error rate, latency, queue depth? |
| Rollout | Percentage plan? Feature flag owners? Who can kill switch? |
| Rollback | One-step disable? Data migrations reversible or forward-fixed? |
| Docs | Runbook, support macros, README for the next on-call? |
| Support | Support briefed? Known limitations listed? |
| Comms | Internal announcement? Customer-facing notes if needed? |
Canary: 1% → 10% → 50% → 100%, watching the dashboard between steps. Sleep on a canary overnight when the blast radius is wide. Morning metrics beat midnight optimism.
Walking through an export launch
Flag admin_csv_export. Canary on internal employees first. Metrics: export success rate, p99 job duration, object-store 5xx. Rollback: flag off (in-flight jobs finish; no new ones). Support brief: "Max 100k rows in v1; larger = existing async ticket path." That paragraph in the launch ticket prevents three days of confusion.
After launch, spend 30–45 minutes: what nearly killed us, which estimate was most wrong and why, what we will do differently. Then share outcomes with metrics, not vibes: "Export UI is 62% of weekly admin exports two weeks post-launch; p99 job time 14 s; zero Sev-2s." Decision-makers remember legible wins.
Sean Goedecke's point that an un-celebrated launch is not a ship is harsh and useful. Budget time for the demo, the dashboard screenshot, and the note to your skip-level. Decision-makers cannot read your diff. They can read a demo, a metric moving, and a short "what changed for users." End each milestone with a 5-minute recording or a GIF: "Milestone 2: internal users can export. Next: self-serve UI."
Before you context-switch:
- Name the steady-state owner (often still you, sometimes the team on-call).
- Link runbook, dashboard, flag, and known limitations from the service README.
- File leftover polish as tickets with priority.
- Tell support what "done" means and how to escalate.
Projects that ship without a hand-off become zombie features: half-owned, noisy, and blamed on whoever touched them last.
Common mistakes
- Launching without alerts or a rollback. You are not ready.
- Never closing the loop with metrics. The org cannot register the win.
- Starting the next project before steady-state ownership is clear.
Check yourself
You cannot say how to disable the feature in one step. Launch?
No. If you cannot articulate rollback, you are not ready.
The flag is at 100% and nobody owns the runbook. What is missing?
A named steady-state owner and links from the service README. Otherwise it is a zombie feature.
Key takeaways
- Launch means monitoring, rollout, rollback, docs, and a recognized finish.
- Canary 1% → 10% → 50% → 100%. Sleep on wide-radius canaries.
- Share metrics, not vibes. Then name who owns it in steady state.
- Un-celebrated launches do not count as shipped in a large company.
Further learning
How to ship projects at big tech companies (Sean Goedecke)What I think about when I'm lead engineer on a projectseangoedecke.comBack to the map: driving projects to launch.
Related
Driving projects to launch
Kickoffs, status, dependencies, unblocking, launch checklists, and a finish decision-makers recognize as shipped.
Owning your code in production
On-call, alerts, runbooks, and the loop that makes you trustworthy — and better at building systems that survive users.
Launching products and features
Launch tiers, betas, checklists and measuring whether a launch worked.