Fundraising tech/Definition of Done
A definition of done is a way for our whole team to agree on our habits for pushing out quality code. All of these things need to be done before a phabricator task can be marked as complete by the stakeholder, fellow engineer, or product owner.
During a sprint, a task moves between several columns in a sprint board. A task is totally done when it is in the "Done" column and in a "resolved" state. The following must be true to fully resolve the task:
- Steps to done or to replicate - If the done state is not clear, it shouldn't be in a sprint or started. Clear path for manual testing written up on the Phabricator ticket.
- Tests written - If not, comments about lack of test coverage. Code review to confirm (task placed in review column).
- Code review - Build succeeds and reviewer has followed steps to done, code should be understandable and, if necessary, should include explanatory comments (when review is complete, task moves to "Pending deployment").
- Documentation - a link to a Mediawiki, Wikitech (if applicable only to our install/deploy), Collab (if super confidential) page that will describe expected behavior in the Phabricator task.
- Works in production according to requirements. Reporter of bug (unless otherwise stated) to confirm this and close the task.
There can be exceptions (for example urgent bug fixes, tight deadlines). Also some tasks are purely technical and can be resolved by another engineer.