Let’s imagine, that at the end of every iteration in SCRUM or any other Agile Software Development method, the developer is coming to you and saying: “I’m done with this functionality!” But you of course ask: “What do you mean done? Are you done or done done?”
What do I want to say here: Software developers think that software development begins and ends with them. It’s actually not really false, but…
The software development is much bigger than only writing the code. Code by itself isn’t that useful. When developing team is stating define Definition of Done (DoD), it will be much more than “just coding”.
Example Definition of Done
Development / Coding
- Code is written with unit tests
- Code has been merged to Main
- Code reviewed by someone other than the author
Testing / Deployment
- Written QA tests
- Tested by QC
- Tested by QA
- Written UI tests
- Accepted by Product Owner
- Load tested Deployed to Production
As you can see, the real Done functionality contains much more steps, as just only code. And how to determine this Definition of Done (DoD)?
Defining Definition of Done (DoD)
- Get the team together before or just at the project beginning
- Start to discus in which phase your functionality can be named as DONE
- Try to avoid ambiguity and differences in definition
- Write it down!
- All team members should follow the DoD
So in next, when developer will come and say:”I’m done!”, all will know exactly what does it mean.