14 de dez. de 2011

Fábrica de Software? Não mesmo!

A revolução industrial trouxe a indústria como nós a conhecemos: uma linha de produção, em geral com algum grau de automação, que produz um determinado item em grandes volumes, e o mais parecidos entre si possível.

Quando a "indústria" de software começou a nascer muitos se debruçaram sobre o processo de construir programas. Depois de algum tempo começaram a perceber que a transposição dos conceitos de engenharia civil (desenhar, planejar, construir) para a informática era muito mais uma idéia bonita do que boa arte de programação.

A compreensão de porque é difícil se projetar software veio aos poucos, mas o destilado de décadas de experimentação na construção de programas de computador pode ser sintetizado em um conceito muito simples: repetibilidade.

É simplesmente impossível desenhar um processo de criação de software, genérico e repetível, que torne o processo completamente previsível e mais, que fabrique itens diferentes um do outro a cada iteração.

O mais fascinante é que tudo isso é óbvio. A fábrica fordiana mais produtiva, azeitada e veloz gasta um bom tempo sendo alterada para produzir cópias de um novo modelo de carro. A linha de produção, a indústria, fabrica itens iguais, xerocados. Inventar um novo item ou aperfeiçoar um antigo é um processo na melhor das hipóteses histórico e na pior totalmente experimental. Não existe fábrica de projetos de, por exemplo, carros ou máquinas de lavar louça. Cada marca tem o seu modo de desenvolver, aprendido a duras penas. Um novato vai precisar cometer muitos erros e ralar muito até dominar um processo criativo.

Como então alguém pode propor uma coisa maluca como uma fábrica de software? Para começo de conversa o propósito de uma fábrica de software é produzir itens novos ou, na melhor das hipóteses, reaproveitar o que já foi desenhado - nunca fazer apenas uma cópia dos itens pré-existentes!

O contra-argumento à essa linha é a indústria da construção civil: cada novo prédio é algo inédito e o mero sucesso de um largo número de projetos indica que é possível, sim, definir um processo dessa complexidade que seja repetível.

Bom, basta observar essa indústria um pouco mais atentamente para notar que ela confirma a regra: o processo de construir um novo prédio é conhecido e repetível. Todos são estruturas calculáveis, definidas e com quantidades de materiais previsíveis. Aliado ao conhecimento histórico sobre produtividade em construção civil, hoje praticamente item de livro-texto de Engenharia Civil, gestão de projetos etc. construir um novo prédio - qualquer um, em qualquer formato! - é uma tarefa domada, não uma tarefa inédita a cada prédio.

Na minha opinião, usar Software Livre pode mudar esse jogo: evite construir cada programa de novo, mas monte coisas complexas com programas simples. Um bom exemplo são as distribuições Linux.

Nenhum comentário:

Postar um comentário