18 de agosto de 2011

BDUF is evil

O que é BDUF, afinal?
BDUF = Big Design Up Front (Projeto Grande Logo de Cara)

BDUF é o (mau) hábito de já prever um monte de coisa que "eu sei que vai precisar lá na frente", logo no início do projeto. Ou de adivinhar o que o cliente vai pedir.

É comum vermos isso, principalmente no projeto de tabelas. À medida que o sistema vai ficando velho e pessoas que não participaram do desenvolvimenteo entram na manutenção, vamos cada vez mais ouvindo: "ah, esse campo nunca foi usado. Nem sei pra quê taí, mas não vamos apagá-lo. Vai que dá problema...".

Mas o BDUF também pode ser visto em funcionalidades básicas, "necessárias". Eu mesmo vivi isso há alguns dias ao fazer uma página que mostra uma lista com os últimos artigos postados no site. Aprontei a lista e logo pensei: "Bom, agora preciso fazer a paginação".

Depois que comecei a lógica de paginação, lembrei que esse site receberá apenas um artigo por semana. Já que seriam mostrados os últimos 25 artigos nessa página, me dei conta de que a paginação só será usada daqui a 6 meses! Como ainda estamos na fase de validação da ideia, resolvi largar a paginação por enquanto. Daqui a 5 meses eu pego nela.

BDUF is evil, mas nem sempre é fácil identificá-lo.

O risco que corremos quando temos uma abordagem assim mais "on demand", é diminuir a qualidade técnica de nossas escolhas. Para proteger-nos disso, nos princípios por trás do Manifesto Ágil constam dois itens importantíssimos:
  1. Software funcionando é a medida primária de progresso. -- Se o que você desenvolveu não será visto logo pelos usuários, você perdeu tempo. No meu exemplo acima, eles só iriam ver a paginação funcionando daqui a 6 meses!
  2. Contínua atenção à excelência técnica e bom design aumenta a agilidade. -- Essa é a vacina contra o relaxamento. Se fizermos alguma escolha técnica medíocre, vamos comer desse fruto ruim.
Já o princípio que condena o BDUF é: Simplicidade -- a arte de maximizar a quantidade de trabalho não realizado -- é essencial.

Repita comigo: "BDUF is evil! Simple working software is great!"