I sometimes find a lot of angst around the definition of done. I was particularly surprised to see it bubble up and get mentioned in the National Audit Office’s 2012 report “A snapshot of the use of Agile delivery in central government”.
So, if we are to make such a definition, what should we consider?
Primarily, marking a user story as done is a measure of progress. Therefore it’s important to make that definition as close to real progress as possible. But let’s not forget it’s not the same thing as real progress—as I mentioned when discussing breaking down stories, completed stories are a measure of progress, but we shouldn’t confuse that with actual progress, which is working software.
We could create a definition which insists a story gets into production and is put to use. That’s good if you get to put changes out daily. But if you can only get your software into production every few weeks then that’s not a good indicator of progress—you wouldn’t have a tight feedback loop to distinguish quickly between slow progress and good progress.
(Yes, I know it’s not “agile” to put software out only every few weeks. However (i) sometimes it makes to sense to the users to release wide changes in a single batch, and (ii) getting to frequent releases can be a long journey, depending on where you start from.)
An alternative definition might be to have our stories having passed user acceptance testing in a pre-live environment, ready to be released. This is again fine as long as the step to put it all live is either negligible or involves work that’s been planned. If putting the stories live involves non-trivial additional work (for example, configuration testing, data migration, performance testing, etc) then that work needs to have been planned. If it hasn’t been planned then those “done” stories aren’t such a great indicator of progress, and give a false impression.
In the end the actual definition of done will vary from time to time depending on circumstances. The important thing is that it’s a good indicator of progress.