Definition of Done | Best Practices Guide
Create a Definition of Done that ensures consistent quality and shared understanding. GitScrum enforces DoD with checklists and workflow rules.
7 min read
The Definition of Done (DoD) is a shared checklist that defines when work is truly complete. Without a clear DoD, "done" means different things to different peopleβleading to incomplete work, quality issues, and surprises late in the process. This guide covers creating and maintaining an effective DoD.
DoD Purpose
| Without DoD | With DoD |
|---|---|
| "Done" varies by person | Consistent standard |
| Incomplete work shipped | Quality assured |
| Last-minute surprises | Predictable delivery |
| Quality debt accumulates | Standards maintained |
Creating a DoD
Building Your Checklist
DEFINITION OF DONE TEMPLATE
βββββββββββββββββββββββββββ
CODE QUALITY:
βββββββββββββββββββββββββββββββββββββ
β Code follows team standards
β No linting errors
β No compiler warnings
β Self-documenting or commented
β Code reviewed and approved
TESTING:
βββββββββββββββββββββββββββββββββββββ
β Unit tests written and passing
β Integration tests passing
β All existing tests still pass
β Edge cases covered
β No known bugs
DOCUMENTATION:
βββββββββββββββββββββββββββββββββββββ
β README updated if needed
β API documentation updated
β User documentation updated
β Release notes drafted
β Comments for complex logic
DEPLOYMENT:
βββββββββββββββββββββββββββββββββββββ
β Merged to main branch
β Deployed to staging
β Smoke tests passing
β No regression in staging
β Feature flag configured (if used)
ACCEPTANCE:
βββββββββββββββββββββββββββββββββββββ
β Acceptance criteria met
β Product Owner accepted
β Demo-able to stakeholders
β Meets performance requirements
β Accessible (if applicable)
COMPLETE:
βββββββββββββββββββββββββββββββββββββ
β All above checked
β Ready for production
β No follow-up tasks needed
β Team agrees it's done
Customizing for Your Team
DOD CUSTOMIZATION
βββββββββββββββββ
START SIMPLE:
βββββββββββββββββββββββββββββββββββββ
Initial DoD (new team):
β Code reviewed
β Tests passing
β Merged to main
β PO accepted
Start with essentials.
Add as team matures.
MATURE TEAM:
βββββββββββββββββββββββββββββββββββββ
Advanced DoD:
β Code reviewed (2 approvers)
β Unit tests (>80% coverage)
β Integration tests
β Security scan clean
β Performance benchmarks met
β Documentation updated
β Deployed to staging
β E2E tests passing
β PO accepted
β Release notes drafted
More rigorous as capability grows.
CONTEXT-SPECIFIC:
βββββββββββββββββββββββββββββββββββββ
Add based on your needs:
Regulated industry:
β Compliance review passed
β Audit trail documented
Mobile app:
β Tested on target devices
β Accessibility verified
API team:
β API docs updated
β Breaking changes documented
β Versioning correct
Customize to your context.
Applying the DoD
In Sprint
DOD IN PRACTICE
βββββββββββββββ
DURING DEVELOPMENT:
βββββββββββββββββββββββββββββββββββββ
Developer uses DoD as checklist:
βββ Working on task
βββ Feature code complete
βββ Run through DoD mentally
βββ "Did I write tests?"
βββ "Is it reviewed?"
βββ Self-check before claiming done
βββ DoD = personal quality check
BEFORE MOVING TO DONE:
βββββββββββββββββββββββββββββββββββββ
Task can only move to Done when:
βββ Every DoD item checked
βββ No partial completion
βββ Team can verify
βββ "If it's not done done, it's not done"
βββ Strict adherence
IN SPRINT REVIEW:
βββββββββββββββββββββββββββββββββββββ
When demoing:
βββ "This meets our DoD"
βββ Tests passing β
βββ Deployed to staging β
βββ Documented β
βββ Stakeholders see quality
βββ Confidence in completeness
TEAM ACCOUNTABILITY:
βββββββββββββββββββββββββββββββββββββ
Whole team responsible:
βββ Anyone can question "is this done?"
βββ Code reviewer checks DoD
βββ QA verifies DoD items
βββ Collective ownership
βββ Quality is team responsibility
DoD vs Acceptance Criteria
Understanding the Difference
DOD VS ACCEPTANCE CRITERIA
ββββββββββββββββββββββββββ
ACCEPTANCE CRITERIA:
βββββββββββββββββββββββββββββββββββββ
Story-specific requirements.
"What does this feature do?"
Example story: User Login
Acceptance Criteria:
βββ Valid credentials β dashboard
βββ Invalid credentials β error message
βββ 5 failures β account locked
βββ "Forgot password" link works
βββ Specific to THIS story
DEFINITION OF DONE:
βββββββββββββββββββββββββββββββββββββ
Universal quality standards.
"How do we verify any work?"
Definition of Done:
βββ Code reviewed
βββ Tests written
βββ Documentation updated
βββ Deployed to staging
βββ Applies to ALL stories
BOTH REQUIRED:
βββββββββββββββββββββββββββββββββββββ
Story is complete when:
1. Acceptance Criteria met
(Feature works correctly)
AND
2. Definition of Done met
(Quality standards achieved)
Missing either = not done.
EXAMPLE:
βββββββββββββββββββββββββββββββββββββ
Story: User Login
Acceptance Criteria: β
βββ Login works correctly
βββ Error handling works
βββ All scenarios pass
Definition of Done: ?
βββ Code reviewed: β
βββ Tests written: β (missing!)
βββ Deployed: β
βββ NOT DONE (tests missing)
Maintaining the DoD
Evolution
DOD MAINTENANCE
βββββββββββββββ
REGULAR REVIEW:
βββββββββββββββββββββββββββββββββββββ
In retrospective, ask:
βββ Is our DoD working?
βββ Any items always skipped?
βββ Anything missing that causes issues?
βββ Should we add/remove items?
βββ Evolve with team
WHEN TO ADD:
βββββββββββββββββββββββββββββββββββββ
Add to DoD when:
βββ Recurring issues from missing step
βββ Team capability increased
βββ New compliance requirement
βββ Quality problems persist
βββ Something should always happen
WHEN TO REMOVE:
βββββββββββββββββββββββββββββββββββββ
Remove from DoD when:
βββ Automated and no longer needs checking
βββ Never relevant (wrong for context)
βββ Excessive overhead, low value
βββ Merged into another item
βββ Keep DoD lean and relevant
DOD HISTORY:
βββββββββββββββββββββββββββββββββββββ
Track changes:
βββ Version your DoD
βββ Date changes
βββ Note why changed
βββ Reference in retrospectives
βββ Living document
GitScrum DoD
Implementation
DOD IN GITSCRUM
βββββββββββββββ
TASK CHECKLIST:
βββββββββββββββββββββββββββββββββββββ
Each task has DoD checklist:
βββ Auto-populated from template
βββ Check off as completed
βββ Visual progress
βββ Can't close until all checked
βββ Enforced completion
TEMPLATE:
βββββββββββββββββββββββββββββββββββββ
Project β Settings β DoD Template
Define checklist items:
βββ Code reviewed
βββ Tests passing
βββ Documentation updated
βββ Deployed to staging
βββ Acceptance verified
βββ Applied to all tasks
WORKFLOW RULE:
βββββββββββββββββββββββββββββββββββββ
Automation:
"If DoD incomplete, cannot move to Done"
βββ Prevents false completion
βββ Quality gate
βββ Consistent standard
βββ System enforcement
REPORTING:
βββββββββββββββββββββββββββββββββββββ
DoD metrics:
βββ Completion rate
βββ Items often skipped
βββ Time to complete DoD
βββ Quality correlation
βββ Data for improvement
Best Practices
For Definition of Done
Anti-Patterns
DOD MISTAKES:
β No DoD at all
β DoD created by manager alone
β Too many items (overwhelming)
β Items routinely skipped
β Never reviewed/updated
β Different for different people
β Not enforced
β Confused with acceptance criteria