Deu pano pra manga porque tem uns que concordam, outros que discordam veementemente. Pela amostragem que tive, mais pessoas discordam do que concordam, como meu colega de blog Ademir que prefere chamar a técnica de bug-oriented programming. Pra mim o "trabalhinho porco" tem seu lugar sim: na construção do oráculo de requisitos, também conhecido como protótipo funcional.
Um oráculo de requisitos é um sistema que se comporta exatamente como o sistema que você quer desenvolver. Assim, sempre que você estiver em dúvida sobre como o sistema deve funcionar, basta perguntar ao oráculo. A diferença entre o oráculo e o sistema é que o oráculo tem bugs, é lento, seu código é complicado e difícil de se manter, ele não escala, enfim.
Quando se fala em protótipo vem em mente algo que é parecido com o que a gente quer fazer, mas que na verdade é de fachada: usa dados enlatados, simulações, nada é real. Um oráculo não é assim: ele funciona de verdade. Um usuário qualquer não deveria notar diferença alguma entre o oráculo e o sistema real.
Por que fazer um oráculo desses, ora? Não vai dar um trabalhão? Vai sim. Por que não investir o tempo em já desenvolver o sistema direito, uma vez só, certinho? Por causa de uma das leis de Brooks:
|
Muito esperto esse Fred Brooks. O fato é que o sistema que você está construindo não vai ficar certo. Quando começarem a usá-lo, você vai descobrir que fez tudo errado. Aí você vai remendar ele todo pra ele ficar certo, e todo seu trabalho cuidadoso vai por água abaixo.
Muito melhor é você fazer um sistema pra se jogar fora. Construa a primeira versão sem se importar com escalabilidade, manutenibilidade, testabilidade, robustez, nada. Ela só tem de funcionar o suficiente pra você ter alguns usuários. Aí, disponibilize pra quantos usuários você puder. Estimule-os a usarem bastante. Observe e escute. Dessa forma você consegue descobrir o que fez errado. Conserte e repita até ficar certo.
Aí é só você construir o sistema de verdade. Agora você sabe o que fazer: um sistema extensível, versátil, bem escrito, testável, que se comporta exatamente como o oráculo de requisitos. Parabéns!
Vou construir meu próximo sistema dessa forma. Depois eu conto como foi.