Sempre que eu ouço a frase "Fábrica de Software" meus ouvidos doem bastante. Outro dia, conversando com algumas pessoas, havia um colega que não entendia muito bem a minha aversão por essa tal de "Fábrica de Software". Após explicar que software é um trabalho criativo, ficou uma dúvida entre algumas pessoas. Afinal de contas, qual a diferença entre criar e fabricar?

Passeando um pouco pelo dicionário, algumas definições me chamaram um pouco a atenção:

  • Criar: inventar; imaginar; dar existência a; desenvolver;
  • Fabricar: executar ou fazer executar certos produtos por processos mecânicos; manufacturar; construir;

É difícil perceber a diferença? Acho que não ...

Se formos na Wikipedia podemos encontrar algumas informações ainda mais relevantes. Vejamos parte do texto:

... trabalhadores manufaturam bens ou supervisionam o funcionamento de máquinas que processam um produto, transformando-o em outro. A maioria das fábricas atuais têm grandes armazéns e depósitos com equipamentos pesados, utilizados na produção da linha de montagem ...

Oito anos atrás, Fowler escreveu sobre isso, explicando claramente que a parte de "fabricar" o software é geralmente uma simples task do ant ou um goal do maven ou alguma coisa no rake, etc.

Já foi falado zilhões de vezes nos foruns de tecnologia que fábrica presupõe trabalho repetitivo, fazer o mesmo produto várias vezes (você faz o mesmo software várias vezes ou quando precisa de uma cópia simplesmente faz um cp arquivo1 arquivo2?), desenvolvimento em fazes (i.e. waterfall). Portanto, não faz sentido comparar nosso trabalho com trabalho de fábrica.

O trabalho do desenvolvedor é criar o software, fazer design do código em todo o tempo, assim como os arquitetos da contrução civil fazem no autocad, ou no bom e velho papel. A diferença é que nós temos a condição de construir (i.e fabricar) o nosso software com custo "zero". Não precisamos de pedreiros, tijolos, vigas, argamassa, etc. Agente usa o Ant, Maven, Rake, Make ou wathever ora bolas. É tudo de graça. O resultado do trabalho deles é físico, o nosso são bits e bytes.

O erro sempre foi fazer a associação: desenvolver = construir/fabricar. A associação mais correta é desenvolver = projetar/arquitetar/desenhar.

Até a próxima ...