> “Quanto tempo você acha que isso vai levar para ficar pronto?”
- Esta pergunta, que desenvolvedores de software temem e detestam, me fez refletir por causa da minha máquina de lavar
- A dificuldade da estimativa de esforço de software (Software Effort Estimation) que a máquina de lavar me mostrou
- Ao me mudar para uma casa nova, o processo de instalar a máquina de lavar levou muito mais tempo do que o esperado
- Era uma tarefa que normalmente terminaria em 10 minutos, mas desta vez levou 4 horas
- Surgiram obstáculos (blockers) que eu não havia previsto, atrasando a instalação
- Percebi que esse processo é semelhante ao motivo pelo qual é tão difícil estimar esforço no desenvolvimento de software
- Obstáculos e soluções
- Obstáculo 1: não havia um furo para passar a conexão de energia, então não foi possível ligar a máquina de lavar na tomada
- Solução 1: comprei uma serra copo de 60 mm em uma loja de materiais e fiz o furo
- Obstáculo 2: uma furadeira de uso doméstico não conseguia usar a serra copo
- Solução 2: peguei uma furadeira mais potente emprestada e a usei
- Obstáculo 3: as mangueiras de entrada e saída de água eram mais curtas do que o esperado na casa nova
- Solução 3: tentei comprar uma mangueira extensora nova, mas percebi que a mangueira existente não podia ser estendida e acabei comprando uma mangueira nova novamente
- Obstáculo 4: uma tampa metálica presa com firmeza à torneira não saía
- Solução 4: comprei uma chave inglesa maior e removi a tampa
- Obstáculo 5: o spigot do ralo estava bloqueado por uma parede de PVC
- Solução 5: perfurei a parede de PVC com uma furadeira e conectei a mangueira de drenagem
- Depois de 5 idas à loja de materiais e 4 horas de trabalho, consegui instalar a máquina de lavar corretamente
- Obstáculo 1: não havia um furo para passar a conexão de energia, então não foi possível ligar a máquina de lavar na tomada
- Por que é difícil estimar esforço no desenvolvimento de software
- Mesmo em tarefas familiares, quando o ambiente muda, há grande chance de surgirem variáveis inesperadas
- O motivo pelo qual estimativas baseadas em experiências passadas frequentemente falham são os “desconhecidos desconhecidos (Unknown Unknowns)”
- Alguns exemplos:
- A biblioteca que você pretendia usar não é mais mantida, então você precisa corrigir o código por conta própria
- Uma atualização da ferramenta de desenvolvimento faz com que a forma antiga de trabalhar deixe de se aplicar
- Uma mudança na versão do sistema operacional faz com que dependências existentes deixem de funcionar corretamente
- Um novo componente é adicionado à infraestrutura, mas se comporta de forma diferente do esperado
- Conclusão
- A experiência na casa nova mostra o quanto é difícil estimar esforço no desenvolvimento de software
- Antes de começar o desenvolvimento, é preciso investigar os requisitos com o máximo de rigor possível, mas o surgimento de blockers inesperados é inevitável
- Mesmo que um projeto de software pareça uma tarefa familiar, em um ambiente novo podem surgir desafios completamente diferentes
- É necessário ajustar cronograma e recursos com flexibilidade, levando essas variáveis em conta
1 comentários
Opiniões do Hacker News
Estimativa de software é uma piada, porque não há punição por subestimar
Ótimo artigo, mas falta a principal diferença em relação à experiência com software
Projetos DIY são sempre assim
Aprendendo como manter a furadeira reta por 25 minutos depois de perfurar e a surpresa dos fones com cancelamento de ruído
A história é boa. Mas minha experiência é quase o oposto
Isso me faz pensar na frase "a realidade tem detalhes surpreendentes"
Quando o autor faz um furo para o cabo de energia, ele encaixa direitinho um inserto plástico limpo
A maioria dos colegas se surpreende quando digo que pesquisa e inventário antes do início do projeto consomem muito tempo
Um ponto interessante para considerar na próxima vez que você se assustar com o preço de um técnico
O que fazer quando você nem sabe quais perguntas fazer antes de começar um projeto de software?