Eu que sei este assunto é velho, já falei sobre ele aqui e também aqui. Mas lendo o post do Calçado, Aldo Dórea vs Fred Brooks, resolvi falar mais pouco sobre os problemas de tentar aplicar soluções de outras engenharias, como a civil, na engenharia de software.
Eu trabalhei durante alguns anos em uma empresa de Telecom. Como todas as filhas do sistema Telebrás, esta empresa tem centenas, ou milhares, de centrais telefônicas em sua área de atuação. No passado as centrais analógicas eram bem espaçosas, e para comportá-las eram necessários prédios, alguns de mais de cinco andares.
Com a evolução tecnológica as centrais foram encolhendo e hoje em dia ocupam apenas uma sala do andar térreo. Como resultado estas empresas acabaram ficando com prédios totalmente obsoletos e sem uso espalhados pelas grandes cidades, como o Rio de Janeiro (onde eu trabalhava).
Estes prédios foram construídos com um objetivo: Hospedar centrais de telefonia. Certamente todo o projeto de construção era influenciado por este objetivo, assim como suas características arquitetônicas. São andares amplos, com pé direito triplo, para receber aquelas máquinas monstruosas. Muitos deles têm buracos na parede externa de cada andar, para receber novos equipamentos, em compensação, os elevadores são muito pequenos. Aliás, toda a infra-estrutura dedicada a seres humanos era mínima, já que para manter todo este maquinário não eram necessários muitos técnicos.
Todo este espaço vazio logo começou a ser preenchido com outro tipo de recursos: Humanos. Praticamente todos os prédios de escritórios desta empresa são originalmente centrais telefônicas, inclusive a matriz, onde eu trabalhava, e que certamente era o mais ajeitado. Mesmo assim, era possível notar que a sua adaptão era meio capenga. Os elevadores não suportavam a quantidade de pessoas nos horários de pico, finalmente quando construíram mais elevadores eles não foram integrados aos antigo, por isto eram muito pouco eficientes. O encanamento dos banheiros vivia dando problema. A maioria dos andares ganhou um mezanino, para aproveitar o espaço dos pés direitos altos. Visualmente ficava bem bonito, mas aquela quantidade de gente em um ambiente único, aberto e sem tratamento acústico, você pode imaginar o nível de ruído.
Conclusão: Como era de se esperar, os prédios não são adaptáveis, de fácil evolução e alteração. Eles são construídos com um objetivo claro e pré-definido. Mudanças e evoluções depois de concluída a sua construção custam muito caro e nem sempre funcionam.
Em contrapartida, os softwares DEVEM evoluir e mudar. Todo cliente e usuário de software espera que ele seja capaz de se adaptar às mudanças da empresa e de seu negócio. Estas mudanças, na maioria das vezes, podem ser previstas ou totalmente imprevisíveis.
Vamos voltar ao mercado de Telecom, veja todas as revoluções que ele sofreu nos últimos 15 anos: celular, internet, VOIP, TV digital. Cada novidade desta geraram alterações e evoluções nos softwares destas empresas, não é à toa que trabalhar na área de TI de uma destas empresas seja tão animado e extenuante.
Apesar de tudo isto ainda existe pessoas que afirmam que processo de construção e gerência de projeto é parecido em todos os setores. E insistem em afirmar: “Construir um software é como construir uma casa, primeiro precisamos de uma especificação detalhada e completa, como uma planta”