Musings on the meaning of "potentially shippable"
One of the mandates of Scrum, and a mainstay of Agile processes in general is the concept that every sprint or development iteration should produce potentially shippable code. In essence this is taken to mean that the day after any sprint is completed the fruits of the teams labour can be released immediately. Release could be to a UAT environment for final fit-for-purpose testing, or directly to a production environment but this is an extraneous detail. The key point is that there’s an expectation that the developed product will have no significant bugs and require no further development before being moved on to the next stage of project implementation.
The question that has been occupying my thoughts for some time now having been through a number of Agile development project is whether this premise is actually achievable in the real world. Having failed to reach a definitive answer on my own I raised this as a discussion point at the recent Scrum Gathering in Minneapolis which provided some useful experiences and opinions on which to draw. This helped lead me towards a conclusion which is not so much an answer as a redefinition of the premise.
Potentially shippable code is code that is never more than a single iteration away from release.
In taking this approach it is possible to maintain agile development practices without significantly impacting the release as soon as it’s complete enough mantra. As a sprint backlog is worked through, code is developed to a high quality, tested at a unit level, functionally tested and bugs uncovered. In my experience, these bugs are generally rated by criticality and then handled in one of two ways. Regardless of the number of criticality levels, there is a dividing line with bugs sitting above that line being fixed immediately, within the current sprint, and bugs falling below that line being queued up for later attention. It is these queued bugs or “bug debt” that this final, “snagging” sprint provides the time to resolve.
In subsequent posts I will post some thoughts on how to both minimise and manage the inevitable bug debt.
Comment Notification
If you would like to receive an email when updates are made to this post, please register here
Subscribe to this post's comments using
About Gavyn.Dowst
One time Java developer, some time Java architect, part time geek and full time human.