What does “DONE” mean?

Photo by Juhan Sonin   – CC BY

Originally posted March 5th, 2014 on brianwebb.org

We’ve all done it. The project stakeholders want the software done yesterday, and the question is posed: “Is it done, can we ship it?” You say yes, the features are coded, ship it!

Then a little later it hits you, there were some steps outside of the actual feature development which should have been completed prior to release. So now, you’re out of the gate with immediate technical debt.

The question at hand is:

When it comes to software development, when can a feature, update, or full product be considered “done”?

After getting kicked in the pants by the “done” question a few times, I came up with the following list, which has worked for me as a sanity check to avoid any missteps with releasing a software or feature.

In a small dev team, some of this may be unnecessary. However, in a larger organization, making sure all the boxes get checked can be critical for success.

DONE = All list items can be checked

  •  Software has been developed that satisfies the acceptance criteria
  •  There is 100% automated test coverage for the developed software
  •  There is 100% in-code documentation with no errors for the developed software
  •  The developed software has been designed & code reviewed for scalability and maintainability
  •  Any required end user documentation (README or PDF manual, etc.) has been created
  •  All necessary infrastructure for each required hosting environment is in place (development, demo, staging, production, etc.)
  •  All necessary monitoring of hosting environments is in place
  •  Automated deployment to each hosting environment is in place
  •  Software has been scale and load tested beyond production requirements
  •  A plan for future scaling of software and infrastructure has been developed and documented for execution when necessary
  •  Any associated support documentation has been created and delivered to those supporting the software or feature
  •  Any necessary training associated with those who will be using, supporting or training others on the software or feature has been completed

Comments (0)

Leave a Comment