Is it done, done-done .. or [TGIF]?
This post is about the definition of done in software development. If you do not know what that is, you might not get much out of this post either.
While at the Lean UX NYC 2015 conference last week, we had an interesting open space discussion on the topic – worded in a manner that can be described as “highly leading” – of “why people hate agile”*.
Well, without going too deep into that discussion itself, the major insight was that people seem to confuse agile principles (the 2001 Agile Manifesto) with specific agile process incarnations, such as Scrum. And the reasons the people in that discussion group cited as to why they hate Scrum, was the prescriptive nature of it, and often, the many (often poorly understood) meetings it describes.
Training wheels
However, we also concluded that Scrum is a useful starting point for a team starting on a new project, and can be seen as training wheels on a bicycle – and that dropping Scrum requires a very mature and disciplined team that automatically does the things Scrum holds your hand through. Anyway, I digress.
Another major insight of that open space discussion was that people have different understandings of what the definition of “done” is. Meaning, product, ops and sales all mean very different things when they ask if a new product feature is “done”.
So is it done, or done-done?
This results in interesting discussions like “so is the feature done, or done-done?”
My major epiphany from this was that since 1) “done” is such an overloaded word with so many ..definitions and 2) people farther away from the day-to-day of software development have little patience for the minutiae of software development specific processes or semantics – and since the whole point of the definition of done is to drill into the semantics of that word – perhaps we should avoid the use of the word “done” completely.
Pig-latin, the other kind of high-level language
Instead, how about we invent a team/project specific word altogether which is totally pig-latin, and thus by definition, totally free of existing meaning and thus risk of overloading?
I might be pushing it here, but what if the word itself in fact was literally the definition of done? Meaning, that the word used instead of “done” would be an acronym / mnemonic of the checklist of major items that are in the definition of done?
So as an example, if our team’s definition of done is “in order for a feature to be done, all bugs need to be resolved, end to end testing passed, deployed to production, handover to ops complete”, the status previously known as “done” would from now on be called BEDH. Thus, when the product owner next time wants to know, if something is done, she can now ask: “so is this feature now BEDH?”
Watering it down for the layman
Ok, ok. I might be going overboard with this for the majority of us. So how about, for the majority of us, we’d stop using “done” as a status for our work items / features, and instead use a more distinct status like “deployed to production”, “feature complete”, or similar?
No more “is it done, or done-done?”
Finally, if you think the idea of inventing acronyms is ridiculous, then how about these guys: https://youtu.be/-aeNmupIYQk?t=41s ? Also, these guys do it as well: http://workingwithmckinsey.blogspot.fi/2014/02/MECE-at-McKinsey.html
*although I participated in the discussion, I by no means personally “hate agile”, or even Scrum, even if Scrum is definitely not perfect either.















