Realmente quando falamos fábrica de software generalizamos, mas vou citar algumas coisas que vejo no mercado, e acredite, conversei e pesquisei bastante sobre isso nos últimos 5 anos:
1. Waterfall: O modelo é muito dispendioso. Essa história de ficar 2 meses no cliente capturando requisitos é caro demais. Além de caro, é arriscado, pois documento word e diagramas aceitam qualquer besteira. É abstrato demais. Sempre que chegamos no código vemos que os requisitos estão incertos, ambíguos, conflitantes e etc… Waterfall geralmente destrói as qualidades internas, externas e do próprio projeto.
2. Gantt Charts: Qualquer %Complete que um gerente de projetos de software te mostrar num Gantt Chart é MENTIRA. O software é produto de um meio de produção atômico. 10% ou 100% de requisitos capturados não quer dizer nada para o andamento do projeto. Gerentes de Projeto PMP também não quer dizer nada para projetos de software. (leia meu artigo “Entregue Software Funcionando! Gerenciamento de Projetos Ágil” na MundoJava 26). Veja também esse screencast:
http://www.aspercom.com.br/ead/mod/resource/view.php?id=250
3. Selos (CMMI, ISO): Não garantem quase nada com relação à qualidade interna e externa da aplicação. Minha visão sobre CMMi é que nada adianta você ser maduro em um processo que é ruim. Como o Jacobson diz: “É fácil um bom processo ser mensurável, porém, dificilmente um processo mensurável é bom”. Um processo mensurável necessariamente é dispendioso. É difícil o empresariado brasileiro compreender que é caro ter previsibilidade em projetos de software. Métricas e estimativas também não oferecem qualquer tipo de certeza com relação a isso.
4. Falta de Skill: É um mito comum achar que fábricas de software possuem os melhores analistas, os melhores arquitetos, os melhores programadores. Sim, temos importantes exceções, mas tenho visto que bons analistas, bons arquitetos e bons programadores não acreditam no modelo de fábricas de software em geral.
5. Custo: No meu artigo citado acima, cito as 3 qualidades do software: qualidade interna (o software é fácil de manter e evoluir), qualidade externa (o software atende o negócio), qualidade do projeto (o software foi feito no menor custo e prazo possível). Essencialmente fábricas de software tem menos responsabilidade com a qualidade interna principalmente. O problema é que 90% do custo de um software no seu ciclo de vida é manutenção. Se o software tem pouca qualidade interna, o custo de manutenção é potencializado. A qualidade interna de projetos de software em fábrica é ruim pois a responsabilidade do projeto é somente construção. Geralmente não é a fábrica que mantém o software depois de “pronto”.
6. Existem exceções, mas são raras. Já trabalhei em fábricas durante 3 anos e tínhamos projetos ágeis e iterativos (logicamente também tinha waterfall, mas poucos), mas isso é exceção. Pouquíssimas fábricas trabalham iterativamente e com escopo negociável. Não conheço nenhuma que seja muito fã de práticas ágeis.
7. Divergência conceitual: O modelo de fábrica é completamente contra tudo o que já foi escrito pela literatura acadêmica. Está lá, é só pegar os livros para ler! Waterfall é um engodo, PMBOK não é originalmente direcionado para software (é possível aplicar práticas, mas não ao pé da letra), ®UP não é out-of-the-box, desenvolvimento de software é altamente dependente de pessoas. Essa divergência e deturpação da ciência é minha maior briga com os gestores covardes, figurinhas carimbadas que geralmente “administram” esses “estabelecimentos”.
Minha posição com relação à isso e o modo como aconselho o empresariado é: compre body shop e treine recursos em práticas ágeis. É mais barato e o resultado infinitamente melhor. Atualmente tenho trabalho em alguns projetos onde colocamos o time + gerenciamento dentro do cliente. Depois que o cliente experimenta agilidade e iteratividade ele passa a comprender a furada que é projetos de escopo fechado dentro de fábricas de software.
[erros de português editado]