Qual é a prioridade de uma Sprint?

Muitas vezes é difícil delimitar prioridades, principalmente quando tudo parece ser indispensável. No Scrum, como você classifca a prioridade de uma Sprint? Os erros de produção, a evolução do software ou as refatorações tomam o topo da lista? Existe alguma regra para categorizar os itens do backlog? Bom, vamos discutir sobre isso!

Objetivos da Sprint

O que parece ser mais importante? A correção do erro que ocorre ao cadastrar um novo fornecedor ou a implementação da nova funcionalidade que permite a validação do XML de Notas Fiscais? Ambas parecem ser essenciais para o cliente. Embora a decisão seja complicada, existem alguns parâmetros que talvez possam ser úteis para simplificá-la.

Primeiro, é necessário refletir sobre o objetivo da Sprint (ou Sprint Goals), no qual muitas vezes passa despercebido pela equipe. Para isso, reflita sobre a pergunta: o objetivo é estabilizar o software (corrigindo os bugs), fornecer novos recursos (lançamento de novas funcionalidades) ou aplicar manutenções para contemplar requisitos não-funcionais, como segurança, usabilidade e desempenho? A partir do momento em que o objetivo é encontrado, priorizar os itens se torna mais fácil.

Política de Impedimento

Porém, em algumas situações, o objetivo abrange, simultaneamente, as correções e as evoluções. Imagine que foi acordada a implementação de uma nova funcionalidade de controle de movimentações bancárias para o departamento financeiro, mas, ao mesmo tempo, há um erro no módulo contábil relacionado ao cálculo de impostos tributários, prejudicando a produtividade do setor.

Para encontrar a prioridade mais crítica, uma das alternativas é utilizar a política do impedimento: qual dos dois itens impedirá a utilidade do software?

Bom, o controle bancário é importante, mas é provável que o departamento contábil esteja praticamente impedido enquanto o erro no cálculo de impostos não é corrigido, e isso é ruim. A prioridade, neste cenário, se refere à continuidade do negócio do cliente, portanto, o erro se destaca e deve ser corrigido. Por outro lado, caso fosse possível contornar o erro no módulo contábil (o que tecnicamente chamamos de workaround), o controle bancário para o financeiro poderia receber uma atenção maior.

Entrega de Valor

Em segundo lugar, não devemos nos esquecer de um dos principais paradigmas do Desenvolvimento Ágil: entregar valor. Se você possui uma lista de itens que devem ser priorizados, discuta com a equipe sobre quais deles irão resultar em um incremento com maior valor para o cliente. Observar os itens com a perspectiva do usuário ao invés de uma perspectiva técnica pode ajudar a definir as prioridades.

Para isso, levante a questão: “O que o cliente espera do próximo incremento?” – certamente, funcionalidades úteis para o negócio! Aproveitando o ensejo, lembre-se de que comentei brevemente sobre Engenharia de Valor no artigo sobre o Agile 2014.

É importante mencionar que o conceito de valor do incremento pode mudar conforme o tempo, logo, nem sempre o que foi decidido na Sprint anterior será adequado para a Sprint atual. Isso significa que você não deve utilizar os mesmos parâmetros de prioridade repetidamente. O valor do incremento deve ser “recalculado” à medida que novas regras, tecnologias e fatores externos surgem na realidade do projeto.

A questão do valor nos leva à definição de produto potencialmente utilizável. A qualidade do que será entregue para o cliente depende justamente dessa categorização de prioridades. De nada adianta, por exemplo, lançar uma nova funcionalidade e, dias depois, receber uma série de reclamações devido à uma falha no código. Além de ferir a utilidade, essa funcionalidade se tornará mais um item de correção para a próxima Sprint, aumentando novamente a dificuldade em priorizar os itens.

Vale realçar que, naturalmente, se novos bugs forem introduzidos no software, ele não será mais potencialmente utilizável. O advérbio “potencialmente”, neste contexto, indica que o sistema de informação deve atuar como recurso fundamental para as operações do cliente.

E enfim, o usuário

Em terceiro lugar, em caso de dúvidas, a delimitação de prioridades pode ser discutida com o próprio usupário, ou, na sua ausência, com o Product Owner. O usuário conhece bem os critérios de sobrevivência do seu próprio negócio e pode fornecer informações relevantes para a elaboração do Sprint Backlog. Talvez um erro de produção pode não demandar tanta atenção quanto uma refatoração que irá melhorar o desempenho de uma funcionalidade já existente. O usuário, que convive diariamente com o andamento do negócio e com a utilização do software, é a melhor pessoa para fornecer essa orientação.

Para fechar o artigo, vou deixar uma frase que ouvi no seriado The Blacklist:

We don’t need to work harder. We just need to work smarter.

Aplique essa frase durante a definição de Sprints. Não é preciso ficar até altas horas concluindo tarefas que, no final das contas, não irão gerar um valor considerável para o cliente. Em vez disso, identifique itens potenciais para o próximo incremento. Se estes itens forem apropriadamente avaliados, não haverá insatisfação do cliente, como também não haverá desmotivação da equipe.

 

Abraços!
Obs: The Blacklist é uma grande série. Vale a pena assistir! 😉


André Celestino