Porque e como — mapear e refinar seu backlog

Guilherme Gomes
6 min readOct 16, 2021

Compartilho aqui algumas práticas que temos aplicado no time, bem como algumas referências de leitura, livros e estudos que tenho feito.

Photo by Glenn Carstens-Peters on Unsplash

Por que Mapear e Refinar?

A qualidade de software começa na especificação.

Além de transmitir O QUE deve ser feito, queremos deixar claro o POR QUE fazer. Todos os envolvidos no projeto merecem ter essa visão. O contexto é importantíssimo para o desenvolvimento do produto. Identificar oportunidades de melhoria e antecipação de problemas podem surgir durante o mapeamento e refinamento do backlog.

Pense também no cenário de revisitar seu backlog alguns meses à frente. Você, ou qualquer pessoa deve ser capaz de responder: Por que isso foi feito? O que foi feito?

Artefatos de um backlog

Aqui podemos ter várias configurações diferentes, mas escrevo aqui o formato que temos usado atualmente.

  • Epic: Um marco ou um objetivo do negócio.
  • Feature: Entregável de software ou funcionalidade que apoia um epic
  • User Story (ou Product Backlog Item): Itens menores ou passos de uma Feature

Independente da forma ou dos termos que podemos usar, o intuito aqui é deixar um exemplo de quebra do nosso backlog.

Mas por que não ter um Backlog “Flat”?

Quebrar o backlog em níveis menores (epic, feature, user stories ou qualquer que seja a quebra):

  • Facilita a visualizar pela ótica do usuário.
  • Nos ajudam a ver o quadro todo.
  • Nos ajudam a priorizar. Qual feature entrega mais valor ao usuário agora?

Mapping (Mapeamento)

Foque no problema antes de pensar na solução

No Livro Product Backlog Building do Fábio Aguiar e Paulo Caroli, eles trazem uma reflexão interessante de que devemos pensar como um médico e não como um garçom.

A primeira coisa que um garçom faz é oferecer um cardápio e não questiona o pedido que é feito. Já um médico, ouve o paciente, conversa com ele, pede exames, para só depois pensar em um tratamento ou remédios para solução do problema.

Qual o ponto?

Antes de pensarmos em como vamos resolver o problema, sem nos prender a uma solução, precisamos entender o contexto do usuário, quais as dores dele, que valor iremos entregar.

Isso pode nos levar a diversas formas possíveis de solução de um problema. As quais talvez não enxergaríamos se já começássemos com uma solução em mente.

Questionamento, comentários e ideias

Quebre a funcionalidade em passos e para cada passo abra espaço para questionamentos, comentários e ideias.

  • Questionamento: pode eliminar um passo desnecessário
  • Comentário: pode melhorar um passo útil
  • Idéia: pode fazer nascer um passo novo

Escreva em cartões de cores diferentes para questionamentos, comentários e ideias. Facilita a identificação

Refining (Refinamento)

Por que refinar?

Com base nos passos, entre em detalhes e responda as perguntas abaixo:

PARA QUEM está sendo desenvolvido? Queremos ter claro quem irá realizar aquele passo ou etapa. Ao invés de “um usuário”, queremos saber exatamente quem é esse usuário. Dependendo de quem é o ator, temos um tipo específico de necessidade, um contexto e uma “dor” diferente.

POR QUE está sendo desenvolvido? Novamente o contexto e a necessidade do ator precisam estar claros. Por que a Persona se importa? Qual problema existe atualmente que precisa ser resolvido?

O QUE precisa ser desenvolvido? Aqui podemos entrar nos detalhes de implementação. Mas se lembre que equilíbrio é a palavra aqui. Não queremos sobrecarregar de detalhes a ponto de termos uma documentação extensa e que possa se tornar obsoleto ou não faça sentido após algum tempo. Antes, podemos colocar detalhes técnicos, visuais ou qualquer coisa que apoie no desenvolvimento, mas foque no que é essencial.

COMO pode ser validado? Deixe claro como podemos saber que essa etapa obteve sucesso e entregou valor ao usuário. Qual a expectativa dele ou dela ao fim dessa etapa?

Como escrever?

Existem vários formatos possíveis, mas aqui listo 3 dos quais temos utilizado:

ARO — Action, Result, Object

Exemplo:

Action: Calcular Total

Result: Total

Object: de vendas por mês

User Story

Eu, como… | Aqui, evite usar a persona de uma maneira muito abrangente. Qual o papel daquela persona? O que ela faz?

Quero… | Evite suposições não validadas. O que ela realmente espera nessa etapa ou momento?

Para que eu possa| O retorno que a persona espera. O que o usuário está tentando fazer? Não utilize aqui a funcionalidade — por exemplo, se a funcionalidade é “listar a tabela de clientes”, não coloque como “Para que eu possa… ver a tabela de clientes”. Qual a expectativa do usuário em ver a tabela de clientes? Por que ele/ela quer ver a tabela de clientes? Um exemplo de motivação nesse caso poderia ser: “quero visualizar o telefone do cliente para efetuar uma venda”. Esses tipos de detalhes podem nos contextualizar do que a persona realmente está realizando naquele momento e porque aquilo gera valor a ela.

Exemplo:

Eu como gerente de estoque do supermercado
Quero visualizar o número de produtos no estoque
Para que eu possa fazer um novo pedido se necessário

Job Story

A job story foca no trabalho (job) que o usuário está realizando ao invés de quem é o usuário. Ao invés de assumir de que dependendo de quem é o usuário o contexto dela será diferente.

Quando estou… | Qual a situação/contexto do usuário?

Quero… | Qual o retorno que a persona espera? O que o usuário está tentando fazer?

Para que eu possa… |Qual objetivo final da persona?

Exemplo:

Quando estou realizando os pedidos aos fornecedores
Quero visualizar o número de produtos no estoque
Para que eu possa fazer um novo pedido se necessário

User Story x Job Story

Refinamento Contínuo

No livro do PBB, o trabalho de refinamento é comparado a fazer uma trilha - e não um trilho. O trilho é algo fixo, o trem segue o caminho até o fim. Já na trilha, conforme caminhamos, vamos verificando se precisamos ajustar nosso caminho, verificamos o plano, caminhamos mais um pouco e esse ciclo se repete mais a frente.

https://www.comicagile.net/comic/the-unagile-release-train/

Os itens do backlog são documentos vivos. Devem ser constantemente revisitados e refletem o progresso do entendimento do time.

Como medir a qualidade?

  • Definition of Ready — A definição de preparado deve ser atendida
  • Definition of Done — A definição de pronto estabelecida pelo time deve estar clara e ser possível de atender pelo item
  • INVEST

Independente: uma história não deve depender de outra história

Negociável: não é um contrato fechado.

Valiosa: deve entregar valor ao usuário

Estimável: fornece informações suficientes para estimada em alto nível

Sob medida: Deve caber em uma iteração

Testável: deve ser clara o suficiente para que testes sejam criados

  • BDD — Behavior Driven Development

Given (Dado) — Contexto

When (Quando) — Uma ação é realizada

Then (Então) — Um resultado é obtido

Exemplo:

Dado gerente de estoque logado no sistema
Quando consulta os últimos pedidos realizados
Então visualiza os pedidos realizados nos últimos 30 dias

Conclusão

Os melhores documentos em métodos ágeis ajudam a recordar nossas conversas, e não a substitui-las.

Livro Product Backlog Building.

Como já dito, mais do que seguir um formato, nossa documentação deve ser viva, pertinente e que ajude a todo o time ter uma visão do problema atual do usuário e porque e como procuramos entregar valor a ele.

--

--