IMO: Pourquoi « Bienvenue dans le monde moderne. » pourrait être la chose la moins utile que vous puissiez dire à un développeur

Cet article est purement un défoulement. On vient tout juste de me dire ceci par un gestionnaire d'équipe : « Nous nous éloignons de ColdFusion. ColdFusion est bon, mais c'est une technologie plus ancienne, alors bienvenue dans le monde moderne. Je pense que vous allez aimer ça. »

Oh mon !@#$% #deity# va manger un char. À l'extérieur, j'embrasse tout ce qu'il faut pour faire le travail, mais à l'intérieur, je suis absolument enragé.

J'ai entendu des variations de cette phrase pendant des années. Parfois, elle s'adresse aux développeurs ColdFusion. Parfois, elle vise les développeurs COBOL. Parfois, il s'agit de Java, PHP, .NET Framework, jQuery, Oracle Forms, ou de n'importe quoi d'autre qui a survécu assez longtemps pour prendre des rides.

La formulation change. Le message sous-jacent, non. « Tout ce que vous avez passé des années à maîtriser est dépassé. »

Ce n'est pas de la modernisation. C'est de la condescendance.

« Vieux » n'est pas une mesure technique

L'une des habitudes les plus étranges en développement logiciel consiste à traiter la date de sortie d'un langage comme si elle nous disait quelque chose sur ses capacités. ColdFusion est apparu pour la première fois en 1995. Java a été lancé en 1995. JavaScript a été lancé en 1995. Python remonte à 1991. C++ à 1985. C à 1972. SQL est plus ancien que la plupart des développeurs qui lisent ceci.

Personne n'entre dans une entreprise du Fortune 500 et annonce : « Félicitations, tout le monde. Nous quittons enfin cette antique base de données SQL et entrons dans le monde moderne », parce que ça aurait l'air ridicule.

L'âge seul ne détermine pas si une technologie est appropriée.

  • Maintenance.
  • Outils.
  • Écosystème.
  • Performance.
  • Sécurité.
  • Soutien du fournisseur.
  • Recrutement.
  • Besoins d'affaires.

Ce sont des considérations d'ingénierie. Pas le calendrier.

Les entreprises se soucient pas de la mode

Les entreprises ne génèrent pas de revenus parce que leur pile est à la mode. Elles génèrent des revenus parce qu'elle résout de façon fiable des problèmes d'affaires. J'ai vu des applications ColdFusion vieilles de vingt ans traiter des millions de dollars en transactions chaque mois. J'ai aussi vu des applications Node vieilles de six mois qui ne pouvaient pas survivre à un pic de trafic.

La technologie ne devient pas bonne ou mauvaise simplement parce qu'un langage plus récent apparaît. Si un logiciel est sécurisé, maintenable, performant et continue de livrer de la valeur, le remplacer uniquement parce que quelqu'un l'a qualifié de « vieux » relève du théâtre d'ingénierie.

Toute technologie devient héritée

Voici une vérité inconfortable. Le cadre de travail clinquant qui excite tout le monde aujourd'hui devient la plateforme héritée de demain.

  • AngularJS.
  • Silverlight.
  • Flash.
  • Backbone.
  • Knockout.
  • Windows Phone.

Ils étaient tous « l'avenir ». Jusqu'à ce qu'ils ne le soient plus.

Pendant ce temps, des langages sur lesquels tout le monde aime faire des blagues continuent de faire fonctionner tranquillement des banques, des compagnies aériennes, des gouvernements, des systèmes de paie, des usines de fabrication et des organismes de santé.

La longévité n'est pas nécessairement une faiblesse. Souvent, c'est la preuve qu'une plateforme a résolu de vrais problèmes suffisamment bien pour traverser plusieurs cycles technologiques.

Le développement moderne n'est pas une question de langage

L'industrie a énormément changé au cours de la dernière décennie.

  • Conteneurs.
  • CI/CD.
  • Infrastructure infonuagique.
  • Infrastructure as Code.
  • Développement assisté par l'IA.
  • Tests automatisés.
  • Observabilité.
  • Conception API-first.

