Recently, there has a been a bit of talk about being done in the context of Agile software development. If I’m not mistaken, as far as Agile frameworks go, it would seem that the Definition of Done as described by Scrum influences many an Agile team. We also know that there are variations on this as well such Done-Done and Done-Done-Done.
But when are we really DONE?
In some regard this depends on how we define done. Is a movie done when production is over? Is a presentation done when the slide deck has been prepared? Is a meal done once it has been cooked? Is a software increment done when coding and testing are complete?
Teams engaged in real (there is a lot of fake and dark Agile out there) Agile software development are guided by a set of 4 values and 12 principles. The very first principle in the Agile Manifesto goes as follows:
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software
When we use this principle to guide how we define done, I cannot understand how we can consider ourselves done until we’ve delivered an increment of value to our customers. Not just deployed (and hidden behind feature toggles or something like that) but delivered such that our customers can interact with the increment in some form or fashion.
So the next time your team debates whether you are done, ask yourselves if your customers are using the increment.
(Thanks to Mia Augustine for inspiring this post).
P.S. IMHO Scrum’s Definition of Done (in the best case scenario) is really (more appropriately named) Definition of Ready To Be Delivered.