25 pontos por GN⁺ 2025-02-19 | 1 comentários | Compartilhar no WhatsApp

> “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
  • 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

 
GN⁺ 2025-02-19
Opiniões do Hacker News
  • Estimativa de software é uma piada, porque não há punição por subestimar

    • Dá para comparar com estimativas na produção de filmes. Existem empresas que vendem garantias de conclusão
    • A garantia de conclusão custa cerca de 2% do custo de produção. Normalmente é usada em filmes independentes com orçamento entre 3 milhões e 70 milhões de dólares
    • A empresa de garantia cobre parte dos estouros de custo, mas, se ficar grande demais, demite o diretor e assume a produção. Esse mecanismo gera um efeito real
    • As empresas de garantia fazem estimativas com base em dados históricos. Elas têm os custos reais de muitos filmes
    • Mantêm registros detalhados do custo de cada cena. Por exemplo, no caso de uma perseguição de carros, consultam no banco de dados o custo de 100 perseguições anteriores
    • Também têm informações sobre diretores, produtores e atores, e comparam quanto custa filmar cenas com eles em relação aos pares
    • Isso não é ciência de foguetes, é subscrição de seguros
  • Ótimo artigo, mas falta a principal diferença em relação à experiência com software

    • O cliente pode não saber o que realmente quer. Não importa o quanto você pergunte antes, não dá para obter essa informação antecipadamente
    • Deve-se recusar terminantemente cobrar por hora e ser cobrado por projeto
  • Projetos DIY são sempre assim

    • Fala-se muito sobre os bens adquiridos, mas ferramentas e peças ocupam muito espaço
    • O autor já tinha muitas ferramentas, mas ainda faltavam algumas
    • No fim, as idas à loja de ferragens diminuem, mas a oficina fica cheia de coisas
  • Aprendendo como manter a furadeira reta por 25 minutos depois de perfurar e a surpresa dos fones com cancelamento de ruído

    • Fones de ouvido com cancelamento de ruído não são equipamentos de proteção auditiva. Equipamentos de proteção auditiva criam uma barreira física entre a fonte do ruído e o ouvido
    • Fones com cancelamento de ruído escutam o som ao redor e geram a onda oposta. Como não são perfeitos, não protegem suficientemente os ouvidos
  • A história é boa. Mas minha experiência é quase o oposto

    • Não é que 90% seja fácil; 90% é ficar se debatendo
    • Muitas vezes, várias empresas repetem o trabalho sobre o mesmo produto
  • Isso me faz pensar na frase "a realidade tem detalhes surpreendentes"

    • As coisas que você não sabe permanecem assim até você se aproximar do novo
  • Quando o autor faz um furo para o cabo de energia, ele encaixa direitinho um inserto plástico limpo

    • Os construtores cortam de qualquer jeito um buraco para a mangueira de água e vão fumar um cigarro
    • Isso bate com experiências anteriores
  • A maioria dos colegas se surpreende quando digo que pesquisa e inventário antes do início do projeto consomem muito tempo

    • A maioria dos colegas termina o projeto rápido, e muito tempo acaba sendo gasto na manutenção posterior
    • Eu invisto bastante tempo no início do projeto para não precisar de manutenção posterior
  • Um ponto interessante para considerar na próxima vez que você se assustar com o preço de um técnico

    • O motivo de um encanador cobrar 300 dólares em poucos minutos para conectar a máquina de lavar é que ele sabe como fazer um furo no ralo
  • O que fazer quando você nem sabe quais perguntas fazer antes de começar um projeto de software?

    • Não sou contra tratar o trabalho exploratório como um exercício de levantamento de requisitos
    • Se você fizer uma ida à loja de ferragens e sair com uma grande lista de compras e um conjunto de perguntas em aberto, dá para trabalhar de forma mais eficaz e simples