Quality & Team

Definition of Done

Foundational

"Done" should mean the same thing for everyone, not "the code compiles on my machine". A shared Definition of Done is the checklist that says the work is genuinely finished: tested, reviewed, secure, documented, observable, and actually working in production. It stops half-finished work from becoming a colleague's problem later.

The most common source of friction and bugs on a team is an unspoken, inconsistent idea of "done". One person means "I wrote the code". The next expects tests, docs, and a working deploy. A Definition of Done makes the standard explicit and shared, so nothing important is skipped and nobody has to guess. It brings together many other guidelines into one checklist.

For a mostly-junior team this is especially valuable. It writes down the standard, so good practice does not depend on experience or memory. Done means done: the user's problem is solved, safely and maintainably, in production.

What 'done' includes

'Done' means the code is written // merged the feature; no tests, no error handling on the fail path,
// no logging, told everyone "it's done"

It looks finished but it is not. The failure path is untested and silent, nobody will know if it breaks, and the next person inherits the missing half. This is how 'done' work causes incidents.

Measured against Done // feature + edge/error cases handled; tests green incl. fail-closed path;
// reviewed; logging/metrics added; works in prod behind a flag;
// the customer's problem is actually solved

Each part of Done is met, so the work is genuinely finished and will not come back as a surprise.

Use it honestly

Self-review checklist

Why it matters: An inconsistent idea of "done" is where half-finished work, surprise bugs, and missing safeguards come from, and each one lands on a colleague or a customer later. A shared Definition of Done makes the full standard explicit and routine. That keeps quality high and predictable even as a growing, junior team moves fast.