Uma história de usuário deve ser compartilhada entre desenvolvedores? [fechadas]

21

Normalmente, vejo histórias com desenvolvimento de back-end e front-end. Por exemplo, considere uma caixa de diálogo grande com algumas tabelas e alguns controles dinâmicos. Criaremos várias histórias (talvez uma para cada tabela e outra para o sistema de controle dinâmico).

A equipe de desenvolvimento dividirá com uma pessoa no back-end e outra no front-end. Isso facilita para a pessoa de back-end se preocupar apenas com a estrutura da camada SQL, enquanto a pessoa de front-end se concentra em coisas como layout. Depois que a interface inicial entre back-end e front-end for acordada, os dois desenvolvedores poderão concentrar sua atenção para concluir sua parte até o final do sprint.

Então vem o caos. Quem "possui" qual história? O que significa "em andamento" significa ou "concluído"? Devemos criar duas histórias separadas para back-end e front-end? Em caso afirmativo, isso não quebra a ideia de histórias de usuários com base no recurso? Nosso sistema possui uma noção de "subtarefas", o que facilita alguns desses problemas. Mas as subtarefas adicionam uma complexidade extra. Existe uma maneira melhor? Essa é uma maneira "ruim" de usar o Scrum?

Eu tenho usado alguma forma de Agile nos últimos anos em alguns lugares. Ainda não tenho treinamento oficial, portanto, perdoe qualquer terminologia ou ideologia errada. Só estou tentando aprender maneiras práticas de melhorar nosso processo.

Usuário1
fonte
Você praticamente o cobriu com a ideia de subtarefas. E esse conceito que você acha difícil de entender?
RibaldEddie
1
As subtarefas não são difíceis de entender, são apenas mais complexidade. Então agora eu acho que o gerente de desenvolvimento é o proprietário da história e cada desenvolvedor tem sua subtarefa. No final, ele termina em 3 objetos por recurso (uma história e duas subtarefas). Eu acho que isso é apenas normal.
User1
1
A maioria dos processos ágeis preterem a idéia de que qualquer desenvolvedor "possui" qualquer parte específica do projeto. As pessoas simplesmente trabalham em tarefas, qualquer que seja a parte do sistema que essa tarefa exija que elas toquem. No seu caso, parece que você está efetivamente criando uma pequena sub-equipe para lidar com uma única história, o que parece bom para mim ... faça com que eles entrem em contato um com o outro para decidir quando a história será concluída. Não vejo por que precisa ser mais complexo que isso.
Jules
"No final, termina em 3 objetos por recurso (uma história e duas subtarefas). Acho que isso é normal." - é comum, mas não deve ser normal. Uma história ágil absolutamente pode ser dividida em duas histórias (1 para FE, 1 para BE). O objetivo de uma história não é necessariamente um recurso, mas para fornecer algum "valor" ao proprietário do produto. O BE dev fornece muito valor e deve ser separado.
PostCodeism 06/07

Respostas:

16

Uma "história" é assim chamada porque representa uma história completa, bem, da perspectiva de um cliente. Sem o front-end ou back-end, não há caminho de caso de uso para o cliente executar.

No seu caso, acho que o front-end e o back-end devem ser uma história única. Divida-o em tarefas. Os desenvolvedores possuem suas diferentes tarefas. Essas tarefas podem ser rastreadas individualmente em suas fases - Em andamento, Codificação concluída, Teste de módulo concluído etc.

Certifique-se de incluir tarefas atribuídas ao controle de qualidade na mesma história - sem validação, uma história é inútil. O controle de qualidade testará a história integrada de ponta a ponta que um cliente verá. Somente então a história geral deve ser marcada como Concluída. Em um ambiente Agile ideal, um cliente real ou um proxy do cliente também experimenta a história em um aplicativo em execução e marca a história como Aceita se atender aos requisitos acordados.

Se você deseja obter loops de feedback mais rápidos, tente dividir o caso de uso em recursos de ponta a ponta menores. Por exemplo, em vez de um caso de uso como "Um cliente pode comprar coisas usando um carrinho de compras", divida-o em "Um cliente pode adicionar um produto a um carrinho de compras" e assim por diante ... Em seguida, conclua cada caso de uso menor de ponta a ponta, conforme descrito acima.

Edição: Eu queria fazer backup dos pontos acima com algumas fontes. As características de uma boa história do usuário são representadas de forma concisa com um acrônimo chamado " INVEST ". Foi criado por Bill Wake e popularizado pelo movimento Scrum. Observe especialmente os itens nas histórias que são independentes e verticais.

Mais algumas informações aqui e aqui .

metacubado
fonte
5

Quem "possui" qual história?

Quem pega a história. Eles consideram que, do ponto de vista organizacional, uma pessoa é responsável pelo trabalho. Depois de conseguir duas pessoas, é muito fácil passar o dinheiro.

Devemos criar duas histórias separadas para back-end e front-end? Em caso afirmativo, isso não quebra a ideia de histórias de usuários com base no recurso?

Depende. Eu já vi os dois lados funcionarem. Se a história for grande o suficiente para que dois desenvolvedores trabalhem em tempo integral, talvez ela deva ser dividida. Se os dois desenvolvedores fizerem parte de duas equipes diferentes, talvez deva ser dividido. Se os dois desenvolvedores trabalharem nele durante diferentes sprints, talvez ele deva ser dividido.

