Tuesday, May 23, 2006

Desmontando

O termo fábrica de software foi cunhado há bastante tempo. Tempo o suficiente para que várias pessoas diferentes tenham lhe atribuído vários significados diferentes. Tempo o suficiente para chegar bem perto da inclusão no seleto grupo das palavras de moda, aqueles termos que de tanto serem usados indiscriminadamente acabam por perder o sentido.

Fábricas de software já foram linguagens e frameworks de alta produtividade. Fábricas de software já foram organizações para produção de linhas de produto. Mas fábricas de software não são linhas de montagem no sentido estrito da palavra.

Linhas de montagem servem para manufaturar produtos já projetados. Não se pode mudar de idéia uma vez que o produto tenha iniciado sua viagem dentro da linha de montagem. Incapacidade de adaptação a mudanças é exatamente o contrário do que precisamos para desenvolver software.

Um sistema de software é uma entidade tão abstrata quanto uma idéia ou uma teoria. Não se entende teorias sem vê-las em funcionamento. As pessoas normalmente não conseguem compreender as teorias sem observar alguns dos fenômenos que ela explica.

Pelo menos não a maioria das pessoas.

Precisamos que nossos processos de produção de software permitam que as pessoas vejam rapidamente pequenas partes do sistema funcionando de verdade. É por isso que precisamos que nossos processos de produção de software sejam altamente iterativos. É por isso que não podemos nos inspirar na linha de montagem. Ela só lida com construção e nós precisamos projetar algo. Afinal, software não é construído, é projetado.

Algum historiador poderia dizer que a indústria automobilística é a maior responsável pelo aperfeiçoamento das linhas de montagem. Não se deve confiar cegamente nos historiadores (aliás, não se deve confiar cegamente em ninguém — mas aqui devaneio demais: fecha parêntese). Mas há muito o que aprender com a indústria automobilística, qualquer que tenha sido seu papel na história das linhas de montagem.

As fábricas de automóveis projetam seus motores usando um processo bastante iterativo. Pelo menos é o que eu posso dizer daqui do lado de fora. Eu vejo que eles contratam pilotos e constróem pistas de prova exclusivamente para levar seus motores ao limite. Eu sei que eles organizam várias corridas para exibir sua tecnologia e compará-la com a dos concorrentes. Para fazer isso, eles precisam produzir e aperfeiçoar protótipos continuamente e eu poderia apostar como eles gostariam de produzir um protótipo funcional pelo menos a cada dia. O grande desafio para eles é que o retorno obtido com a construção de um motor completo nem sempre vale seu custo. Por isso eles precisam se contentar muitas vezes com cálculos matemáticos e simulações de computador.

Na indústria de software, estamos projetando um sistema que já é uma simulação de computador. Só precisamos tirar proveito disso.

0 Comments:

Post a Comment

<< Home