Au cours de mes années d'expérience:
- Les langues ont changé (généralement relativement lentement).
- L'éventail des problèmes qui peuvent être pratiquement résolus s'est élargi (un peu plus vite);
- La taille et la complexité des solutions ont augmenté (relativement rapidement);
- Il y a eu quelque chose qui est
flavor of the day
(parfois bon, souvent mauvais).
Comme indiqué lors d'une discussion sur les modèles, le groupe de quatre n'a pas inventé de modèles. Ils ont proposé une terminologie et des modèles de solutions qui étaient déjà appliqués.
Contrairement à de nombreux autres domaines, il y en a encore beaucoup qui ne sont pas une pratique courante. J'ai vu beaucoup de trucs de pointe aller et venir. Beaucoup d'entre elles reformulaient des techniques déjà en pratique, et celles-ci réussissaient généralement dans une certaine mesure. D'autres ont plus ou moins disparu et la plupart ont adopté de nouvelles approches. (Quelqu'un a vu une langue de 5e génération récemment?)
Les programmeurs que j'ai vus qui sont les plus efficaces peuvent sélectionner et assembler des composants éprouvés dans une solution de travail. Cela implique rarement quelque chose de tranchant, ce qui augmenterait généralement le risque du projet. La capacité de s'appuyer sur des travaux déjà réalisés nous permet d'élargir la portée de ce qui est possible.
Les langages de programmation ont tendance à tomber dans relativement peu de familles. La connaissance d'une langue dans une famille facilite le travail avec des langues similaires. Comprendre les bibliothèques disponibles dans la langue et les exploiter peut augmenter considérablement la productivité et la fiabilité. En général, je choisirais une langue plus ancienne avec des bibliothèques appropriées plutôt qu'une langue plus récente sans bibliothèques appropriées.
Lors de l'application de nouvelles technologies, il est important d'éviter le Because We Can
syndrome. L'ajout d'une nouvelle technologie, car c'est la saveur de l'année, a tendance à causer plus de problèmes qu'elle n'en résout. Savoir quand la technologie résoudra un problème réel et quand elle ne fera qu'ajouter de la complexité est une compétence utile.
Un très bon programmeur résoudra les nouveaux problèmes et utilisera les solutions existantes pour le reste. Peu d'entreprises ont besoin d'une technologie de pointe, toutes ont besoin de solutions solides.
Je regrette généralement de glisser le long de la lame de rasoir. Je ne me souviens pas avoir jamais regretté d'avoir utilisé une technologie éprouvée. Cependant, une grande partie de ce qui est décrit new
est le reconditionnement de quelque chose d'existant. Habituellement, ce reconditionnement facilite la compréhension et l'application des choses.