One of the important aspects of Scrum and the more fundamental concept incremental delivery is building Done software each iteration. There are a lot of holes in that statement, but that makes sense; Scrum is full of holes… on purpose. If you want answers rather than a framework built for learning, Agile ain’t for you.
Having a clear, well understood and explicit Definition of Done that everyone, including your product owner and surrounding teams accept is very important to growing quality and capabilities consciously. Underlying any Definition of Done is the expectation that the useful (for another day) software is ready for consumption by those who asked for it.
As a new team, discovering your initial definition of done can be surprisingly challenging. Certainly we can come up with things that we want to do and I say go for it! Only inspection at regular intervals can tell us for sure where we are and what the impact has been. But there are some things we can do to help make this decision more effectively. And it doesn’t take long. 30 minutes… maybe.
Circles and Soup
Innovations Games has a fantastic activity with many applications called Circles and Soup (sometimes called The Soup). I’ve used this to help a pissed off team focus their energy, but it’s also very helpful in creating an initial Definition of Done that is truly attainable.
You should read the full instructions, but suffice it to say the team will categorize those activities both historically done (i.e. architecture review) and potential (i.e. TDD) that must or should be accomplished to deliver into: Things They Control, Things They Influence, or The Soup (things they have no control or influence over). This is immediately actionable information, but also a roadmap to move items into the teams control. Share this with your organization and advocates.
A Definition of Done, something that they agree will always be completed before calling a feature or story or product backlog item done, which includes activities outside of the team’s control is risky or foolish. You should control your own destiny as best as possible. How can a team ever feel at all confident in their own forecasts otherwise.
In the Professional Scrum Developer course we talk about and spend a few minutes brainstorming attributes that define quality. We call these ‘ilities’. Things like maintainability, supportability, reliability, performance-ability. Ok I made that last one up, but you get the idea. It’s a big list too.
Very few people will argue that missing an -ility negatively influences the quality of an application. Which –ilities are most important, though, depends on many factors. Type of application, type of user, industry, etc.
What I like to do as a facilitator for this activity:
- Ask the team to break up in pairs or individuals for 5 minutes. Write every attribute that affects your impression of any application you’ve ever used on a sticky.
- Then come together, remove duplicates and put them on the wall for another 5 minutes (usually less). This creates discussion about what people intended or experiences. Often another -ility or two will be discovered.
- Use dot voting or some other form of ranking to figure out which –ilities are most important to this application.
Putting it together
You should now have a good idea of what the team has true ownership of and what is most important to build a great application for the intended customer.
With the results on either side of a whiteboard or giant sticky, choose a few activities which correlate the important –ilities and the activities in the team’s control to determine an actionable, checkbox-able list of things you feel will assure each feature and sprint produces Done software.
Each iteration you have the opportunity to review these artifacts or recreate them to evolve your Definition of Done from good to great.