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.
Respostas:
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 .
fonte
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.
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.
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.
fonte
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".
fonte
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.
fonte
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.
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.
fonte