The Scrum framework consists of Scrum Teams and their associated accountabilities, artifacts, events and rules as defined in the Scrum Guide.
Definition of Done (DoD) definition
- The Definition of Done is the commitment for the Increment.
- The Definition of Done is a formal description of the state of the Increment when it meets the quality measures required for the Product.
Definition of Done (DoD) purpose
- At the end of a Sprint an Increment MUST be done and usable meeting the Scrum Teams Definition of Done.
- Because a cornerstone of the scrum framework in agile is to ‘always have a product that you could theoretically ship,’ it is important for the team and Product Owner to have a Definition of ‘Done’ or what criteria is necessary to consider user features or functionality in a state of finality. [Coaching Agile Teams. Lyssa Adkins.]
Definition of Done benefits
- A Good Definition of Done provides :
- Guidance on the specific Patterns to be implemented in Code.
- Communicates to the Development Team about the Quality Standard needed.
- A shippable Increment is created by the end of the Sprint
- A Good Definition of Done guides the Developers :
- a way to express the coding standards to address and proven technical debt
- clear understanding of the quality expectations of the team
- The Definition of “done” helps guide the Developers in knowing how many PBIs it can select during Sprint Planning.
Incremental approach
- Delivery of “Done” insures that there is always a useful version of working product available.
- The Developers tries to produce a done usable and potentially shippable and releasable Increment and piece of working software at the end of each Sprint.
- On the other hand, finishing their tasks does not necessarily mean they will create a releasable Increment because they may miss some tasks for converting the selected Product Backlog Items into a done Increment (respecting the Definition of Done).
Definition of Done (DoD) and Transparency
- The Definition of Done creates Transparency by providing everyone a shared understanding of what work was completed as part of the Increment.
- If a Product Backlog item does not meet the Definition of Done, it cannot be released or even presented at the Sprint Review.
- Instead, it returns to the Product Backlog for future consideration.
Definition of Done (DoD) and Standards
- If the Definition of Done for an Increment is part of the standards of the organization, all Scrum Teams must follow it as a minimum.
- If it is not an organizational standard, the Scrum Team must create a Definition of Done appropriate for the Product.
- The Developers are required to conform to the Definition of Done.
Definition of Done concept
- Definition of Done is a shared understanding of expectations that software must live up to in order to be releasable into production.
- Definition of Done is a concept with a set of requirements that should be applied to a feature in order to be called as complete.-
- Definition of Done is a fundamental concept of Scrum which creates a common understanding of when work is complete, helps Developers understand how many Product Backlog items they can select for each Sprint, and increase Transparency.
- In addition, it can be considered as a development process and can be contained many things such as quality criteria, metrics, non-functional requirements, etc.
- The Definition of Done is a shared understanding of what done means and guides the Developers in knowing how many Product Backlog items it can select during a Sprint Planning.
Definition of Done and Acceptance Criterias
- The difference is that there is one Definition of Done for the product and is common for all Features but there is a separate and specific Acceptance Criteria for each Feature.
- Passing Acceptance Criteria would be an item of the Definition of Done.
- On the other hand, Acceptance Criteria or Conditions of Satisfaction contains a list of scenarios that should be passed to ensure that the feature is working as expected.
- Note that satisfactory tests for each PBI are named acceptance criteria that passing it could be one part of the Definition of Done.
Definition of Done creation
- If the Definition of “Done” for an Increment is part of the conventions, standards, or guidelines of the development organization then all Scrum Teams must follow it as a minimum.
- If the Definition of “Done” for an Increment is NOT part of the conventions of the development organization then the Developers of an Increment must define the Definition of “Done.”
- If there are multiple Scrum Teams working on the system or product release, the Developers on all Scrum Teams must mutually define the Definition of “Done”.
Definition of Done evolution
- As Scrum Teams mature they expand to include stringent criteria for higher quality in the Definitions of “Done”.
- The definition of “Done” describes the work that must be completed for every Product Backlog item (PBI) before it can be deemed potentially releasable.
Definition of Done practice
- Definition of Done, the team makes it into congruence with the Product Owner, and definition of done is used to keep the meaning of ‘done’ consistent and unambiguous to all.
- Feature’s done or completeness can be explained through the following statements :
- When everything is done based on the Definition of Done
- When there is nothing more to do before it can be used by the end users
- When it is potentially releasable and shippable
- The Item is usable by the end user.
- Finishing Product Backlog Items is an important concept in Scrum.
- It emphasizes that all team members should have a common understanding of done.
- Therefore, the Definition of Done is introduced as part of the Scrum and defines all required work that should be completed before the end user can use the product and nothing else remain before its release.
- The Developers agreement is not enough about an Item’s completeness because they may forget doing some tasks for having a usable and releasable Feature.
Scrum Board and Definition of Done
- The ‘done’ column holds tasks that have been completely developed, tested or verified, and integrated into the product and require no further attention.
- The ‘done’ column should not hold incomplete tasks, but ones that are truly completed. [Lean-Agile Software Development: Achieving Enterprise Agility. Alan Shalloway, Guy Beaver, James R. Trott.]
Definition of Done impediment
- If during a Sprint, the Developers finds out that a problem outside of their control blocks impacts them from doing all of it work, they immediately raise the issue to the Scrum Master as an impediment.
Definition of Done example
- A Few Good Criteria to include in the Definition of Done are :
- Unit tests passed.
- Code reviewed Completed.
- Acceptance criteria met / Acceptance test passed.
- Functional tests passed
- Non-Functional requirements met.
- Integrated into a clean build
- Automated regression tests pass
- Feature level functional tests passed
- Meets compliance requirements
Definition of Done (DoD) and Scaling Scrum
- If there are multiple Scrum Teams working together on a product, they must mutually define and comply with the same Definition of Done.
- When multiple Teams are working on the same product they could (not should) have one Definition of Done for all Teams or each Team could have its own one or something between these two extremes.
- The rule here is that their outputs should combine and integrate continuously and at the end of the Sprint they should deliver just one integrated Increment as all Teams’ output so all Definition of Done should not violate each other.
Definition of Done responsibility
- Who is responsible for creation of the Definition of “Done” ?
- The expected answer is the Developers.
- But, some Scrum materials declare that the Scrum Team creates DoD, what is the correct answer ?
- The Scrum Guide says the Developers of the Scrum Team must define a Definition of “Done” appropriate for the Product.”
- So, the correct answer is the Developers.
- From my point of view, Developers owns DoD on behalf of the whole Scrum Team.
- So, it is possible to say “Scrum Team creates DoD”, however “Developers creates DoD” is more precise.