Uma definição de "Concluído" no caso de várias equipes de desenvolvimento trabalhando em um mesmo produto

12

Um dos testes scrum contém a pergunta sobre a definição que melhor descreve "Concluído" quando várias equipes de desenvolvimento executam um trabalho em um mesmo produto.

Uma resposta adequada afirma que essas equipes de desenvolvimento devem ter uma definição de "Concluído" que possa tornar seu trabalho combinado potencialmente liberável.

O que não está claro para mim a partir da resposta adequada a este questionário é:

  • as equipes podem ter definições diferentes de "Concluído"? Até que ponto?

fonte
Pense em uma equipe que libera diretamente um produto, bem como no mesmo trabalho sendo usado por outras equipes.
Ian
Ou, por exemplo, as versões em inglês do software podem ser enviadas antes de serem traduzidas para o francês.
Ian
Esse tipo de confusão é o motivo de eu nunca dizer que algo foi feito. Em vez disso, sempre digo exatamente o que fizemos. Decidir se algo é feito é uma negociação. Não é uma declaração. Independentemente de qual definição você segue.
Candied_orange 4/12

Respostas:

16

Quando todas as equipes definem "Concluído" de maneira a levar em consideração o trabalho realizado por outras equipes, você garante que a funcionalidade esteja concluída.

Se cada equipe definir "concluído" de maneira diferente e apenas esperar que as outras equipes saibam sobre essa definição, você terá vários problemas:

  • Quando surge um problema de integração, nenhuma equipe vai querer se encarregar de corrigi-lo. Afinal, foi "feito" quando eles começaram a integrar as coisas, portanto deve ser algo com o trabalho da outra equipe.

  • Quando você tem mais do que um punhado de equipes, fica difícil lembrar a "definição de feito" de todos - especialmente quando há diferenças entre as equipes.

  • A definição de concluído não garante que o trabalho de integração esteja funcionando corretamente.

A resposta aceita afirma claramente que as coisas não são feitas até que o trabalho de todas as equipes esteja integrado e funcionando corretamente. Ele deve ser liberável e, portanto, capaz de ser aceito pelos usuários finais em sua totalidade.


Editar em resposta a comentários: isso não significa que toda equipe tenha a mesma definição de concluída. Isso significa que parte da definição de cada equipe de concluído é o sistema maior e outros componentes de integração não são quebrados.

Greg Burghardt
fonte
Peço desculpas, mas me parece que a resposta correta não diz nada sobre ter a definição única de "Concluído". Além disso, não tenho certeza de que peculiaridades de integração devam ser incluídas nela. Digamos, se duas equipes trabalham em implementações completamente diferentes da mesma API dedicada a clientes diferentes? No entanto, formalmente, eles ainda estão trabalhando no mesmo produto.
2
@ Bem, a resposta correta realmente não diz nada sobre um único Departamento de Defesa, mas significa que os DoDs de todas as equipes devem ter um elemento comum de que o produto geral permanece funcional. Seu exemplo de equipes diferentes trabalhando em implementações diferentes de uma API não me convence de que isso poderia ser chamado de um único produto.
Bart van Ingen Schenau
2
@ Geralmente, assim que uma equipe depende do trabalho de outra, problemas de integração podem ocorrer (mesmo), mesmo que as peças sejam implantadas em locais diferentes. Também é um problema de integração, por exemplo, quando um microsserviço usa outro microsserviço de maneira inesperada, possivelmente incorreta.
Bart van Ingen Schenau
2
@Andremoniy: Você está certo de que essas duas equipes não devem usar o mesmo Departamento de Defesa, mas elas podem compartilhar a regra de que quaisquer alterações não devem afetar negativamente a outra equipe (o que seria acionado principalmente se o trabalho envolver alterações na interface com a parte de trás servidor final).
Bart van Ingen Schenau
1
@ Andremoniy: Obrigado por seus comentários. Atualizei minha resposta para resolver alguns dos problemas que você levantou.
Greg Burghardt
6

Eu poderia imaginar uma situação, em que uma equipe define "Concluído" como "Desenvolvimento concluído" (ou seja, código mesclado para repo), enquanto outro a define como "Teste concluído" (ou seja, código liberado para o Q / A e testado).

Isso levaria a problemas sérios, porque o estado geral do produto seria indefinido e, portanto, seria difícil dizer se podemos realmente liberá-lo ou não.

Pawel Gorczynski
fonte
Você considera a resposta adequada como afirmando que todas as equipes devem compartilhar a mesma definição?
Sim, eu concordo que deve haver uma definição comum por um motivo simples - Um projeto complexo pode ser considerado uma estrutura em árvore na qual subprojetos (por exemplo, microsserviços) constroem o produto geral (por exemplo, MyCool ERP). Portanto, em um determinado momento, você deseja saber se uma nova versão do produto pode ser lançada. Mas se você tem um Departamento de Defesa diferente para subcomponentes específicos, essas informações se tornam extremamente difíceis de deduzir.
Pawel Gorczynski