We all have been in this kind of situation: someone in the team states that a feature is done but in reality there is that little thing to figure out and the coding is completed the day after. Why is that? Because every person has a different definition of done inside his mind.
How can we protect a team from this? Simple! With a Definition of Done.
A good definition of done explicits what activities has to be done before declaring that our coding activites are over.
- All unit tests are green
- Coding style and conventions are respected
- UI respects the specs validated by the Customer.
Every team and every project will create a different definition of done. The very important thing is that you and your team discuss such a definition to remove wrong expectaions about the status of work in progress.