On Friday morning, Shrikant, the Manager, came to Naveen, the software engineer, asked about “Password reset functionality”.
Naveen had implemented the “Password reset functionality” using test-driven development and replied to Shrikant that he had checked in the code into TFS.
So, Naveen with a great smile said: “Yes, the feature is Done“.
Shrikant was happy and said “nice, let’s deploy it into the staging environment for client’s review”.
However, Naveen was hesitant and looked doubtful since the use cases and the code was not reviewed by another developer and QA was still waiting for his turn to verify the functionality in QA environment.
Ah! Who is responsible for this situation. Who is right or wrong?
You may come across such a situation.
This situation may occur because everyone (developers, reviewer, QA, and product owner) could have their own version definition of done.
One person, ‘done’ may be ‘deliver a feature in production with ZERO bugs’.
To me, it will create use cases, prepare the design, follow TDD practices and so on.
To the product owner it may be “meet the need, get it verified against business rules”.
Remember the definition of done is a comprehensive checklist of necessary, value-added activities that establish the quality of a feature.
Below is sample definition of done:
- Prepare use cases that will cover use needs.
- Write code that covers all use cases.
- Peer-reviewed (or produced with pair programming) and meeting development standards.
- Unit tests are written and passing.
- Builds without errors.
- Code checked into TFS/git source control.
- Deployed to test environment and reviewed by QA.
- Passed UAT (User Acceptance Testing) and signed off as meeting requirements.
- Any build/deployment/configuration changes implemented/documented/communicated. (Database changes etc.)
- Relevant documentation/diagrams produced and/or updated.
- Remaining hours for the task set to zero and task closed.
To avoid above situations (mentioned in the first paragraph) in the team, it is very important that everyone knows and follows guideline mentioned in the definition of done that was created by the development team and product owner so that features get delivered completely with good quality.