Depois de assistir à série MegaStructures da National Geographic , fiquei surpreso com a rapidez com que grandes projetos são concluídos. Depois que o trabalho preliminar (design, especificações, etc.) é feito no papel, a realização de grandes projetos leva apenas alguns anos ou, algumas vezes, alguns meses .
Por exemplo, o Airbus A380 "lançado formalmente em 19 de dezembro de 2000" e "no início de março de 2005" , a aeronave já havia sido testada. O mesmo vale para grandes petroleiros, arranha-céus, etc.
Comparando isso com os atrasos na indústria de software, não consigo deixar de me perguntar por que a maioria dos projetos de TI é tão lenta ou mais precisamente por que eles não podem ser tão rápidos e sem falhas, na mesma escala, com número suficiente de pessoas?
Projetos como o Airbus A380 apresentam ambos:
Principais riscos imprevistos: embora essa não seja a primeira aeronave construída, ela ainda ultrapassa os limites da tecnologia e as coisas que funcionaram bem em aviões menores podem não funcionar em aviões maiores, devido a restrições físicas; Da mesma forma, são utilizadas novas tecnologias que ainda não foram usadas, porque, por exemplo, não estavam disponíveis em 1969 quando o Boeing 747 foi concluído.
Riscos relacionados a recursos humanos e gerenciamento em geral: pessoas que param no meio do projeto, incapacidade de alcançar uma pessoa porque ela está de férias, erros humanos comuns, etc.
Com esses riscos, as pessoas ainda realizam projetos como esses grandes aviões em um período muito curto de tempo e, apesar dos atrasos na entrega, esses projetos ainda são extremamente bem-sucedidos e de alta qualidade.
Quando se trata de desenvolvimento de software, os projetos não são tão grandes e complicados quanto um avião de passageiros (tecnicamente e em termos de gerenciamento) e apresentam riscos um pouco menos imprevisíveis do mundo real.
Ainda assim, a maioria dos projetos de TI é lenta e atrasada , e adicionar mais desenvolvedores ao projeto não é uma solução (passar de uma equipe de dez desenvolvedores para dois mil às vezes permitirá entregar o projeto mais rapidamente, às vezes não, e às vezes prejudicará apenas a projeto e aumente o risco de não finalizá-lo).
Aqueles que ainda são entregues podem conter muitos bugs, exigindo service packs consecutivos e atualizações regulares (imagine "instalar atualizações" em todos os Airbus A380 duas vezes por semana para corrigir os bugs no produto original e impedir que a aeronave caia).
Como essas diferenças podem ser explicadas? Isso se deve exclusivamente ao fato de o setor de desenvolvimento de software ser jovem demais para poder gerenciar milhares de pessoas em um único projeto, a fim de entregar produtos em grande escala, quase sem falhas, com muita rapidez?