Guide

Owners do not treat tests, monitoring, and docs as "nice if there is time." For anything that can fail in production, done includes a way to tell that it works and a way to undo it. That is the bridge into production ownership.

You do not need a novel for every change. You need the next on-call — often future you — to not start from zero.

LayerMinimum bar
CorrectnessTests for the risky paths; edge cases named
OperabilityLogs, metrics, or traces that answer "is it working?"
RollbackFlag, config, or revert path understood
KnowledgePR description or short note so the next person is not archaeology

Trade-off

Ship skeletal vs polish forever. Owners bias to shipping with a clear follow-up list and owners on those follow-ups. Infinite polish that never reaches users is not quality — it is fear. Shipping a critical path with no metric and no alert is not speed — it is gambling.

Walking through the same feature

Same request from a PM: "Let users export their billing history as CSV." A junior implements the happy path, opens a PR, and marks the ticket done at merge. Guidance fills the gaps — that is appropriate. See engineering levels. An SDE2 clarifies limits, ships with a metric and a flag, verifies in production, and says done when users can actually export.

MomentJunior-ishSDE2 ownership
Ambiguous reqBuilds the happy path onlyClarifies limits and failure modes
MergeTicket → DoneFlag on, verified, monitored
Partial failureWaits for a bug ticketNotices the metric or user report, drives the fix
Deadline riskSlips Friday quietlyRenegotiates Thursday with options

Export works for accounts with under 10k line items. At 50k lines the request times out at 30s. An owner either ships async before calling it done for all users, or ships sync with an explicit product limit ("last 12 months or 10k rows") documented in the UI and support macros. Shipping sync with a silent timeout for large accounts is unfinished — even if the demo looked great.

Common mistakes

  • CI green equals done. Users never saw it.
  • Silent timeout for the large-account path. Demo-sized data is not the outcome.
  • Polish that never ships. A follow-up list with owners is quality. Endless delay is fear.

Check yourself

The export PR merged. The flag is still off. Is it done?

No. Users cannot export. Verify in production before you say done.

50k-row accounts time out at 30s. You shipped sync with no documented limit. Finished?

No. Ship async, or name the 10k-row limit in the UI and support macros.

Key takeaways

  • Done includes tests, a pulse in production, a rollback, and a note for the next person.
  • SDE2 vs junior on the same feature is end-to-end outcome care, not coding speed.
  • Ship thin with owned follow-ups. Do not ship a critical path with no alert.

Further learning

Next: proactive ownership.