As Histórias do Usuário evoluem ao longo do projeto, por isso é necessário um conjunto de técnicas iterativas para coletá-las. Mike Cohn descreveu em seu livro “User Stories Applied: For Agile Software Development” quatro técnicas para fazer estas coletas:

  • Entrevistas com usuários: a melhor técnica para chegar à essência das necessidades de um usuário é através de perguntas que você faz a ele. Ao iniciar uma entrevista, informe ao usuário qual é o objetivo da entrevista e como ele poderá contribuir. Escolha os entrevistados certos, ou seja, aqueles que podem dar informações mais precisas. Se possível, entreviste vários usuários para o mesmo tema. A diversidade de visões pode ajudar no entendimento;
  • Preenchimento de questionários: o preenchimento de questionário é uma técnica eficiente para coleta de informações, principalmente quando o número de usuários é muito grande. Faça um workshop para explicar o objetivo. O questionário deve ser de fácil preenchimento. Não o faça muito longo, pois respondê-lo pode ser cansativo e desinteressante. Estabeleça prazos para entrega. Ajude as pessoas com dúvidas sobre as questões;
  • Observações de campo: observar como os usuários interagem com o software é uma ótima maneira para se obter idéias. As observações permitem capturar detalhes de como os usuários fazem suas atividades e tarefas. Respeite os horários e a privacidade dos observados, pois ao sentirem-se coagidos, negarão informações importantes;
  • Workshops: o objetivo de um workshop é a quantidade e não a qualidade, ou seja, o propósito é identificar e escrever o máximo de Histórias do Usuário possíveis. Mantenha o foco no alto nível de abstração, não perca tempo demais discutindo um determinado assunto. Não despreze as idéias. Mesmo que algumas pareceram inúteis, elas darão vazão a outras . No final do workshop se terá uma visão mais clara do que deverá ser feito.

Estas técnicas podem ser aplicadas individualmente, mas o ideal é combiná-las para obter as informações necessárias para escrever as histórias.

Priorizando

A priorização das histórias ajuda a definir a ordem em que elas serão desenvolvidas. No entanto, este é um processo difícil de ser aplicado em algumas empresas porque o conceito de prioridade para cliente e desenvolvedores é diferente. Os desenvolvedores sempre irão considerar o lado técnico como: tempo para desenvolver, dificuldade técnica, tecnologia a ser utilizada, etc. Enquanto o cliente irá considerar o quanto a história representa para o seu negócio. No fim, o cliente sempre vence.
No Scrum, o Product Owner é o responsável por fazer a priorização das histórias. Entretanto, independente da metodologia ágil utilizada, os seguintes pontos precisam ser observados para uma priorização eficaz:

  • Valor agregado: identificação do quanto a história agrega ao software e ao negócio do cliente;
  • Impacto: identificação das partes do sistema que serão impactadas com a implementação da história, pois isto poderá elevar o custo dela;
  • Tempo: informar ao cliente quanto tempo a equipe precisará para desenvolver a história. Em algumas situações, algo que o cliente diz ser de prioridade alta, passa a ser de prioridade baixa quando ele é informado que levará muito tempo para ser desenvolvido;
  • Risco: identificação do risco que o negócio do cliente terá se a história não for desenvolvida. Por exemplo: suponha que o cliente tenha solicitado uma funcionalidade de prioridade baixa, mas por motivos fiscais, se a história não for implementada com urgência ele será multado. Neste caso, não há o que se discutir;
  • Coesão: agrupar as histórias por tema para que sejam desenvolvidas em conjunto. Posto que, quanto maior a coesão, maior será o valor agregado ao negócio e ao desenvolvimento.

Se uma história estiver muito difícil para ser priorizada, divida-a em histórias menores. Desse modo a priorização será mais precisa.
 
E ai, gostou?
Deixe seu comentário, dúvida, ou crítica mais abaixo.
Até a próxima!

Autor

Ismael Soares é Gerente de Engenharia de Software na Bluesoft em São Paulo. É formado em banco de dados pela Faculdade Impacta de Tecnologia e possui mais de 14 anos com experiências em análise e desenvolvimento de sistemas. Já trabalhou com diversas tecnologias, entre elas: VB6, ASP, PHP, C#.NET, VB.NET, ASP.NET, PL/SQL, T-SQL, Groovy, Ruby e Java. Já participou de diversos projetos com banco de dados entre eles: Oracle, MSSQL Server, MySQL e Postgree.

Deixe aqui o seu comentário