Opinion: What does ‘done’ actually mean? Using the definition of done to drive results
In agile software development, scrum teams focus on finishing one small portion of product functionality at a time. This step-by-step approach is different from waterfall development, where many small pieces may be worked on at one time, but nothing is actually completed until the end of the full project.
By using scrum to drive each part of the product to a fully done state, teams can create more realistic timelines, change priorities as needed and produce shippable portions early and often. Not only is this a consistent, effective way for teams to work, but it provides big advantages to the customer by delivering new functionality more quickly.
However, problems can arise if a clear definition of done isn’t established prior to work commencing. To a product owner, “done” might mean fully tested and debugged, but the development team might be planning to do testing later. It’s crucial that these two parties are on the same page right from the start, to avoid miscommunications and issues throughout the project. By taking the time to develop and agree on a strict definition of done, your scrum team will be better set up for a successful engagement.
How do you establish a definition of done?
The best time to establish a definition of done is before the first sprint to ensure everyone fully understands the goal of each and every sprint throughout product development. While definitions of done can vary, it’s most important that, when “done,” all product backlog items meet the same criteria.
While your team will need to determine your exact definition of done, here are some common criteria to help you get started:
Automated unit tests executed and passed for all code that has logic or calculations
All bugs fixed and tested via a new unit test
Peer review completed on all new code
Any suggested adjustments from peer-review have been made
Fully satisfied acceptance criteria
All new stories tested manually using a written test plan
All new “done” code has been integrated with all other completed code
All functionality meets established performance standards
Product does not include any code that isn’t done
Functionality has been reviewed and accepted by the product owner
Any pertinent end-user documentation has been written, reviewed and accepted by the product owner
If this list seems long, don’t be intimidated. Keep in mind that all of these items need to be checked off eventually, and by doing them on each product backlog item within each sprint, your scrum team will actually be able to accelerate the entire software development lifecycle.
How do you know if you have a good definition of done?
In order for your team’s definition of done to help drive results, it should meet two key characteristics: quality and completeness.
Focusing on quality helps to detect and eliminate bugs. Prioritizing completeness ensures no portion of the project gets left behind as your team moves on to the next sprint. With these two key characteristics in mind, sit down with your scrum team and the key stakeholders to have an upfront discussion on what they expect when they hear a user story is “done.” Create a checklist similar to the example above that everyone can agree on. This checklist is now the concrete representation of your team’s definition of done.
How does having a definition of done help drive results?
A core tenet of scrum success is communication — and developing a clear definition of done is integral to establishing communication boundaries upfront. As tempting as it can be to demonstrate a story at sprint review that doesn’t quite meet the full definition of done, resist this impulse. If all the items on the definition of done aren’t met, return this story to the product backlog.
When everyone, from each team member to each stakeholder, understands the standards the team is working towards, there’s a better appreciation of quality and process. Plus, by knowing that everything completed to date is ready, your team can avoid last-minute delays often caused by forgetting things. With a clear definition of done, this isn’t a problem — all of the details are already taken care of.
Establishing and sticking to this standard gives your team the power to set expectations and meet them every single sprint. And with demonstrated progress, you’ll be able to prove your worth and showcase your team’s abilities from the very beginning of an engagement.
Interested in hearing industry leaders discuss subjects like this and sharing their use-cases? Attend the co-located 5G Expo, IoT Tech Expo, Blockchain Expo, AI & Big Data Expo, and Cyber Security & Cloud Expo World Series with upcoming events in Silicon Valley, London, and Amsterdam.
- » Facebook announces winners of its 2019 Developer Circles Community Challenge
- » Ethereum founder Vitalik Buterin supports petition to release arrested dev
- » Python libraries imitating ‘dateutil’ and ‘jellyfish’ caught stealing SSH and GPG keys
- » Report: Over half of people working with APIs are not developers
- » StrongSalt’s new Open Privacy API offers ‘encryption as a service’