Fábrica de Software: a metáfora errada

Existem atualmente várias empresas que se definem como “Fábricas de Software”. Mas será que um produto intelectual pode ser construído em uma fábrica?

Em primeiro lugar, o que é uma Fábrica de Software? De acordo com a Wikipedia:

“Fábrica de software é um conjunto de recursos (humanos e materiais), processos e metodologias estruturados de forma semelhante àqueles das indústrias tradicionais, utilizando as melhores práticas criadas para o processo de desenvolvimento, testes e manutenções dos softwares.

Utiliza em sua operação indicadores de qualidade e produtividade em cada etapa do ciclo de desenvolvimento de software, bem como busca maximizar a re-utilização de componentes anteriormente desenvolvidos.Tornou-se uma prática comum com o objetivo de massificar a produção de software pela redução de custos.”

No entanto, essa metáfora é completamente equivocada, pois produzir um projeto de software não é equivalente a produzir um produto em uma fábrica.

Mas então, o que é um produto manufaturado?

Produtos manufaturados são aqueles que devem ser entregues exatamente iguais para todos os clientes. Um sapato, um celular ou mesmo um carro são exemplos de produtos manufaturados. Por mais que possam haver pequenas diferenças entre um modelo e outro, o processo é pensado para produzir várias unidades idênticas do mesmo produto.

O processo de fabricação de um produto manufaturado é semelhante a uma receita de bolo. Um processo prescritivo é fundamental para evitar qualquer tipo de erro ou desperdício. Esse processo não dá espaço para a criatividade na hora da execução.

O que é um produto intelectual?

São produtos que devem ser entregues como únicos para cada cliente, contendo características particulares específicas. Ninguém no mundo vai ter um produto exatamente igual àquele.

Um produto intelectual não é determinístico. Não existe uma receita pronta para fazer uma música, para escrever um livro ou para pintar um quadro. Ainda que possam existir alguns modelos e padrões – métricas musicais ou literárias, por exemplo – o produto intelectual é fruto de um processo criativo, que se caracteriza pela necessidade de sucessivas revisõesalterações correções, até que o autor julgue a sua forma final. Ao contrário do processo determinista de um produto manufaturado, o produto intelectual é fruto de um processo adaptativo.

Desenvolvimento de Software na metáfora correta

Uma das possíveis metáforas corretas para o desenvolvimento de software seria como se um chef de cozinha fosse convidado a criar uma nova receita. Esse chef teria que experimentar novas combinações de ingredientes até chegar ao sabor almejado. Lá no fim, quando o prato estiver 100% pronto, o chef pode então descrever a nova receita. A receita é na verdade a documentação de como se faz para produzir aquele prato.

Ao aplicar os princípios do Taylorismo na engenharia de software, conseguiu-se apenas um formalismo burocrático. O software, especialmente uma aplicação web, deve ser encarada como uma obra criativa e orgânica, que pode estar em constante mudança e evolução.

Mudar o nome muda alguma coisa na prática?

Entender o processo de desenvolvimento de software é essencial tanto para os desenvolvedores quanto para os gestores. Encarar o desenvolvimento como um processo de manufatura enrijece o processo e passa para a ideia de que para criar um software basta seguir uma receita ou apertar meia dúzia de botões. Isso desvaloriza o trabalho de desenvolvedores e cria frustração para o usuário, que não consegue ver seu software pronto com a agilidade que ele acredita ser possível.

Por outro lado, ao encarar o desenvolvimento de software como um produto intelectual e único, o usuário consegue entender que aquele software será único e feito para atender as necessidades que ele informar.

Mas, afinal, o que muda nas contratações públicas?

Em contratações públicas é comum ver a utilização de métricas, como Pontos de Função ou similares, sendo utilizadas por gestores que não fazem ideia de como funciona o processo de desenvolvimento. Alguns gestores chegam até mesmo a utilizar Atas de Registro de Preços de outros órgãos para contratar Fábricas de Software.

É necessário entender que o desenvolvimento de software é algo personalizado, e que vai depender fortemente de fatores como: ambiente tecnológico do cliente (órgão contratante), equipe que dará suporte à solução (seja própria do órgão ou terceirizada), padrões de desenvolvimento e arquitetura utilizados, sistemas legados com os quais irá interagir e até mesmo a cultura organizacional e os usuários.

Assim, embora seja possível terceirizar o desenvolvimento, cada projeto é único. Isso vai refletir no modelo de prestação de serviços, nos controles e métricas aplicados e até mesmo no pagamento à contratada. Além disso, é necessário que o órgão tenha uma boa gestão dos sistemas a serem desenvolvidos e dos processos de desenvolvimento antes de pensar em terceirizar. É necessário que os gestores de contratos de desenvolvimento de software dominem a arquitetura utilizada – ao menos para saber o que é possível ou não com aquela tecnologia – bem como dominem os requisitos de negócio. Não existe solução mágica, apenas esforço e metodologia bem aplicadas.

Para saber mais:

Fábrica de software, a metáfora errada… » artigo de Fernando Franzini para o site iMasters

Desenvolvimento de software – produto manufaturado ou intelectual? » artigo de Fernando Franzini para o site iMasters

Deixe um comentário

O seu endereço de e-mail não será publicado.