practice

Definition of Done

The agreed, explicit conditions under which work is finished, which functions as a quality gate only when it is automated and non-negotiable.

Every team has a definition of done; most have an implicit one that varies by engineer and shrinks under deadline pressure. Making it explicit is a start, automating it is what gives it force.

A useful definition names conditions rather than activities: tests written and passing at the agreed levels, contract verification green, security and dependency scans within threshold, observability in place — meaning the change can actually be seen working in production — documentation and runbook updated where behaviour changed, feature flag and rollback path in place, and non-functional targets verified where the change could affect them.

The distinguishing question is what happens when it is not met at the end of a sprint. If the answer is "we ship anyway and follow up", it is a checklist, and the follow-up will be prioritised against new features and lose. If the answer is "the work is not done", it is a gate. The gate is only sustainable if most of it is enforced by the pipeline, because a human checklist under deadline pressure reliably becomes a formality.