Nas tendências que você mencionou, eu acrescentaria mais uma, que o IMHO as explica:
Há muito mais programadores (necessários) do que nunca.
A quantidade de tarefas que requerem ou incluem programação está sempre aumentando e em uma taxa ainda maior que o número de programadores. Hoje em dia existem vários microchips em um carro comum. Em 5 anos, pode haver um chip na sua geladeira e na sua torradeira. Em 10 anos, sua roupa de baixo? ... E alguém precisa produzir todo esse software para fazer isso funcionar. Portanto, todo esforço possível é feito para automatizar o que é automatizável e para melhorar a "produtividade" (como definido). E mais e mais cérebros frescos são recrutados.
Isso implica que a maioria dos programadores ativos de hoje é inexperiente e / ou mal preparada para seu trabalho. Leva vários anos para chegar a um nível adequado de experiência e é preciso aprendizado constante para se manter lá. Em resumo, cada vez mais tarefas de programação estão se tornando cada vez menos desafiadoras. Mas ainda há desafios suficientes para quem os procura .
Deixe-me jogar com o advogado do diabo contra seus pontos acima:
Não está demorando para implementar as melhores práticas
Muitas pessoas não, muitas pessoas fazem. Dez anos atrás, quando descobri o teste de unidade e a abordagem ágil, nenhum dos meus colegas tinha a menor idéia do que era. Atualmente, é quase um material padrão nas universidades, e muitos recém-formados já o entendem.
Usar o código de outras pessoas o máximo possível (código personalizado como responsabilidade)
Ao contrário de quê? Reinventando a roda? Ou usando o código de outras pessoas para evitar isso?
Eu acho que é importante notar que somos pagos (principalmente) para resolver problemas, e escrever código não é o fim, apenas o meio para isso . Se um problema puder ser resolvido sem escrever uma única linha de código, ele ainda ficará satisfeito. Especialmente se assim conseguirmos produzir uma solução mais confiável, mais rápida e barata. Não vejo nenhum problema com isso.
Usando linguagens de nível cada vez mais alto para melhorar a produtividade
Ao contrário de codificar tudo na montagem? ;-)
"Ferramentas" de desenvolvimento baseadas em GUI que simplificam bastante a "programação" e não exigem que as pessoas entendam o encanamento por trás do código
IMHO qualquer ferramenta pode ser mal utilizada. O que não quer dizer que os construtores de GUI fossem necessariamente perfeitos ou até bons - a maioria (ou pelo menos alguns) deles é utilizável dentro de seus limites. Mas se alguém não conhece esses limites, é um problema da ferramenta ou de seu usuário?
Em geral, acredito (embora não tenha provas para provar isso) que nos dias de cartões perfurados e de código de máquina, aproximadamente a mesma proporção de código existente era horrível como agora, apenas ambos
- a quantidade geral de código e
- as chances de pessoas de fora verem esse código
foi muito, muito menos.
Agora, com a Internet e o Daily WTF, somos expostos aos piores exemplos dia a dia. É como assistir a todas as notícias sobre terrorismo, terremotos e divorciar celebridades, e gritar o quão perigoso e imoral esse mundo se tornou.