arrow-left arrow-right brightness-2 chevron-left chevron-right circle-half-full dots-horizontal facebook-box facebook loader magnify menu-down RSS star Twitter twitter GitHub white-balance-sunny window-close
Done Criteria
1 min read

Done Criteria

This is an old post and doesn't necessarily reflect my current thinking on a topic, and some links or images may not work. The text is preserved here for posterity.

In starting a project, one of the important steps we need to do is to and define and agree on what "done" means. There are plenty of good examples around that we can draw from as inspiration for our own lists. On my current personal project, I just put together my own definition of done.

A feature is "done" when:

  1. Users can use the feature, are happy with it, and any major design flaws or bugs are closed
  2. UI for the feature has been styled and designed to look nice
  3. UI for the feature works for normal as well as high-contrast mode, and works equally well for colour blind users
  4. Keyboard accessors/shortcuts and tab order are set
  5. End user help/tooltips work
  6. If necessary, any sample data needed to test the feature is ready
  7. Automated unit tests are written, with a high enough level of coverage
  8. Automated UI "smoke" tests have been recorded and pass
  9. Load tests written and pass
  10. Each button click/interaction results in the minimal number of service calls
  11. All UI components are hardware rendered, virtualization is enabled, and no data binding errors
  12. Any auditing/tracing code is added, and the output is useful and readable
  13. Any potential failure scenarios are catered for
  14. Feature is tested for any major memory leaks
  15. Automated database migration scripts are ready and tested
  16. Security permission checks have been implemented and validated via automated tests

Some of this revolves around performance. This isn't about premature optimization, just checking for obvious problems. If I find out I'm accidentally doing a SELECT N+1 that isn't a problem on my laptop, but is a problem in a reasonable set of sample data, I want to resolve that before claiming the feature to be "done".

Every project is different. What does your definition of done look like?

Paul Stovell's Blog

Hello, I'm Paul Stovell

I'm a Brisbane-based software developer, and founder of Octopus Deploy, a DevOps automation software company. This is my personal blog where I write about my journey with Octopus and software development.

I write new blog posts about once a month. Subscribe and I'll send you an email when I publish something new.