Como foi declarado por DeMarco e Lister na Peopleware há cerca de 20 anos, a grande maioria dos projetos de software com falha falha não devido a desafios técnicos, mas a problemas sociológicos . Isso não mudou nas últimas décadas, não importa o quanto nossas ferramentas tenham melhorado.
Má gestão, expectativas irreais, não conseguir as pessoas certas para o trabalho e / ou não deixá-las fazer o seu trabalho, consequentemente, não conseguir mantê-las; locais de trabalho e ferramentas que não são adequadas para o trabalho de desenvolvimento de SW; conflitos pessoais não tratados; política ; esses são apenas alguns dos problemas típicos que podem tornar um projeto condenado desde o início.
Por que escrever código bom é mais difícil?
Não estou totalmente convencido de que é realmente mais difícil escrever um bom código agora do que há décadas atrás. De fato, comparado ao código ou montagem da máquina, tudo o que temos agora no mainstream é muito mais fácil de manusear. Apenas podemos precisar produzir mais.
É apenas por causa dos fatores mencionados, tempo e complexidade?
Sim, a complexidade alcançável certamente aumentou (e continua a aumentar) à medida que o poder de nossas ferramentas aumenta. Em outras palavras, continuamos forçando os limites. O que para mim se traduz, de modo que é igualmente difícil solucionar os maiores desafios de hoje, como há 30 anos, resolver os maiores desafios daquele dia.
OTOH, uma vez que o campo cresceu tão enormemente, há muito mais problemas "pequenos" ou "conhecidos" agora do que há 30 anos atrás. Esses problemas tecnicamente não devem mais ser um desafio, mas ... aqui entra a máxima acima :-(
Além disso, o número de programadores cresceu enormemente. E pelo menos minha percepção pessoal é de que o nível médio de experiência e conhecimento diminuiu, simplesmente porque há muito mais juniores chegando continuamente ao campo do que idosos que poderiam educá-los.
As metodologias não são praticadas corretamente?
IMHO certamente não. DeMarco e Lister têm algumas palavras duras sobre metodologias big-M. Eles dizem que nenhuma metodologia pode fazer com que um projeto seja bem-sucedido - somente as pessoas da equipe podem. OTOH as metodologias de pequeno m que elogiam estão bem próximas do que agora conhecemos como "ágil", que está se espalhando amplamente (IMHO por um bom motivo). Sem mencionar boas práticas como testes de unidade e refatoração, que apenas 10 anos atrás não eram amplamente conhecidas e hoje em dia muitos graduados as conhecem.