Ao desenvolver uma nova função de software ou modificar algo existente, precisamos ter uma forma de dizer que o trabalho está finalizado.
Como dizer que algo que a equipe se comprometeu entregar está terminado? ou seja, pronto?
Observe as diferentes respostas que podemos obter ao perguntar para diferentes membros de uma equipe ágil:
desenvolvedores: eu entendo como finalizado quando não há mais o que ser codificado, e meus testes unitários e de integração foram codificados e estão rodando com sucesso;
testers (QA/QE): eu finalizari a codificação dos tester automatizados, os testes foram executados e passaram com sucesso e nenhum defeito severo foi encontrado;
product owner: eu entendo como pronto quando o que eu pedi foi desenvolvido, foi testado e está em produção funcionando corretamente.
Durante o ciclo de desenvolvimento de software, uma função em desenvolvimento pode receber diversos status que simbolizem em qual momento do processo ela está, por exemplo:
em codificação, pronta para teste, em teste, bloqueado, etc.
No entanto, o status final que ela recebe deve ser bem conhecido e entendido por toda a equipe.
Mas então, quem está certo? quando dizemos que uma função está pronta (finalizada/entregue)?
No contexto de equipes ágeis, especialmente as que utilizam Scrum, que é o método ágil mais popularmente utilizado, é necessário que a equipe entre em acordo sobre o que é dizer que algo está pronto.
Seja uma nova função, ou modificação de funções existentes, essa definição de pronto (definition of done) é muito importante para que todos falem a mesma língua e estejam alinhados sobre o término de algo que a equipe entrega.