No matter the framework, approach, or methodology used, applying validation steps throughout the entire process would be extremely beneficial for all software development processes. Let’s make the Definition of Done into a potent tool for ensuring inherent quality.
Definition of Done
Definition of Done is an underestimated mechanism to guide the development team not only towards completing a user story but from the very beginning of the idea through the actual delivery and acceptance by the customer. Here is a new approach to applying Definition of Done to every step of the development process. I’ll demonstrate how to establish standards for excellent output across the board.
Not High-Quality?
The representation of poor quality is identical, regardless of the way we run the project. Low quality means delays, bugs, and rework. The quality of the deliverables at any stage of the process is now something we take for granted. Okay, so it’s not. We have to construct it. As soon as we learn about the initial concept, we need to start ensuring the quality of the final product, and we need to keep checking our choices as we go.
Application of Definition of Done
It turns out that creating the algorithm and solving the problem are not the most difficult aspects of software development. Organizing the work within the constraints of your environment is the biggest challenge. Whatever the methodology, the dependencies are the greatest obstacles. It becomes even more difficult to handle when the team is not always aware of their responsibilities. By using the Definition of Done at every stage of the process, the team can work with complete assurance. Between the product, design, development, and testing, trust is increased. Whether or not the team is cross-functional, these quick validations will significantly lower the risk of bottlenecks and improve the team’s capacity for self-organization. Everyone must have completed their assigned tasks.
Product Backlog
Consider a Scrum team. If the sprint’s input is lacking, unclear, and poorly organized, we cannot expect a working increment at its conclusion. On purpose, we are not discussing backlog refinement, but a definition of ready or requirements review can assess how well the user stories have been described. A few requirements that must be satisfied before the sprint planning are listed below.
Definition of Done for Product Backlog
- Before the Sprint begins, user stories are created.
- The User Stories have been given enough information, specifics, and mockups.
- Realistic acceptance criteria are present in user stories.
- Each release assigns a priority to user stories.
- Before the Sprint begins, the team reviews the User Stories.
- User Stories are given a priority for each sprint.
Acceptance Criteria
Many teams have found it difficult to adequately write the acceptance criteria for user stories. Typically, this is a result of inadequate training and a lack of awareness of the importance of Acceptance Criteria. The cost of the development can be drastically reduced with the use of appropriate acceptance criteria.
Definition of Done for Acceptance Criteria
- Acceptance Criteria must be present for every User Story.
- Requirements that are both functional and non-functional must be defined by acceptance criteria.
- Testable acceptance criteria that are not dependent on implementation are required.
- Before the developers begin working on the User Story, they must be written.
- Acceptance standards must accurately reflect the viewpoint of the customer.
- Test oracles can be used in place of acceptance criteria.
- The criteria for acceptance confirm that “It Works as Intended” and not “It Works as Coded.”
Sprint Planning
The Scrum Team decides on their commitment for the upcoming Sprint during sprint planning. Sprint planning will be very successful if the Product Owner has organised the Product Backlog and the user stories have the appropriate Acceptance Criteria. Together, the team will sit and consider what it will take to achieve their sprint goals. They will estimate a little if that’s how they roll.
Ultimately, the team needs to decide now what kind of work will be done during the Sprint. Allocating their capacity to particular work items is a worthwhile strategy. For instance, 40% of the capacity is allocated for new feature development and testing, 30% for bug fixes for new feature implementation, 10% for technical debt and refactoring, and 20% for high priority items that the team has the discretion to decide to include in the Sprint.
The team doesn’t operate in a vacuum, and life outside the team goes on. Therefore, even though no one from outside has the authority to alter the scope of an ongoing sprint, unforeseen events, such as production problems, will occur and force the team to alter the scope. The group must prepare for those. There will always be bugs to fix, tech debt to pay off, and unforeseen delays to make up for if they don’t take place.
Definition of Done for Sprint Planning
- If the team employs story points, User Stories are given story points.
- The team’s capacity has been allocated in accordance with the sprint goals.
- The group commits to user stories that they can potentially deliver as a shippable increment at the end of the sprint if they fully comprehend them.
- If the team uses tasks rather than states, development, design, and testing tasks are created and estimated.
- The sprint goals have been decided upon and committed to by the team.
Teams frequently commit a grave error by dividing the user stories into components that cannot be tested or released on their own. Make a page layout, for instance, without binding the links and buttons. It cannot be released in any way. The proper course of action is to design a single button that completes a section of the user journey and leads to a destination, making sense to the user. After seeking feedback, continue. The increment is this. For this Sprint, a page with boxes is not an increment.
Working in Sprints
The entire team must adhere to the established commitments in order to achieve a smooth workflow throughout the Sprint. The team must closely monitor the burndown chart and must not permit outside interference. The team must openly communicate any challenges that might jeopardise the release of the potentially shippable increment because they are accountable for their own success.
Definition of Done for Working in Sprints
- Tasks whose parent User Story has the highest priority are the ones that development and testing begin with.
- If a user story receives any additional information, new tasks with updated estimates are created.
- An active sprint cannot accept any new User Stories.
- Every morning, the team gathers for Daily Scrum meetings, during which important decisions are made and shared.
- The team has the chance to review its metrics, such as the burndown chart, during daily standup.
- The team keeps a close eye on the Sprint Backlog for things like delays and an unexpected spike in new bugs.
- The team is careful to maintain a balance in terms of capacity.
The group ought to communicate constantly. The Daily Standup is more or less the last opportunity for someone to raise a concern. It is impossible to predict everything that will happen during the Spring Planning, even with the clearest priorities and the most optimistic outlooks. This implies that there are too many potential causes of failure for us to be able to plan for them all. Determining with the Product Owner what is the best outcome they can achieve and how to adjust their scope and capacity accordingly are all made possible by the Daily Standup, which gives the team the chance to act immediately when something unexpected occurs. Agile is all about being flexible, able to deal with uncertainty, and able to make the best decisions at the right time.
UI/UX Tasks
These may be difficult. It can be difficult to frame UI/UX work. Designers are under a lot of pressure because, if the product increments are not correctly identified and prioritised, they could easily turn into a bottleneck. In order to be complete, the work on a user story’s design during a sprint may range from story mapping, user journeys, developing personas, user interviews, accessibility testing, to validating the copy and carrying out usability tests. Here are some crucial requirements that, assuming the discovery phase has gone well, would ensure that the design work is effectively integrated with the Sprint.
Definition of Done for UI/UX Design Tasks
- The most important user stories have designs made for them and attached to them.
- User stories with a lower priority have created and attached wireframes.
- For each design, the colours, fonts, sizes, paddings, and margins are clearly noted.
- There is a version of each design for the necessary resolutions.
- The team collaborates to create an interactive prototype of the main user journey for the sprint.
Development Tasks
The Definition of Done is typically only defined for development tasks. This article was written for that purpose. Every task we complete can have a check list for completed work, which will save us a tonne of trouble later on when we know it will be much more expensive to handle it.
We won’t discuss how to write clean code because it is one of the most contentious issues. It’s crucial to remember that development doesn’t end with the creation of some code. Even checking it in does not bring it to an end. You have no idea how frequently a developer breaks the main branch, the item is moved for testing, or the code is not checked in at the proper location.
Definition of Done for Development Tasks
- There is checked-in working code.
- Unit tests that are useful are checked in.
- Unit tests and the source code are examined.
- Unit tests and the code are refactored.
- Code quality standards are met.
- Metrics for code quality are within acceptable bounds.
- The Sprint’s errors and exceptions have been fixed.
- Updated unit tests include bug and exception fixes.
- Unit tests succeed.
- User Story acceptance criteria have been met.
Testing Tasks
The cross-functional team’s testing unit is in charge of first determining whether the remaining deliverables and artefacts have met their definition of doneness. Any omission will almost certainly result in a bug, whether it be a coding mistake, inconsistent designs, a lack of user story details, or unclear acceptance criteria. However, the testing must also be carried out correctly.
Definition of Done for Testing Tasks
- Writing test cases can be manual, automated, or hybrid.
- All team members can easily understand and use the test case documentation and organisation.
- Test Cases include negative and edge cases and cover every aspect of the acceptance criteria.
- Regression tests can be repeated and reused test cases.
- Review and improvement are made to test cases.
- The test cases are current.
- The most important test cases are run.
- Regressions are reported along with bugs and exceptions.
- Bugs and exceptions are tested again and confirmed.
- User story acceptance criteria have been met.
User Story
A User Story should ideally represent a genuine customer need and, if completed during the Sprint or earlier, be ready for immediate release to the customer.
Definition of Done for a User Story
- The user story’s development, design, and testing tasks have been completed.
- Test cases with a high priority all pass.
- The acceptance criteria have been approved and verified as being met by the product owner.
- Per user story, user documentation is produced or updated.
- According to the User Story, installation and configuration manuals are produced or updated.
Delivery
This quick checklist is a requirement before you send the version to the customer, regardless of whether continuous delivery is in place and the customer can receive the user story immediately or features are released in other cadences. If the process isn’t entirely automated, always keep the instructions up to date.
Definition of Done for Delivery
- Continuous integration builds continue to be effective.
- In staging environments, delivery package construction, installation, and testing are done.
- Production environments have installation and verification of delivery packages.
- Updated and published user guides and release notes.
- Training materials have been given to the client.
- Support channels have been made available to the customer.
- The delivery has been approved by the client.
Next Steps
As we can see, by laying out specific expectations for the team, the Definition of Done can indeed increase the transparency and predictability of the work (and not just in a Scrum project). Clarity is also the first step towards increased effectiveness. The team may find it entertaining to come up with their own DoDs. Although the aforementioned have been shown to be successful and effective, your team may require others that are different, more or less detailed, and by all means, continue to elaborate on them as the team develops. As a starting point, refer to this manual. At the end of the day, grab a coffee and create your list together. Simply give it a try to see how much more smoothly your sprints will move.