Aucun de ces concepts ne nécessite un langage de programmation spécifique. J'ai vu des applications ColdFusion avec des pipelines CI matures, des tests automatisés, des déploiements Docker, une infrastructure Terraform et une surveillance complète. J'ai aussi vu des applications écrites dans le langage le plus tendance imaginable qui étaient déployées manuellement via Remote Desktop en copiant des fichiers en production.

Laquelle est la plus moderne ?

Il n'y a rien de mal à s'éloigner de ColdFusion

C'est la partie qui se perd souvent. Il existe des raisons tout à fait valables de migrer. Peut-être que votre organisation a déjà une expertise approfondie dans un autre écosystème. Peut-être que l'embauche est devenue difficile. Hey Adobe... c'est votre problème à résoudre. Peut-être avez-vous besoin d'un écosystème de bibliothèques qui soutient mieux votre feuille de route future. Peut-être voulez-vous une intégration plus étroite avec les systèmes existants.

Ce sont des discussions d'ingénierie légitimes. Notez ce qui manque ? « Parce que c'est vieux. » Si votre justification d'affaires pour la migration ne peut pas survivre sans cette phrase, ce n'était probablement pas une très forte justification d'affaires.

Le côté humain est oublié

Des commentaires comme « bienvenue dans le monde moderne » ne sont pas seulement faibles sur le plan technique. Ils sont aussi personnellement méprisants. Les développeurs investissent des années à bâtir leur expertise. Nous apprenons les particularités, les techniques de débogage, les caractéristiques de performance, les pièges de déploiement et les patrons architecturaux. Réduire toute cette expérience à de la « vieille technologie » ignore la valeur de l'ingénieur derrière le clavier.

Les bons développeurs ne sont pas précieux parce qu'ils connaissent le langage X. Ils sont précieux parce qu'ils savent résoudre des problèmes. Les langages changent. Le jugement d'ingénierie se transfère.

Ce que j'aimerais que les gestionnaires disent à la place

Imaginez entendre ceci à la place : « Nous nous dirigeons vers une plateforme différente parce qu'elle s'aligne mieux avec la direction que prend l'entreprise. Votre expérience dans la construction de systèmes fiables est précieuse, et je pense que vous maîtriserez rapidement la nouvelle technologie. »

Même décision. Message complètement différent. L'un respecte l'ingénieur. L'autre insulte l'ingénieur. Le leadership ne consiste pas seulement à prendre des décisions techniques. Il s'agit aussi de communiquer ces décisions d'une manière qui reconnaît l'expertise des personnes qui les mettent en œuvre.

Comment répondre de façon professionnelle (tout en levant les yeux au ciel intérieurement)

Quand quelqu'un dit que vous entrez enfin dans « le monde moderne », il est tentant de répondre émotionnellement. Ne le faites pas.

Quelques meilleures réponses :

« Quels avantages techniques précis motivent la migration ? » Cela déplace la conversation des opinions vers l'ingénierie.

« J'ai hâte d'apprendre la nouvelle pile. Je suis aussi intéressé à comprendre les raisons d'affaires derrière le changement. » Vous montrez de l'ouverture tout en demandant du contenu concret.

« Chaque plateforme a ses forces et ses compromis. Ce sera intéressant de les comparer au fur et à mesure de la migration. » Professionnel. Objectif. Difficile à contredire.

« Les choix technologiques finissent par devenir des choix hérités. L'important, c'est de savoir si nous améliorons la maintenabilité et livrons de la valeur. » Cela recadre subtilement la discussion sans devenir conflictuel.

Le vrai monde moderne

Le monde moderne, ce n'est pas React. Ni Go. Ni Rust. Ni .NET. Ni Java. Ni ColdFusion. Le monde moderne, c'est reconnaître que les langages de programmation sont des outils. Les ingénieurs professionnels choisissent les outils en fonction du problème qu'ils résolvent, pas selon les concours de popularité sur Internet ou le battage des conférences.

Les meilleurs développeurs avec qui j'ai travaillé n'étaient pas définis par le langage qu'ils avaient écrit la veille. Ils étaient définis par leur capacité à comprendre rapidement un problème, à évaluer les compromis, à apprendre ce dont ils avaient besoin et à construire des logiciels fiables.

C'est une compétence qui ne devient jamais héritée, peu importe l'âge de votre langage de programmation.