Muito se fala sobre estimativa no desenvolvimento de software; tem uma porção de artigos e blogs dando dicas de como fazer melhor. Apesar de ser um pouco contraditório que este artigo fale sobre isso, por que não damos uma virada nas coisas e olhamos por outro ângulo? Não quero escrever mais um post chato sobre estimativa, prefiro mergulhar em algumas ideias pouco convencionais e compartilhar minhas próprias experiências com você.
Reconhecendo a incerteza
Fazer estimativas de projetos é difícil, e a primeira coisa a lembrar é que não existem dois projetos iguais. Cada projeto tem seus próprios desafios e coisas que podem complicar o processo de estimativa. Por isso, é importante manter a mente aberta e não presumir coisas com base em experiências passadas. Em vez disso, você precisa analisar com cuidado todos os detalhes e fatores do projeto atual para chegar a uma estimativa mais precisa.
Outra coisa a considerar é que sempre vai existir incerteza, não importa o quanto a gente planeje ou analise. As coisas podem mudar, riscos podem surgir ou problemas podem acontecer durante a implementação. Por isso, é inteligente levar essa incerteza em conta, adicionando tempo ou recursos extras caso as coisas não saiam como planejado.
A comunicação também é superimportante. Todo mundo envolvido no projeto precisa falar de forma aberta e clara durante todo o processo de estimativa. Isso significa discutir expectativas, garantir que todos entendam o que precisa ser feito, resolver qualquer preocupação ou dúvida, e se manter atualizado sobre o progresso. Uma boa comunicação ajuda a evitar mal-entendidos, detectar problemas cedo e ajustar as estimativas se surgir uma informação nova.
Além disso, fazer uma análise retrospectiva de projetos pode ajudar a fazer estimativas mais precisas. Ao revisar o que aconteceu antes e aprender com os erros, conseguimos tomar decisões melhores ao estimar tarefas para novos projetos. Também vale pensar em como o nosso cérebro funciona ao fazer estimativas: podemos ter vieses que nos deixam otimistas ou confiantes demais. Entender esses vieses pode nos ajudar a ser mais realistas na hora de estimar.
Estimar projetos não é fácil, mas manter a mente aberta, considerar a incerteza, se comunicar bem e aprender com o passado ajuda a chegar a estimativas que realmente preparam o time para o que vem pela frente.
Formas erradas de fazer estimativas
Bom, vamos falar de estimativas, parceiro. Sabe, tem algumas formas bem erradas de fazer isso. Tipo, imagina simplesmente chutar no escuro o tempo e o esforço que vai levar para completar uma tarefa. Isso é como jogar dardos no escuro e torcer pelo melhor resultado. Acredite, não vai terminar bem.
E tem também aquela ideia de "tamanho único" que algumas pessoas têm. Elas acham que podem aplicar a mesma técnica de estimativa para todo e qualquer projeto debaixo do sol. Mas, ei, notícia de última hora (ou nem tão última assim, porque já falamos isso antes)... cada projeto é diferente, com seus próprios desafios e requisitos. Ignorar esses fatores externos é receita para o desastre.
Agora, aqui vai outro grande erro: ter uma mentalidade fechada. Veja bem, estimativas exigem flexibilidade e capacidade de adaptação. Se você fica preso no seu jeito e se recusa a considerar perspectivas alternativas ou informações novas, está se preparando para o fracasso, parceiro. Abraçar a colaboração e os pontos de vista diversos é fundamental para fazer estimativas precisas com chance real de serem realistas.
Então lembre-se: quando o assunto é estimativa, chutar no escuro e pensar em "tamanho único" simplesmente não vai funcionar. E nem comece a falar em ignorar fatores externos ou ter uma mentalidade fechada! Em vez disso, vamos abraçar práticas colaborativas e aproveitar a inteligência coletiva de todos os interessados envolvidos. Pode ser que precise de algumas discussões abertas e sessões de brainstorm, mas acredite, isso vai levar a resultados melhores no final.
Formas certas de fazer estimativas
Aqui vai um segredo que os deuses da engenharia de software vêm guardando a sete chaves: não existe uma única forma "certa" de fazer estimativas!
Mas, antes de você abandonar este artigo, só me escute. Sei que você veio buscando a forma certa de fazer estimativas e eu disse que ela não existe, mas o que posso compartilhar é o que funcionou para mim.
Vamos supor que alguém me pedisse para calcular quanto tempo eu levaria para comer um elefante de porte médio. Como eu faria isso?
Primeiro: cortar o elefante
O primeiro passo para mim sempre é quebrar o trabalho em tarefas pequenas. Quebrar as coisas o máximo possível ajuda a chegar a uma estimativa mais precisa, mas sendo realista, nem sempre é prático. Então, minha sugestão é decompor até você se sentir seguro o suficiente para apostar seu salário do mês na sua estimativa para aquela parte do trabalho.
(De qualquer forma, não perca tempo me perguntando qual é a melhor forma de estimar tarefas... simplesmente use o método com o qual você se sinta confortável, contanto que ele não vire o foco principal do seu projeto).
Segundo: gráfico de incerteza
Quem me conhece sabe que sou fã de carteirinha do gráfico de incerteza. Por quê? Bom, é algo que todo mundo consegue entender e se identificar com o coitado que está com as estimativas na mão.
Agora você já tem cada parte do elefante cortada e estimou (uma analogia um pouco selvagem) quanto tempo vai levar para comer cada uma. Mas o quão seguro você está em cada estimativa?
Por que não colocar cada "fatia" no cone de incerteza, de acordo com o quanto você duvida daquela estimativa? Depois, mostre o gráfico para todo mundo, para que entendam suas preocupações e incertezas. Isso vai ajudar a garantir que todos os envolvidos no projeto assumam a responsabilidade por essas estimativas.
Terceiro: some todas as fatias
Então, o tempo para comer o elefante é a soma do tempo para comer todas as fatias, certo? Não exatamente.
Se você fizer isso, não estaria considerando a posição da fatia no cone de incerteza, ignorando esse aspecto importante. Para incluir essa informação, você pode multiplicar sua estimativa por um fator relacionado a quão incerta é a situação. Isso te dá uma representação mais completa, porque leva em conta o intervalo de possibilidades dentro do cone de incerteza, em vez de um único número.
Mas e se eu não tiver (conhecimento, experiência, informação) suficiente para estimar uma tarefa? Como posso reduzir a incerteza?
- Chama o especialista!: Esse é o método mais rápido e simples, especialmente se tiver um especialista disponível. Basta confiar na opinião dele para estimar os detalhes quantitativos do projeto, como prazos e recursos potenciais. Também é a técnica mais usada.
- Pesquisa: Ao olhar para projetos anteriores ou se apoiar nas melhores práticas da indústria, você consegue obter informações valiosas que ajudam a estimar melhor e a identificar riscos antes que eles virem um problema.
- Spikes: Quando você está tentando encontrar uma solução para um problema, às vezes precisa colocar a mão na massa e começar a escrever algum código. É como um pequeno experimento para ver se sua ideia funciona. E bom, às vezes esse código acaba sendo útil para o projeto, mas na maioria das vezes é algo que você descarta depois de provar seu ponto. Não esqueça de definir um prazo limite para o spike, senão você pode acabar dedicando uma eternidade a ele.
Faça como a indústria farmacêutica faz: eles reservam dinheiro para seus projetos de pesquisa, os executam, e depois decidem se liberam mais verba com base nos resultados. Você pode fazer algo parecido, começando uma tarefa com um orçamento definido. Quando o dinheiro acabar, avalie como as coisas foram e decida se busca mais recursos para continuar ou se encerra a tarefa.
Por que as estimativas são tão importantes?
Por que será que todo mundo discute tanto sobre isso e ninguém tem uma forma definitiva de estimar projetos de software? Será que é tão difícil ou importante assim? Vamos aplicar o que aprendemos antes e comer esse elefante aos poucos.
Primeiro, estimativas não são só importantes... elas são cruciais no desenvolvimento de software! Desenvolvimento de software é um negócio, e a menos que você esteja em algum time de produto bem tranquilo ou nadando em dinheiro (ou em outros casos especiais), o dinheiro vai estar na sua cabeça.
A maioria dos artigos sobre esse tema só fala de dinheiro, e no final tudo se resume a isso. Mas quero destacar outros aspectos da estimativa para você entender de verdade a importância dela.
- Planejamento e alocação de recursos: Ajudam você a planejar e alocar recursos: quando você sabe o tempo e o esforço que cada tarefa exige, consegue tomar decisões melhores sobre equipe, prazos e a gestão geral do projeto.
- Estabelecer expectativas realistas: Permitem que você defina expectativas realistas para clientes e para o time. Quando o prazo estimado está claro, você consegue comunicar isso sem ambiguidade e evitar mal-entendidos mais adiante.
- Priorização de tarefas: Servem para priorizar tarefas de acordo com a complexidade ou o esforço que exigem, para decidir quais funcionalidades vale a pena desenvolver primeiro.
- Identificação de riscos potenciais: Ajudam a identificar riscos, porque destacam quais áreas do projeto vão precisar de mais atenção ou recursos, permitindo que você se antecipe antes que o problema apareça.
- Melhoria na tomada de decisão: Melhoram a tomada de decisão ao longo de todo o projeto: você pode usá-las para comparar abordagens alternativas, priorizar entre funcionalidades e conferir se as decisões continuam alinhadas com o objetivo geral.
A IA ao resgate
Ok, entendi... mas será que é tão difícil assim? Por que ninguém consegue achar a forma perfeita de estimar projetos de desenvolvimento de software? Sério, estamos vivendo na era da IA! Não posso simplesmente pedir para o ChatGPT me dar uma estimativa?
Simplesmente não. Estimar projetos de desenvolvimento de software com precisão é, de fato, uma tarefa desafiadora. Embora a IA, como o ChatGPT, possa ajudar em várias áreas, estimar prazos e esforços do projeto ainda exige experiência e envolvimento humano. Aqui vão algumas razões pelas quais é difícil chegar a estimativas perfeitas:
- Complexidade: Projetos de software podem ser altamente complexos, envolvendo diversas variáveis, dependências e riscos potenciais. Prever todos esses fatores com precisão é, em si, uma tarefa complexa.
- Incerteza: Muitas vezes há incertezas nos requisitos, mudanças de escopo e dependências externas que podem afetar os prazos do projeto. É difícil prever e considerar todas essas incertezas.
- Fatores humanos: Estimar o desenvolvimento de software envolve habilidades e esforços humanos, influenciados pelas capacidades e pela experiência de cada um. Diferentes desenvolvedores podem ter velocidades, abordagens ou desafios imprevistos diferentes.
- Tecnologias emergentes: A natureza sempre em mudança da tecnologia torna difícil estimar projetos usando ferramentas ou frameworks muito recentes, que ainda não têm dados históricos suficientes para uma estimativa precisa.
- Comunicação e colaboração: Uma estimativa precisa exige comunicação e colaboração eficazes entre as partes interessadas envolvidas no projeto. Mal-entendidos ou informações incompletas podem levar a estimativas imprecisas.
Embora a IA possa apoiar os processos de estimativa analisando dados históricos ou trazendo insights baseados em padrões, ela não substitui a necessidade de julgamento humano e de compreensão do contexto específico do projeto.
É melhor combinar as capacidades da IA com o conhecimento de especialistas para melhorar a precisão da estimativa, em vez de depender só da automação para estimar projetos de desenvolvimento de software.
Conclusão
Como vimos, estimar é um aspecto essencial do desenvolvimento de software que vai muito além do dinheiro: ajuda a planejar, definir expectativas realistas, priorizar tarefas e tomar decisões melhores ao longo do projeto.
A IA pode ajudar em algumas partes do processo, mas não substitui a experiência nem o julgamento humano. Estimar bem continua dependendo de reconhecer a incerteza, evitar abordagens automáticas e apostar na colaboração do time.
A melhor forma de melhorar é simples: aprender com projetos passados, pedir a opinião de quem sabe quando for preciso, pesquisar para reduzir a incerteza, e usar ferramentas como spikes ou orçamento limitado para planejar melhor.




