A common issue that occurs on all development projects is when is someone done.  You will here phrases like:

  • I'm done, but...
  • I'm done except for...
  • I'm kinda done.
  • I'm done when it works on my machine, etc...

There are several ideas about what is done and what does “done” mean so in this post, I will define the done criteria across each discipline that should be taken into account on any development project.  I have used this successfully on several projects and it helps to level set across the team that when someone says they are done. We mean "Done.Done".

Development

1. Code is adequately commented according to the coding standards

2. Code adheres to the coding standards

3. All hard coded strings that can be resolved are removed

4. Unit tests are created and test all positive and negative functionality and any exceptions

5. TODO statements are removed/resolved/entered in TFS as tasks

6. Diagrams and documents are updated to reflect any new changes

7. Code integrates with the latest build and is checked in

8. Code passes the integration build and is deployed to test

9. You have had a peer review by the track lead or another developer

10. Any deployment and configuration requirements are documented and communicated

11. TFS has been updated, the task has been closed and associated with a work item

Build and Test

1. The solution is able to be deployed with no errors.

Deployment

1. Any external requirements are documented

2. A target environment document has been created and the deployment is a repeatable process either by process or automation

UAT

1. Customer has signed off on the functionality and no changes are required

Support

1. Documentation has been delivered to the support staff

2. Support staff has signed off on the deliverables