CASO 02
A equipe estava fazendo exatamente o que foi pedido.
O problema relatado era baixa produtividade na engenharia.
A equipe de desenvolvimento parecia não atender às expectativas e ter dificuldade para entregar no prazo.
Mas, quando rastreamos o próprio trabalho, surgiu um padrão diferente.
O que nos disseram
Uma organização de desenvolvimento enfrentava dificuldades de produtividade.
O trabalho levava mais tempo do que o esperado. As funcionalidades chegavam à revisão, mas não eram aceitas. Os releases atrasavam.
Do lado do produto, a explicação parecia simples: a equipe de desenvolvimento não entregava de forma consistente o que havia sido solicitado.
Se essa explicação estivesse correta, o lugar óbvio para investigar era a produtividade da engenharia.
O que observamos
A equipe trabalhava de forma iterativa.
Antes da implementação, uma story era discutida e o comportamento esperado era definido. A equipe de desenvolvimento então implementava esse comportamento durante a sprint.
Os engenheiros não estavam ignorando esses requisitos.
Eles os implementavam.
O problema aparecia depois.
Durante a revisão, comportamentos que não faziam parte dos critérios de aceite acordados às vezes se tornavam necessários para que o trabalho fosse aceito.
Por exemplo, uma story podia definir um fluxo de trabalho para determinada operação.
No momento da revisão, uma condição adicional podia ser introduzida: em determinada circunstância, parte desse fluxo deveria ser pulada automaticamente.
Em outro caso, o comportamento acordado podia especificar como o sistema deveria informar o usuário quando uma operação falhasse.
No momento da revisão, a expectativa podia passar a ser que o próprio sistema se recuperasse da falha, sem exigir que o usuário tomasse essa providência.
Em outro, uma funcionalidade de pré-visualização podia atender aos critérios acordados, mas durante a revisão passava a ser necessária também uma funcionalidade de manipulação.
Cada solicitação podia ser razoável.
Não era esse o problema.
O padrão
As novas expectativas não eram tratadas como mudanças na especificação.
Eram tratadas como evidência de que a equipe de desenvolvimento não havia implementado corretamente a especificação original.
Essa distinção mudava tudo.
Da perspectiva do product owner, a funcionalidade solicitada não estava concluída.
Da perspectiva da equipe de desenvolvimento, os critérios de aceite acordados haviam sido implementados — e novos requisitos surgiam depois da implementação.
A organização descrevia o atraso resultante como baixa produtividade da engenharia.
Mas a sequência observável do trabalho era outra:
- Os critérios de aceite eram acordados.
- A equipe de desenvolvimento os implementava.
- Novas expectativas surgiam durante a revisão.
- As novas expectativas não eram classificadas como mudanças.
- A implementação original era, portanto, tratada como incompleta.
- O trabalho adicional estendia o tempo de entrega.
- O atraso era atribuído à produtividade da engenharia.
Nossa hipótese
A equipe de desenvolvimento não sofria, principalmente, de um problema de produtividade.
O sistema usado para determinar se um trabalho estava concluído era instável.
A equipe podia atender aos critérios de aceite que existiam quando a implementação começou e ainda assim reprovar na revisão, porque os critérios em vigor haviam mudado até o momento em que o trabalho foi avaliado.
Isso cria um problema de produtividade particularmente difícil de resolver.
Aumentar a velocidade de codificação não resolve.
Melhorar as ferramentas não resolve.
Pedir que os desenvolvedores estimem com mais precisão não resolve.
Mesmo tornar a equipe drasticamente mais rápida apenas faria com que ela alcançasse mais cedo um alvo em movimento.
Por que o problema era difícil de enxergar
Ninguém precisava ser desonesto para que esse sistema surgisse.
O product owner podia acreditar sinceramente que o comportamento adicional era parte óbvia do que havia sido solicitado originalmente.
Os desenvolvedores podiam acreditar sinceramente que haviam implementado exatamente o que fora acordado.
As duas declarações podiam descrever com precisão o entendimento de cada pessoa.
Nenhuma delas, por si só, descrevia o que estava acontecendo com o trabalho.
Por isso, não precisávamos decidir qual interpretação estava correta.
Comparamos os critérios de aceite que existiam antes da implementação com as expectativas aplicadas durante a revisão.
A diferença era observável.
O que as evidências mostraram
O problema relatado era baixa produtividade na engenharia.
O problema observado era que as condições para aceitar um trabalho concluído podiam mudar depois que ele já havia sido implementado.
Como resultado, um trabalho que correspondia à especificação acordada ainda podia ser classificado como incompleto.
A equipe estava sendo medida por requisitos que não necessariamente existiam quando o trabalho começou.
Isso significava que o aparente problema de produtividade não podia ser resolvido apenas otimizando os desenvolvedores.
Os desenvolvedores não estavam deixando de atender aos critérios de aceite. Os critérios de aceite é que mudavam depois que o trabalho estava pronto.
A visão da Pulsar
Se tivéssemos aceitado o diagnóstico original, teríamos começado perguntando como tornar a equipe de desenvolvimento mais rápida.
Em vez disso, rastreamos o trabalho desde o acordo até a implementação e a revisão.
A diferença entre o que a organização chamava de problema e o que o próprio trabalho nos mostrava era o sinal útil.
O problema declarado era a produtividade da engenharia. O problema observável estava em outro lugar.