código Ágil

Agile, Scrum, Extreme Programming , Java e mais

Posts Tagged ‘estimativa’

Estimativas Absolutas X Estimativas Relativas

Posted by Luciano Félix em 15 maio, 2008

Qual a extensão da muralha da China ?
Qual a temperatura do Sol ?
Qual a altura da Empire State Building ?

Se fizermos essas perguntas a 10 pessoas diferentes provavelmente receberemos 10 respostas completamente diferentes. Mas o que isso tem haver com software ? O processo de estimar esses valores não é muito diferente do que fazemos quando alguém nos pede para estimar quanto tempo vai levar para desenvolver a função X. Prever todos os fatores que possam impactar o processo de desenvolvimento é impossível, resumindo, acertar quanto vai levar para implementar um funcionalidade não difere muito de acertar a altura do Empire State ou a temperatura do Sol.

Esse tipo de estimativa pode ser chamado de absoluta, porque tentamos estimar diretamente o tempo de cada funcionalidade sem levar em conta as outras. Esse tipo de estratégia tem diversos problemas. As estimativas ficam totalmente desprotegidas em relação a mudanças na equipe já que as estimativas de tempo têm relação direta com a quantidade de pessoas que formam a equipe e a grau de experiência e conhecimento de cada uma delas, qualquer tipo de mudança nos membros da equipe invalidarão todas as estimativas já realizadas.

Quando passamos a estimar relativamente, não nos preocupamos inicialmente com o tempo, pode parecer estranho a primeira vista, mas o que precisamos estimar inicialmente é o tamanho de cada funcionalidade, o quão complexo será desenvolver o item, mas não só isso, o valor de complexidade atribuído a cada item deve ser definido em relação a outros. Exemplificando: Se atribuirmos um valor de complexidade 10 para o item A e estimarmos que o item B é três vezes mais complexo então atribuiremos o valor 30 para o item B e assim por diante até que todos os itens estejam estimados. Qual a vantagem disso? Primeiro iniciamos as estimativas com uma referência, para isso escolhemos um item que pareça ser simples e atribuímos nosso valor de referência (2,10,N,etc.) e a partir daí passamos a estimar o outros itens em relação a essa referência. O importante aí não é a precisão da referência, mas sim a consistência entre as estimativas. Outra vantagem é que as estimativas estão blindadas em relação a mudanças na equipe, mesmo que a equipe mude completamente o tamanho dos itens é o mesmo.

Mas precisamos ter uma idéia de quando o item estará pronto, precisamos planejar nossas entregas, etc. Para isso aplicamos nas nossas estimativas relativas a métrica da velocidade da equipe, ou seja quantos pontos de complexidade a equipe consegue resolver a cada iteração, como isso podemos derivar toda a agenda do projeto, se a equipe mudar a velocidade muda e a agenda muda, mas todo trabalho em estimar não é perdido.

Quando aplicamos a velocidade estamos injetando realidade nas nossas estimativas, estamos de fato usando uma métrica de quanto à equipe pode se comprometer e estamos entregando uma agenda muito mais confiável.

Vamos apronfundar esse assunto no futuro.

Creative Commons License

Anúncios

Posted in Uncategorized | Etiquetado: | 3 Comments »

Prioridade e Estimativa

Posted by Luciano Félix em 31 março, 2008

No desenvolvimento de software lidamos frequentemente com dois conceitos: Prioridade e Estimativa, essas duas palavrinhas, muito simples de entender a princípio, são na maioria das vezes mal empregadas durante o planejamento e desenvolvimento de nossos projetos.

Vamos pedir ajuda ao dicionário para falarmos sobre prioridade.

Prioridade.

1 Qualidade ou estado de primeiro; antecedência no tempo. 2 Precedência no tempo ou no lugar; primazia, preferência.

Quando, durante o desenvolvimento de um projeto, perguntamos qual o prioridade dos itens a serem desenvolvidos muitas vezes recebemos como resposta a já conhecida frase, “Tudo é prioridade !!”. O sentido da palavra prioridade está sendo completamente subvertido, se tudo é prioridade então nada é prioridade. Prioridade nesse caso está sendo confundido com importância. Todos os itens do projeto são importantes? Não duvido, porém existem graus de importância que podem ser definidos para os itens do projeto. No planejamento ágil a priorização dos itens é imprescindível. O Scrum por exemplo é bem claro quanto a isso. “O Product Owner é responsável por PRIORIZAR o product backlog”, isso significa definir a ordem em que os itens serão desenvolvidos pela equipe, se essa priorização não for feita, a equipe não saberá onde focar seus esforços e teremos sempre vários itens que estão 90% prontos o tempo todo.

Voltemos ao dicionário para encontrar a definição de Estimativa.

Estimativa.

1 Cálculo aproximado. 2 Avaliação.

Nada é dito sobre adivinhação do futuro, magia negra, etc. Muitas vezes é assim que encaramos nossas estimativas, como se fossem uma certeza, e assim planejamos meses e meses de trabalho em função desses valores e o pior nos agarramos a esse plano como se ele fosse a prova de balas, mas a verdade é que nenhum plano sobrevive a realidade. Por mais que conheçamos as tecnologias empregadas, por mais experiência que tenhamos em projetos semelhantes, por mais técnicas mirabolantes que apliquemos uma estimativa nunca vai passar de um chute. É impossível prevermos todos os acontecimentos que impactam o desenvolvimento do produto e quanto maior o horizonte de tempo do plano, mais improvável que esse chute seja preciso. Precisamos assumir isso como verdade e encontrarmos formas de tornar nossas estimativas mais próximas da realidade. Estimativas relativas, estimar tamanho no lugar de tempo, aplicar a velocidade da equipe, planejar para a incerteza, abraçar a mudança são algumas formas de tornar o processo de estimar menos doloroso e mais realista.

Creative Commons License

Posted in Uncategorized | Etiquetado: , , | Leave a Comment »