A maioria dos projetos e demandas exige um previsão de esforço, prazo e custo antes das suas aprovações para execução. Embora existam movimentos emergentes contrários ao conceito de estimativas em alguns círculos da comunidade ágil (#noestimates), as estimativas são necessidades básicas em praticamente toda organização, inclusive naquelas que já usam métodos ágeis.
Nesse sentido, compilo aqui 5 técnicas que analistas, coordenadores e gerentes podem usar ao se deparar com o problema de estimativas em métodos ágeis.
Mas antes que falemos das técnicas, devemos nos lembrar de três pontos muito importantes da prática de estimativas.
- Reconhecer que estimativas são apenas… projeções imprecisas. Estimativas, por definição, tem erros associados. E estudos diversos na TI mostram que a variabilidade das estimativas realizadas no fase inicial de projetos é de +- 4x .
- Não confundir estimativas, compromissos e metas. Estimativas são projeçoes realizadas com um grau de incerteza e que tentam prever um estado futuro. Ao mesmo tempo, as estimativas devem ser baseadas em algum racional técnico e estatístico. Já as metas não normalmente arbitradas por gerentes e não possuem racional estatístico associado. Saber separar estas duas informações é importante para reduzir o conflito, buscar compromissos viáveis e não cair na armadilha da orçamentação (ver figura). Um compromisso é normalmente um número que se posiciona entre a estimativa e uma meta gerencial.
Fonte: Dilbert.com (todos os direitos reservados) - Usar técnicas de contagem sempre que possível. Se não for possível, usar técnicas de cálculo. E se não for possível, usar técnicas de julgamento. Uma forma simples de entender esta regra seria pensar em uma tarefa de estimativa do número de cadeiras e mesas que um determinado salão de festas suportaria. A técnica mais precisa seria literalmente contar as cadeiras e mesas em um ambiente similar e fazer alguma analogia. Na impossibilidade da contagem, podemos fazer cálculos baseados nas dimensões das cadeiras, mesas e do salão. E na impossibilidade de cálculo, podemos recorrer a especialistas que fazem julgamentos baseado nas suas experiências anteriores.
Apresentados os avisos sobre estimativas, vamos às técnicas.
Técnica 1 – Contagem Antecipada de Pontos de Função por Técnica Indicativa [Categoria: Contagem]
Esta técnica é super simples e demanda apenas que você conte quantas entidades o seu sistema irá manter (ALIs) e quantas entidades o seu sistema irá interfacear (AIEs). E depois basta multiplicar os ALIs por 35 e o AIEs por 15. Simples e direta.
E o mais interessante é que existe uma boa correlação estatística desta técnica com a contagem detalhada de pontos de função. O gráfico de correlação abaixo foi gerado pelo instituto europeu de contagem de pontos de função que criou esta técnica, o NESMA.
Técnica 2 – Contagem Antecipada de Pontos de Função por Técnica Estimativa [Categoria: Contagem]
Aqui você identifica e conta as entidades e também as transações. Cada entidade mantida soma 7 pontos, cada entidade externa soma 5 pontos, cada entrada externa soma 4 pontos, cada consulta externa soma 4 pontos e finalmente cada saída externa soma 5 pontos.
Um exemplo passo a passo de como usar as técnicas 1 e 2 é mostrada aqui no site da Fatto.
Técnica 3 – Planning Poker com as Mãos [Categoria: Julgamento]
Esta técnica se baseia no tradicional planning poker, mas com uma diferença crucial que é o uso das mãos para gerar os pontos de cada história. Cada pessoa usa a sua mão na hora de votar e pode portanto indicar os valores 1, 2, 3, 4 e 5. Isso dá mais dinamismo ao jogo e permite realizar sessões com mais velocidade que a técnica tradicional.
Devemos lembrar que todos devem votar simultaneamente, pois uma das premissas do planning poker (que é um tipo de prática Wide Band Delphi) é não gerar viés de influência para os participantes da dinâmica.
Técnica 4 – Estimativa por Três Pontos [Categoria: Julgamento]
Aqui o especialista estima o tamanho de uma tarefa baseado em três parâmetros: o valor médio, o valor pessimista e o valor otimista. Depois ele utiliza os três pontos para fazer o cálculo do valor estatisticamente provável e o desvio padrão associado. O valor provável (E) é calculado como: (4* valor médio + valor pessimista + valor otimista)/6. Já o desvio padrão (SD) é calculado como: (valor pessimista – valor otimista)/6.
Com estes dois números podemos agora expressar a nossa estimativa com um grau de confiança estatística conforme tabela abaixo:
- Nível de confiança do valor de E +/- SD é aproximadamente 68%
- Nível de confiança do valor de E +/- 1.645 * SD é aproximadamente 90%
- Nível de confiança do valor de E +/- 2 * SD é aproximadamente 95%
A técnica dos três pontos é usada como insumo na técnica PERT, para a organização de cronogramas e caminhos críticos. A técnica PERT é hoje implementada em ferramentas gerenciais como o MS Project ou Primavera.
Técnica 5 – Estimativas por Analogia [Categoria: Cálculo e Julgamento]
Aqui você observa o comportamento de projetos similares ao seu (em termos de tamanho ou tecnologia) e usa estes dados para estimar o tamanho, tempo ou custo do seu projeto. Existem hoje muitas ferramentas que podem ser usadas para suportar este trabalho. Uma ferramenta livre que utilizo há mais de 10 anos para o suporte a estimativas ágeis é o Construx Estimate. Com entradas muito simples, como a quantidade de pontos de função do projeto e o custo médio do seu time, ela projeta faixas prováveis de esforço, prazo e orçamento para o seu projeto. No exemplo da tela abaixo ela me mostra por exemplo que a iniciativa estimada terá entre 8,5 a 12 meses para ser realizada.
Por baixo dos panos, esta ferramenta usa a técnica de Simulação de Monte Carlo para fazer as análises do caminhos prováveis, mas você não precisa conhecer esta técnica para usar a ferramenta (assim como não precisa ser um mecânico de automóveis para dirigir o seu carro).
Para finalizar, é primordial lembrar que times ágeis calibram as suas estimativas permanentemente ao longo de um projeto. Para isso, eles devem medir a sua velocidade (pontos entregues em um sprint) e usar este tamanho para calibrar o tamanho dos itens que serão levados para o próximo sprint.