Essa é uma maneira "ruim" de usar o Scrum?

A chave a lembrar é que o processo existe para atendê-lo, não vice-versa. Histórias de usuários são uma maneira de pessoas técnicas e pessoas não técnicas facilitarem a comunicação. Eles explicam o que gostariam, todos negociam e, em seguida, você fornece um feedback na história sobre seu progresso.

Enquanto o processo estiver funcionando para você, não pode ser tão ruim assim.

Telastyn
fonte
3

Onde implementamos modelos Scrum, é perfeitamente esperado que vários desenvolvedores estejam envolvidos em uma única história de usuário. Pode haver trabalho para a camada de dados, integração, CSS de front-end, infraestrutura etc. A equipe pode se unir nas várias subtarefas de uma história para que ela seja concluída.

Dito isto, uma pessoa é dona da história e é responsável por atualizar seu progresso e garantir que todos cumpram sua parte e que estejam trabalhando juntos. Essa é a pessoa para nós que relata que uma história está "pronta".

Jay S
fonte
3

Como outros sugeriram, minha equipe também divide nossas histórias de usuários em tarefas. Isso geralmente é fácil se você estiver gerenciando suas histórias de usuários por meio de software (como JIRA ou Rally). Então é fácil dizer quais partes da história estão se movendo.

Mas uma alternativa para as tarefas seria apenas reatribuir a propriedade à medida que cada pessoa terminasse sua parte. Portanto, a história é divulgada - talvez o desenvolvedor 1 a inicie com o trabalho de back-end e depois passe para o desenvolvedor 2 para fazer a interface do usuário. Em seguida, ele é passado ao seu testador de controle de qualidade para verificação. Esse método deve funcionar bem em ambientes em que você está usando cartões reais na parede ou se o seu software não rastrear tarefas.

Mas, em qualquer caso, eu recomendo nunca chamar uma história de "concluída" até que a equipe concorde que ela foi concluída, incluindo testes. Dessa forma, todos têm a chance de dar sua opinião. E se você combinar isso com idéias sobre propriedade coletiva e revisões de código, toda história será realmente "propriedade" da equipe de qualquer maneira. Pode ser "atribuído" a diferentes pessoas ao longo do caminho, mas se alguém estiver fora (doente / férias / muitas reuniões? / Outra), o trabalho ainda poderá ser realizado.

Minha equipe geralmente aceita histórias de usuários como parte da reunião da manhã / reunião SCRUM. Dessa forma, todos podem facilmente reconhecer ou contestar se realmente está "pronto". Outras vezes, deixamos nossa engenheira de controle de qualidade fazer isso - se ela estiver satisfeita com o teste e o funcionamento e com todas as tarefas concluídas, então terminamos.

Allan
fonte
1

Onde estou hoje, chamamos esse projeto maior de "épico". Um épico é composto de várias histórias e pode abranger vários sprints / iterações. Uma história, para nós, é sempre fornecida a um único desenvolvedor e deve caber em um único sprint. Uma única história é subdividida em tarefas. Cada uma das tarefas é concluída pelo mesmo desenvolvedor nessa história. As tarefas têm como objetivo fornecer informações sobre o progresso da história durante o sprint / iteração. À medida que cada história é concluída, por cada desenvolvedor, o épico mostra o progresso.

O objetivo do épico é ter um objetivo maior que não se ajuste necessariamente a um único sprint / iteração. Com o tempo, todas as histórias são concluídas e o épico termina. Épicas são colocadas em um lançamento.

Então vem o caos. Quem "possui" qual história? O que significa "em andamento" significa ou "concluído"?

Demonstramos o código a cada duas semanas em que as histórias para essa sprint / iteração devem ser mostradas às partes interessadas e aprovadas. Nesse contexto, "pronto" para uma história significa que eu posso mostrar o que ela faz. Um desenvolvedor é dono da história e é responsável por mostrá-la (essa parte é uma simplificação exagerada, mas boa o suficiente para esta resposta; coordenamos nossas demos através de uma única pessoa). "Concluído" significa que pode ser demonstrado com sucesso. "Em andamento" significa que tenho tarefas pendentes e a história não está completa. Uma epopéia é concluída quando todas as histórias da epopéia foram demonstradas com sucesso.

Agora, essa é a progressão perfeita do caso. Temos histórias e demonstrações que falham, usuários que desejam algo mais etc. Acima é o objetivo e, na maioria das vezes, funciona.

jmq
fonte
1
'Concluído significa que pode ser demonstrado com êxito' - não tenho certeza disso. Uma demonstração bem-sucedida não significa que necessariamente passa no controle de qualidade, a menos que sua demonstração cubra todos os casos de canto que um bom testador jogaria nela.
Mike Chamberlain
1
Temos controle de qualidade, não histórias. Uma história é feita neste caso. Isso não significa que um defeito não pode ser aberto ou que a história não pode ser reaberta, apenas significa que você move a história para a coluna "pronto" para fins de gerenciamento de projetos. Se cada estante de esquina fosse testada com uma única história, nunca forneceríamos nada ... isto é, se você puder pensar realisticamente em cada estante de esquina.
Jmq 23/05