Big Design Up Front (BDUF)

Raphael Batagini
4 min readApr 25, 2019

Recentemente, estudando mais sobre upstream e downstream e como equilibrar a criação de novas ideias com a vazão do time de desenvolvimento, me deparei com termo Big Design Up Front.

O termo Big Design Up Front (BDUF), normalmente se refere a prática de desenhar toda a solução antes de iniciar a execução. É conhecido como a arte das coisas que não deveriam ser feitas.

Normalmente ocorre quando se segue erroneamente a ideia de comparação entre a área de construção civil com desenvolvimento de software. Ideia esta muito comum há alguns anos atrás mas que hoje em dia se mostra extremamente equivocada.

Alguns exemplos de BDUF

Eis alguns exemplos de Big Design Up Front muito comuns no dia-a-dia de algumas empresas:

  • Design thinking muito extenso e muitas vezes com diversas iterações antes de se iniciar a validação de algo concreto;
  • Desenho de todas as telas do sistema antes de implementá-lo;
  • Criação de uma API de serviços inteira para somente depois pensar na aplicação que irá consumi-la;
  • Pensar na arquitetura mais do que no objetivo do produto.

O que realmente se utiliza do que é projetado?

De acordo com o Princípio de Pareto, para muitas situações, 80% dos efeitos vêm de 20% das causas. Isso vale também para o desenvolvimento de projetos e produtos.

Em projetos que utilizam métodos como o cascata, a aplicação do Princípio de Pareto se dá na expectativa de que somente 20% das funcionalidades criadas serão utilizadas em 80% do tempo.

O gráfico acima foi apresentado na XP 2002 por Jim Johnson e mostra a frequência de utilização das funcionalidades de 4 sistemas internos de algumas empresas analisados por ele.

Malefícios da aplicação do BDUF

Desalinhamento do projetado com o executado

Numa situação hipotética onde um time de design entrega todas as telas prontas para desenvolvimento, é de se esperar que as regras levantadas e pensadas durante a elaboração do desenho se percam.

Como a etapa de desenvolvimento fica completamente apartada do design, alguns comportamentos acabam não sendo implementados como o projetado. Detalhes discutidos nas etapas de descoberta do projeto se perdem.

Surgimento de bugs

Com a utilização de práticas que propiciem o BDUF, é comum haver bugs surgindo durante o desenvolvimento visto que o time está tentando seguir um plano do qual não participou da elaboração. O cenário real acaba tendo que se adequar ao projetado e não o contrário.

Em meio a toda esta situação, é improvável também que o cliente se sinta satisfeito.

Documentação desatualizada

Em meio ao desalinhamento entre design e desenvolvimento, é esperado que surjam várias mudanças a serem realizadas no projeto.

Quando estas mudanças começam a aparecer, documentos de design e projeto precisam ser atualizados (ou pelo menos deveriam). Depois de algum tempo, conforme as demandas de alteração crescem, isso acaba sendo deixado de lado e esta documentação fica desatualizada.

Desperdício

Quando se trabalha com iterações, parte do backlog é descartado conforme entregas são feitas e os itens de trabalho são repriorizados.

Quando se pratica o BDUF, todo o backlog é gerado antes de qualquer entrega. Isto gera um desperdício de tempo, pois é detalhado um backlog do qual boa parte será descartada.

Quando não há possibilidade de descarte, nos casos em que a empresa se compromete a seguir o mesmo backlog até o final do projeto, também haverá desperdício pois, como falado sobre o Princípio de Pareto, grande parte das funcionalidades entregues não serão utilizadas.

Custo de mudança

O custo de mudanças no projeto costuma variar conforme a etapa em que se encontra. É muito mais barato realizar mudanças enquanto os itens de trabalho são somente ideias ou hipóteses.

A partir do momento em que se tem algo concreto sendo desenvolvido, as alterações tendem a levar mais tempo e gerar mais retrabalho. Portanto, o custo de mudança nas etapas de desenvolvimento do processo costuma ser muito mais alto.

Quando todo o projeto é pensado e desenhado antes de qualquer entrega concreta, as alterações necessárias para que ele atenda aos cenários que surgirão, ficam todas para a etapa de construção.

Estimativas falhas

Elencar todos os requisitos de uma solução logo no início do projeto é uma tarefa bastante complicada. Estimar todos eles na expectativa de conseguir definir prazos é ainda mais complexo.

O ideal é fasear o projeto de forma que tanto o time quanto o cliente possam confiar nas estimativas pois possuem um escopo pequeno para se trabalhar.

Há casos em que utilizar BDUF é vantajoso?

Embora todos os problemas e desvantagens citados, pensar também de forma muito granular pode inibir a percepção dos envolvidos sobre os objetivos e metas de um projeto como um todo.

É preciso ter cuidado para, na tentativa de evitar o BDUF, não promover a falta de visão sistêmica.

O “BIG”, do Big Design Up Front, se refere a grandes lotes de trabalho que, em qualquer etapa de um projeto, tendem sempre a gerar desperdício.

Portanto, o BDUF não costuma apresentar nenhum tipo de benefício e não pode ser confundido com a falta de uma visão mais ampla dos objetivos do projeto, o que é extremamente valioso.

Fontes

https://www.knowledge21.com.br/blog/bduf/

http://agile.pub/assuntos-diversos/bduf-uma-pratica-a-se-evitar/

https://pt.slideshare.net/gpupo/big-design-up-front-bduf

https://www.mountaingoatsoftware.com/blog/are-64-of-features-really-rarely-or-never-used

https://www.culturaagil.com.br/tres-principios-que-te-farao-pensar/

--

--