Os primeiros 90% do código representam os primeiros 90% do tempo de desenvolvimento. Os 10% restantes do código representam os outros 90% do tempo de desenvolvimento.
- Tom Cargill, Bell Labs
O que isso significa exatamente na prática? Que os programadores realizam uma quantidade substancial de trabalho e estão dando 180% de si mesmos ou?
programming-practices
theory
Josip Ivic
fonte
fonte
Respostas:
Imagine o seguinte: quando você começa a trabalhar em software, pode escrever grandes quantidades de código em relativamente pouco tempo. Esse novo código pode adicionar uma enorme quantidade de novas funcionalidades. O problema é que, muitas vezes, essa funcionalidade está longe de ser "concluída", pode haver erros, pequenas alterações (pequenas em pequenas empresas) e assim por diante. Portanto, o software pode parecer que está quase pronto (90% pronto), porque suporta a maioria dos casos de uso. Mas o software ainda precisa de trabalho. O objetivo desta regra é que, apesar de o software parecer estar quase pronto, a quantidade de trabalho para colocar o software no estado de funcionamento adequado é tão grande quanto chegar ao estado "quase pronto". Isso ocorre porque a correção de erros geralmente consome tempo, mas não produz muito código.
O problema é que a maioria dos desenvolvedores estima colocar o software no estado "quase pronto", porque isso é relativamente simples comparado à estimativa do esforço total que o software levará.
fonte
É uma referência a um cenário comum, que infelizmente ainda ocorre hoje:
"90%" é uma cifra arbitrária, mas mostra bem o ponto: estimativas são suposições e provavelmente estarão erradas (geralmente muito erradas) e a natureza humana garante que quase sempre subestimamos, de modo que as coisas excedam.
fonte
other 90%
Eu ouvi uma versão diferente disso (também chamada de "regra 90-90") que fica assim:
Ambas as versões se referem à dificuldade de estimar corretamente os esforços para o desenvolvimento de produtos de software e às armadilhas comuns em que as pessoas tendem a cair:
fonte
Esta regra complementa a regra 80-20. Agora, existem muitas interpretações diferentes da regra 80-20, mas as duas que eu mais gosto são:
Na prática, isso significa o seguinte: o desenvolvimento começará e seguirá até certo ponto em que os primeiros atrasos serão notados. Os atrasos podem ser de várias naturezas:
Resumindo, é muito mais fácil chegar perto da meta do que realmente alcançá-la.
fonte
Acho a explicação da Wikipedia bastante esclarecedora:
fonte
Não, os programadores sempre fazem a mesma quantidade de trabalho por unidade de tempo. A cotação é sobre subestimação de custos e excedentes. Os 180% são a quantidade de tempo e dinheiro que o projeto acaba custando.
Isso significa aproximadamente "Levará o dobro do tempo que você pensa" e "Você pensará que está indo bem até que seja tarde demais (o prazo está próximo)".
fonte
O que isso significa na prática é que as pessoas mentem para si mesmas.
Se um programador disser "estamos 90% concluídos", significa que 90% do esforço para criar os recursos foi gasto.
Se um gerente de projeto disser "estamos 90% concluídos, só preciso que alguém termine", significa que eles são 90% do orçamento (e provavelmente 50% concluídos). Este é um cliente sem dinheiro, grandes expectativas e uma atitude ruim.
A diferença é que é preciso mais esforço do que os recursos de codificação para concluir um projeto: qa, correções de bugs, edições de cópias, implantação.
Essas coisas precisam ser gerenciadas no projeto e são de responsabilidade do gerente do projeto. Isso muitas vezes surpreende os novos PMs que chegam a "90% do recurso concluído" apenas para perceber que estão a meio caminho do "projeto concluído".
fonte