Como lidar com uma história de usuário que eu concluo, mas com compromisso e necessidade de revisitar?

8

Acabei de cumprir (esse é um bom termo?) Duas histórias de usuários de um novo backlog de projeto que acabei de criar. Estes são o registro do usuário e a redefinição de senha, ambos exigindo correio. Preciso implementar um componente de correio substituto, porque minha escolha inicial e normalmente confiável não estava funcionando. Como eu estava focado em fornecer as histórias do usuário, e não em depurar o componente de email, troquei-o para fornecer código de trabalho no final do sprint. Agora, registro um novo problema de suporte para a mala direta ou 'reinseri' essas histórias no backlog? Se eu fizer o último, não estou introduzindo muitos detalhes técnicos nas histórias de usuários?

ProfK
fonte

Respostas:

5

Se você implementou a história do usuário com os padrões definidos na definição de concluído, essas histórias do usuário serão concluídas e não deverão ser colocadas novamente na lista de pendências do produto.

Em situações semelhantes, levantei uma nova história de usuário, mas descrevi o requisito para fazer uma alteração técnica em termos de benefício de negócios, em vez de ter algo puramente técnico na lista de pendências do produto. E se:

"Como desenvolvedor, quero que o produto use o componente de email padrão da empresa, para que o suporte e a manutenção sejam simplificados."

Como desenvolvedor, você também é um ator e pode ter requisitos de que o sistema se comporte de uma maneira específica quando você o usa (suporta / altera). Sempre deve ser possível articulá-los em termos de benefícios comerciais e priorizá-los com o proprietário do produto, juntamente com a implementação de novas funcionalidades.

usuario
fonte
3

Se a definição de concluído para a história do usuário for preenchida (preenchida, o que você deseja chamar de concluída), seu repositório de usuários estará completo e você não deverá colocá-lo novamente na lista de pendências.

No entanto, você assumiu uma dívida técnica para concluir isso e, posteriormente, precisará dedicar outro tempo para consertar isso. Parece-me que você precisa de um tipo de tarefa para trabalhos internos, como refatores.

Portanto, adicione um novo problema ao backlog.

Klee
fonte
Não é realmente uma dívida técnica. Minha 'solução alternativa' é uma solução de qualidade, mas a implementação originalmente prevista será uma melhoria na solução alternativa, então talvez eu possa criar uma nova história para melhorar a função de email?
ProfK
@ProfK Em que sentido a mudança é uma melhoria? De quem vida será feita melhor e como?
21468 MarkJ em
@ MarkJ O benefício é de larga escala. Isso permitirá que os textos de e-mail sejam escritos como visualizações do MVC, por qualquer web designer ou codificador familiarizado com essa tecnologia.
ProfK
@ProfK Esta é uma dívida técnica estratégica. Lembre-se de que nem todas as dívidas técnicas são negativas ou ruins. Nesse caso, você alterou o sistema para poder enviar hoje sabendo que precisaria fazer uma alteração mais tarde. Este é um excelente exemplo de assumir dívidas técnicas estratégicas - com moderação, uma coisa boa.
Michael
2

Dívida técnica é apenas mais uma história

Se uma história for concluída, isso significa que passou no controle de qualidade e foi aceita pelo proprietário do produto.

Qualquer trabalho que precise ser feito para "limpar" ou "melhorar" a implementação é considerado Dívida Técnica e deve ser simplesmente uma nova História.

Dessa forma, ele será rastreado e priorizado pelo Dono do produto, como todo o resto.


fonte
1

A coisa mais simples que funcionará razoavelmente

Em um comentário relacionado , o OP diz:

Minha 'solução alternativa' é uma solução de qualidade, mas a implementação originalmente prevista será uma melhoria na solução alternativa, então talvez eu possa criar uma nova história para melhorar a função de email?

Se for esse o caso, a pergunta original é discutível. O princípio YAGNI exige que uma solução não seja projetada em excesso em antecipação a requisitos futuros.

Se uma solução atende aos objetivos atuais do sprint, funciona como projetado e atende à "definição de pronto" da equipe, está pronto. Não está pela metade, meio que está pronto, ou "está pendente de uma refatoração planejada".

Marque-o como concluído e siga em frente.

Advertência menor

Se você realmente acha que há outra história lá, ou algum tipo de dívida técnica que não impede que a história original seja concluída, você deve criar outra história para o Backlog do Produto .

Sempre é necessário colocar um novo trabalho no Backlog do Produto para aumentar a visibilidade - nunca há trabalho invisível! Por fim, é dever do Dono do Produto decidir se a melhoria proposta está alinhada com as metas do produto e priorizar sua nova história de usuário no Backlog do Produto, se ele optar por adicionar a história.

CodeGnome
fonte
0

De acordo com sua pergunta e comentários adicionais à resposta de @ Klee, acho que o problema é um pouco diferente.

Você completou uma história. Isso significa que você passou todas as definições de concluído - caso contrário, a história do usuário não pode ser considerada concluída. Mas se você completou a história e passou todas as definições de done, isso significa que sua solução atual é satisfatória. Caso contrário, o cliente / proprietário do produto deve levantar a razão pela qual não está satisfazendo (não você) e rejeitar sua conclusão ou definir outra história de usuário que estenda esta com uma nova definição de done que não é satisfeita por sua solução atual.

A dívida técnica é aumentada apenas quando sua solução atual não atende a algum requisito ou restrição. Existe alguma restrição que você violou usando uma solução alternativa? Se sim, você não deve marcar sua história de usuário como concluída em primeiro lugar.

Existe alguma duplicação de código ou outra má prática introduzida pela sua solução alternativa? Então você criou uma dívida técnica e deve resolvê-la o mais rápido possível. Você pode ser justo com o proprietário do produto e simplesmente dizer a ele que durante o próximo sprint você deve gastar o mesmo tempo para corrigir seus problemas técnicos, o que resultará em histórias de usuários menos planejadas. Ou se sua relação com o proprietário do produto não for muito boa, basta planejar menos histórias de usuários por causa das complexidades "recém-descobertas" em qualquer uma delas e corrigir sua dívida técnica.

Se não houver duplicação de código ou qualquer motivo real para a melhoria do código, simplesmente não toque nele. Pelo motivo real, refiro-me a nenhuma restrição definida pelo cliente / proprietário do produto (por exemplo, política da empresa, desempenho, tempo predefinido para criar um novo modelo de email que não pode ser alcançado com sua solução atual, etc.). Não há dívida técnica no seu código. O que você está tentando fazer é chamado de revestimento dourado - fornecendo recursos que não eram necessários = desperdiçando recursos dos clientes.

Se sua solução não atender a nenhuma história de usuário futura, basta mover sua refatoração e aprimoramento de código para essa história de usuário. Ele não precisa ser resolvido agora porque passou na definição atual de done. Lide com as melhorias quando elas tiverem que ser feitas para passar na definição de feitas para histórias recém-implementadas e para evitar más práticas.

Ladislav Mrnka
fonte