A porcentagem de equilíbrio da capacidade total alocada para a fixação de defeitos é igual à taxa de injeção de defeitos .
Muitos fatores podem afetar essa taxa, entre eles, é claro: que tipo de produto a equipe está desenvolvendo, quais tecnologias e práticas técnicas utilizam, o nível de habilidade da equipe, a cultura da empresa etc.
Considerando a Equipe B, se eles criarem, em média, 8 unidades de retrabalho para cada 10 unidades de trabalho concluídas, o trabalho dessas 8 unidades criará novas 6,4 unidades de retrabalho. Podemos estimar o esforço total que eles eventualmente terão que gastar como a soma de uma progressão geométrica:
10 + 8 + 6,4 + 5,12 + ...
O número de bugs diminuirá exponencialmente com o tempo, mas o Time B tem um coeficiente em seu expoente que chegará a zero muito lentamente. Na verdade, a soma dos três primeiros termos da série acima é de apenas 24,4; dos cinco primeiros, 33,6; dos primeiros 10, 45; de toda a série, 50. Então, resumo da equipe B: taxa de injeção de defeitos, 0,8; desenvolvimento de características, 10/50 = 20%; fixação de defeitos, 80%. 20/80 é a alocação de capacidade sustentável.
Por outro lado, a equipe A está em muito melhor forma. Sua progressão é assim:
40 + 10 + 2,5 + 0,625 + ...
A soma desta série é 53 1/3, portanto, a alocação de desenvolvimento de recursos do Time A é de 40 / (53 1/3) = 75% e a alocação de correção de defeitos é de 25%, o que corresponde à taxa de injeção de defeitos de 10/40 = 0,25 .
Na verdade, todos os termos da série do Time A após os três primeiros são insignificantes pequenos. O que isso significa em termos práticos é que a Equipe A provavelmente pode eliminar todos os erros com algumas versões de manutenção, sendo a segunda versão muito pequena em escopo. Isso também cria uma ilusão de que qualquer equipe pode fazer isso. Mas não a equipe B.
Pensei nessa equivalência ao ler o novo livro de David Anderson, "Kanban" . (O livro trata de um assunto diferente, mas também trata de questões de qualidade.) Ao discutir a qualidade do software, Anderson cita este livro, de Capers Jones, "Avaliações de software, benchmarks e práticas recomendadas" :
"... em 2000 ... a qualidade de software medida para as equipes norte-americanas ... variou de 6 defeitos por ponto de função a menos de 3 por 100 pontos de função, um intervalo de 200 a 1. O ponto médio é de aproximadamente 1 defeito por 0,6 a 1,0 pontos de função. Isso implica que é comum que as equipes gastem mais de 90% de seu esforço consertando defeitos. "Ele cita um exemplo fornecido por um de seus colegas de uma empresa que passa 90% do tempo consertando seus bugs. .
A fluência com que Anderson passa da taxa de injeção de defeitos para a alocação da capacidade de fixação de defeitos ( demanda por falha é o termo para isso) sugere que a equivalência das duas coisas é bem conhecida pelos pesquisadores de qualidade de software e provavelmente já é conhecida há algum tempo. .
As palavras-chave na linha de raciocínio que estou tentando apresentar aqui são "equilíbrio" e "sustentável". Se retirarmos a sustentabilidade, há uma maneira óbvia de enganar esses números: você faz a codificação inicial, passa para o código em outro lugar e deixa a manutenção para os outros. Ou você aumenta a dívida técnica e a descarrega em um novo proprietário.
Obviamente, nenhuma alocação específica será adequada para todas as equipes. Se decretarmos que 20% devem ser gastos em bugs, se uma equipe tiver uma taxa de injeção de defeitos ultra baixa, eles simplesmente não terão bugs suficientes para preencher o tempo e, se uma equipe tiver uma taxa muito alta, seus bugs continuará a acumular.
A matemática que usei aqui é muito simplificada. Negligenciei coisas como custos de transação (reuniões de planejamento e estimativa, post-mortem etc.), que afetariam um pouco as porcentagens. Também omiti equações simulando a sustentação de um produto e o desenvolvimento de outro simultaneamente. Mas a conclusão ainda permanece. Faça o que puder, em termos de práticas técnicas, como testes de unidade, integração contínua, revisões de código etc., para reduzir sua taxa de injeção de defeitos e, consequentemente, sua demanda de falhas. Se você puder criar apenas um bug para cada 10 recursos, terá muito tempo livre para desenvolver novos recursos e satisfazer seus clientes.