Era uma vez…
1. Histórias de usuário 101
2. Escrevendo histórias melhores
3. Quando não é uma história
Não é uma especificação funcionalNão é para relatar um bugNão é um documento de definições técnicas Não é uma enunciação detalhadaNão é um requisitoNão é um contratoNão é algo para funcionar sem o P.O.
O que não é uma história de usuário...
×
Uma história de usuário é...
É uma requisição de funcionalidade sobre o ponto de vista do usuário
É uma expressão negociável de uma necessidade
É uma expressão de um incremento usável de software
Indivíduos e interação entre eles mais que processos e ferramentas
Software em funcionamento mais que documentação abrangente
Colaboração com o cliente mais que negociação de contratos
Responder a mudanças mais que seguir um plano
Relembrando o manifesto ágil...
Facilitam o diálogo
Qualquer um pode escrever
Qualquer um pode entender a demanda
Focam na entrega de valor
Facilitam a mudança de comportamento
Descrevem uma possibilidade/demanda, não uma solução
Escrevemos histórias pois elas
CartãoConversaçãoConfirmação
A demanda deve ser sucinta e compreensível por todos. A história é descartável, não um requisito a ser rastreado.
3Cs
Componentes da histórias de Ron Jeffries
CartãoConversaçãoConfirmação
A demanda deve ser discutida e negociada. A história não é uma ordem, mas uma ferramenta para o diálogo e tomada de decisão.
3Cs
Componentes da histórias de Ron Jeffries
CartãoConversaçãoConfirmação
A demanda deve ser compreendida por todos. O valor a ser entregue deve estar claro para os envolvidos.
3Cs
Componentes da histórias de Ron Jeffries
Como/Sendo um <papel/persona/perfil>quero/preciso/necessito de <meta/desejo>pois/de modo que <benefício>
Modelo Connextra (padrão mais conhecido)
Exemplo 1
Como um Vendedorquero adicionar novos itens em um pedido recorrentede modo que não precise reagendar tudo novamente
Modelo Connextra (padrão mais conhecido)
Exemplo 2
Sendo um Administrador de Redesquero filtrar os IPs por subredepois quero poder agrupá-los para melhorar a organização da minha infraestrutura
Modelo Connextra (padrão mais conhecido)
Mike Cohn
Como um <papel/persona/perfil>quero/preciso/necessito de <meta/desejo>
Variações do Modelo Connextra
Chris Matts
A fim de <benefício a ser recebido>como um <papel/persona/perfil>,eu quero <meta/desejo>
Variações do Modelo Connextra
Chris Matts
A fim de visualizar toda minha infraestruturacomo um Administrador de rede,eu quero uma visão centralizada dos meus elementos monitorados
Variações do Modelo Connextra
Variações do Modelo Connextra
5Ws (Who, When, Where, What, Why)
Como <quem>,<quando> <onde>,eu <o que>,porque <por que>
Variações do Modelo Connextra
5Ws (Who, When, Where, What, Why)
Como Vendedor,ao acessar as últimas vendas efetuadas,eu preciso ordená-las por data de entrega,porque preciso avisar os clientes do prazo dado pela fábrica
Variações do Modelo Connextra
Para demonstrar diferenciação
Diferente do(a) <situação atual ou indesejada>,Como <papel>,Eu quero/preciso que <situação desejada>
Variações do Modelo Connextra
Para demonstrar diferenciação
Diferente do relatório de compras atual,Como administrador,Eu quero/preciso que seja informado quem efetuou a compra
Independente (Independent)
Negociável (Negotiable)
Possui valor para os usuários/clientes (Valuable to users)
Estimável (Estimatable)
Pequena (Small)
Testável (Testable)
Seis atributos para uma boa história, de Bill Wake
Não use declarações vagas: "Como usuário..."
Uma das grandes vantagens das histórias dos usuários é fazer com que os desenvolvedores entendam mais das motivações dos usuários e tenham maior empatia por eles.
Identifique quem é o usuário
A identificação do usuário deve servir como ponto para discussão:
O que ele faria?
Como ele faria?
Qual abordagem se adapta melhor a esse usuário?
Identifique quem é o usuário
Defina quando e onde:
"[...] a listagem de contatos [...]"
"[...] quando adiciono um novo pedido de frete [...]"
"[...] ao finalizar a inclusão de um novo host na monitoração [...]"
Identifique o contexto
Defina um contexto maior: um objetivo de negócio que sustente mais de uma história
Um contexto genérico não irá prover nada de interessante para discussão e melhoria do produto. Somente será uma desculpa para o aumento descontrolado do escopo, baseado em vontades individuais ou opiniões de Hippos
Identifique o contexto
Todo sistema tem 3 áreas:
A zona de controle que inclui aquelas coisas no sistema que nós podemos mudar nós mesmos
Um pouco de teoria de sistemas...
Todo sistema tem 3 áreas:
A zona de controle que inclui aquelas coisas no sistema que nós podemos mudar nós mesmos
A esfera de influência que inclui atividades que nós podemos impactar, mas não exercemos controle sobre
Um pouco de teoria de sistemas...
Todo sistema tem 3 áreas:
A zona de controle que inclui aquelas coisas no sistema que nós podemos mudar nós mesmos
A esfera de influência que inclui atividades que nós podemos impactar, mas não exercemos controle sobre
E o ambiente externo que inclui os elementos que não temos nenhuma influência
Um pouco de teoria de sistemas...
O motivo da necessidade do usuáriodeve estar na esfera de influência do time
O entregável (o que o usuário quer)deve estar na zona de controle do time
Em uma boa história...
Como gerente de vendas, eu preciso saber o número total de vendas por vendedor, pois assim posso calcular e submeter
as comissões mensais para o RH da empresa
Como gerente de vendas, eu preciso saber o número total de vendas por vendedor, pois assim posso calcular e submeter
as comissões mensais para o RH da empresa
Zona de controle do time
Esfera de influência do time
Micro-histórias
Difícil identificar os riscos
Não são problemáticas por si só
Devem ser eliminadas em planejamentos de médio e longo prazo
Situações nas quais não há riscos...
Devemos evitar quebrar os itens em tamanhos menores até o momento que seja necessário adicionar mais informações específicas, antes de precisarmos começar a trabalhar nesses itens.
Um backlog eficiente está estruturado de forma hierárquica. Nele há vários tamanhos de histórias…
O quão MICRO?!?
Um backlog linear, somente com elementos do mesmo tamanho, ou não permite um planejamento preciso (pois os itens são muito grandes) ou não permite uma visão e entrega completa do valor (pois os itens são muito pequenos).
O backlog deve ser hierárquico para garantir uma visão completa do que está sendo entregue.
O quão MICRO?!?
Jeff Patton nos diz para pensar em Asteroids…
1. Você precisa quebrar os asteróides grandes até deixá-los tão pequenos que um raio laser certeiro seja capaz de destruí-lo.
Jeff Patton nos diz para pensar em Asteroids…
1. Você precisa quebrar os asteróides grandes até deixá-los tão pequenos que um raio laser certeiro seja capaz de destruí-lo.
2. Mas não pode sair fragmentando todos, senão fica impossível de navegar e manobrar.
Jeff Patton nos diz para pensar em Asteroids…
1. Você precisa quebrar os asteróides grandes até deixá-los tão pequenos que um raio laser certeiro seja capaz de destruí-lo.
2. Mas não pode sair fragmentando todos, senão fica impossível de navegar e manobrar.
3. Tem que manter um bom número de asteróides medianos para saber o que vai vir e fragmentar aqueles que dá conta de eliminar de verdade.
Histórias enganadoras
Descrevem uma solução, e não uma necessidade do usuário
Situações nas quais não há riscos...
Histórias enganadoras
Como administrador do sistema, quero poder acessar mais rapidamente a interface principal, por isso preciso que a carga de requisições da interface seja reduzida/saneada
Situações nas quais não há riscos...
Como desenvolvedor, eu preciso eliminar as tabelas duplicadas da base
de dados
?. Quando não é uma história.
Como P.O., eu quero que na listagem de endereços a coluna de nomes fique mais
destacada que a coluna de valores
?. Quando não é uma história.
Histórias falsas são aquelas queenunciam necessidades do time:
Como desenvolvedor, eu preciso…
Como P.O., eu quero…
Como testador, eu preciso...
Não são usuários... tanto a necessidade quanto a entrega estão na zona de controle do time
Por que não é uma história?
Não se trata de um usuário
Não é uma requisição de uso para a persona
Não traz valor para o negócio
Por que não é uma história?
Eliminar os desperdícios
Devemos eliminar da cadeia de valor tudo que não gera valor
Mas precisamos manter o que evita a perda de valor
Um pouco de pensamento Lean
Preparação/Manutenção de ambiente
Correções de defeitos
Ajustes pontuais e melhoria de performance
Não entrega valor, mas precisa ser feito
Faça para não precisar fazer mais
Descreva a ação a ser tomada
Discuta e escreva
Foque no que pode ser automatizado
Para preparar/ajustar o ambiente
Decreva o que está errado
Descreva o comportamento aberrante
Descreva o comportamento esperado
Demonstre ação ou condição
Ao executar [...]
Quando [...]
Para correções de defeitos
Elicite a necessidade
O que precisa ser feito, não como faremos
Tenha ciência de que você (geralmente) já está em dívida
Escreva de forma a manter a conversação
Demonstre o valor de fazer aquilo
Para ajustes pontuais e melhoria de performance
Elicite a necessidade
Precisamos <necessidade>,pois <motivo>
Para ajustes pontuais e melhoria de performance
Elicite a necessidade
Precisamos ajustar o tamanho das colunas,pois algumas estão com o texto do cabeçalho cortado
Para ajustes pontuais e melhoria de performance
Há algo a ser feito, mas não sabemos como:
Testar uma tecnologia
Há alto grau de incerteza na aplicação
Não é possível estimar
Falta conhecimento no time
Temos dúvidas sobre isso...
Determine qual a pergunta a ser respondida
Determine qual a entrega esperada
Determine um tempo razoável a ser consumido para ter a resposta
Negocie quais aspectos serão levados em conta e quais não
A sua requisição é uma pergunta
Escreva cedo a declaração de valor e deixe para detalhar depois
Evite escrever soluções
Pense em mais de um stakeholder que pode tirar proveito da solução para a situação elencada. Isso abre oportunidade para quebrar a história depois
Dicas finais
Use figuras para explicar a história
Escreva as dúvidas
Foque na declaração do problema/necessidade do usuário ao invés do problema técnico
Discuta a história
Dicas finais