Aux tendances que vous mentionnez, j'en ajouterais une de plus, à laquelle IMHO les explique:
Il y a beaucoup plus de programmeurs (nécessaires) que jamais.
Le nombre de tâches qui nécessitent ou incluent la programmation est en augmentation constante et à un taux encore plus élevé que celui du nombre de programmeurs. De nos jours, il y a plusieurs micropuces dans une voiture moyenne. Dans 5 ans, il pourrait y avoir une puce dans votre réfrigérateur et votre grille-pain. Dans 10 ans, vos sous-vêtements? ... Et quelqu'un doit produire tout ce logiciel pour les faire fonctionner. Tous les efforts possibles sont donc déployés pour automatiser tout ce qui est automatisable et pour améliorer la "productivité" (quelle que soit sa définition). Et de plus en plus de cerveaux frais sont recrutés.
Cela implique que la majorité des programmeurs actifs actuels sont inexpérimentés et / ou mal préparés à leur travail. Il faut plusieurs années pour acquérir un niveau d'expérience suffisant et apprendre continuellement pour rester en place. En bout de ligne, de plus en plus d'emplois de programmation deviennent de moins en moins difficiles. Mais il y a encore suffisamment de défis pour ceux qui les recherchent .
Laissez-moi jouer l'avocat du diable contre vos points ci-dessus:
Ne pas prendre le temps de mettre en œuvre les meilleures pratiques
Beaucoup de gens ne le font pas, beaucoup de gens le font. Il y a dix ans, lorsque j'ai découvert les tests unitaires et l'approche agile, aucun de mes collègues n'avait la moindre idée de ce que c'était. De nos jours, il s’agit d’un matériel presque standard dans les universités et de nombreux nouveaux diplômés le comprennent déjà.
Utiliser le code des autres personnes autant que possible (code personnalisé en tant que responsabilité)
Par opposition à quoi? Réinventer la roue? Ou en utilisant le code d'autres personnes pour éviter cela?
Je pense qu'il est important de noter que nous sommes payés (principalement) pour résoudre des problèmes, et écrire du code n'est pas la fin, mais seulement le moyen d'y parvenir . Si un problème peut être résolu sans écrire une seule ligne de code, le client est toujours content. Surtout si nous parvenons ainsi à produire une solution plus fiable, plus rapide et moins chère. Je ne vois pas de problème avec ça.
Utiliser des langages de plus en plus avancés pour améliorer la productivité
Par opposition à tout coder en assembleur? ;-)
Des "outils" de développement basés sur une interface graphique qui simplifient grandement la "programmation" et ne nécessitent pas que les gens comprennent la plomberie qui se cache derrière le code
À mon humble avis, tout outil peut être mal utilisé. Ce qui ne veut pas dire que les constructeurs d’interface graphique étaient nécessairement parfaits, voire bons - la plupart (ou du moins certains) sont utilisables dans les limites de leurs possibilités. Mais si quelqu'un ne connaît pas ces limites, s'agit-il d'un outil ou d'un utilisateur?
En général, je crois (bien que je n’aie aucune preuve à l’évidence) que, à l’époque des cartes perforées et du code machine, à peu près la même proportion du code existant était horrible qu’aujourd’hui, à la fois
- la quantité globale de code, et
- les chances des étrangers jamais voir un tel code
était beaucoup beaucoup moins.
Maintenant, avec Internet et le Daily WTF, nous sommes quotidiennement exposés aux pires exemples. C'est un peu comme regarder toutes les nouvelles sur le terrorisme, les tremblements de terre et les divorcées, et crier à quel point ce monde est devenu dangereux et immoral.