Les pratiques de programmation ont-elles évolué dans le mauvais sens ?
Bien que Avery Pennarun ne l'affirme pas directement, il déplore une perte inquiétante de l'efficacité qui caractérisait le secteur jusqu'à la fin des années 1990 et invite à une profonde réflexion sur le sujet. Ancien ingénieur de Google, Avery Pennarun est aujourd'hui cofondateur et PDG de l'entreprise de logiciels Tailscale basée à Toronto, en Ontario, au Canada. Tailscale développe un réseau privé virtuel maillé défini par logiciel partiellement open source et un service de gestion basé sur le Web. La société propose un VPN sans configuration en tant que service sous le même nom. Pennarun est diplômé de l'université de Waterloo.
Dans un récent billet de blogue publié sur le site Web officiel de Tailscale, Pennarun a fait remarquer qu'il y a 100 fois plus de gens qui peuvent être programmeurs aujourd'hui parce qu'ils ne sont pas coincés avec le C++ et le langage d'assemblage, et beaucoup, beaucoup, beaucoup plus de gens ont maintenant une sorte d'ordinateur. Plus les boutiques d'applications, les systèmes de paiement, les graphiques. « Tout ça, c'est du bon boulot. Mais les choses ont aussi empiré. Beaucoup de choses quotidiennes qui étaient faciles pour les développeurs sont désormais difficiles. C'était inattendu. Je ne m'y attendais pas », a-t-il écrit.
Il ajoute : « je m'attendais à ce que je n'aie plus de travail à l'heure actuelle parce que la programmation était si facile. Au lieu de cela, l'industrie technologique est devenue un véritable fouillis. Et la situation empire au lieu de s'améliorer ! Notre tour de la complexité est maintenant si haute que nous envisageons sérieusement d'y ajouter des grands modèles de langage pour écrire le code incompréhensible dans les cadres incompréhensibles afin que nous n'ayons pas à le faire. Et vous savez, nous, les personnes âgées, sommes celles qui ont le contexte pour voir cela ». Il n'est pas pessimiste et a déclaré que tout est réparable.
Dans son analyse, Pennarun met en cause de nombreuses pratiques modernes, dont la mise à l'échelle et la notation Big O, qui ont complexifié la tâche pour les développeurs au lieu de rendre les choses plus faciles. Il critique l'obsession des programmeurs pour les outils comme Kubernetes pour des tâches triviales, suggérant que de nombreuses pratiques modernes ralentissent les développeurs.
La mise à l'échelle, les conteneurs... que des facteurs de ralentissement ?
Le billet de blogue de Pennarun appelle à une réévaluation des approches actuelles de développement logiciel, préconisant un changement pour rendre les "choses faciles faciles" et réduire la complexité qui entrave la productivité. Il critique sévèrement la notion de mise à l'échelle qui a rendu les programmeurs d'aujourd'hui impatients et les pousse à embrasser des technologies qui leur donnent l'illusion qu'ils sont productifs et efficaces. « Les programmeurs d'aujourd'hui sont impatients de réussir. Ils commencent à planifier pour un milliard d'utilisateurs avant même d'écrire leur première ligne de code », a-t-il déploré.
Il a ajouté : « en fait, de nos jours, nous les entraînons à faire cela sans même savoir qu'ils le font. Tout ce qu'on leur a appris tourne autour de la mise à l'échelle. Nous sommes tombés dans ce piège depuis que les informaticiens ont commencé à enseigner la notation big-O. En notation big O, si vous l'utilisez mal, une table de hachage est censée être plus rapide qu'un tableau, pour pratiquement tout ce que vous voulez faire. En réalité, ce n'est pas toujours le cas. Lorsque vous avez un milliard d'entrées, une table de hachage est peut-être plus rapide. Mais lorsque vous avez 10 entrées, ce n'est presque jamais le cas ».
Mais d'après Pennarun, les gens ont du mal à accepter cette idée. « Ils continuent à choisir les algorithmes et les architectures qui peuvent être mis à l'échelle, même si, en l'absence d'une telle mise à l'échelle, une autre solution serait des milliers de fois plus rapide, et également plus facile à construire et à exécuter », a-t-il déclaré. Il donne cet exemple :
Envoyé par Avery Pennarun
Toutes les applications modernes ont-elles besoin d'être mises à l'échelle ?
Selon l'ancien ingénieur de Google, la vérité est que la plupart des choses ne sont pas mises à l'échelle et n'ont jamais besoin de l'être. « Même les développeurs des entreprises qui fabriquent des produits pouvant être mis à l'échelle de milliards d'utilisateurs passent la plupart de leur temps sur des choses qui ne le sont pas, comme les tableaux de bord et les générateurs de mèmes. En tant qu'industrie, nous avons passé tout notre temps à rendre les choses difficiles possibles, et pas du tout à rendre les choses faciles », a écrit Pennarun. Selon l'ingénieur, tout ceci ruine la productivité et crée aussi des frais généraux inutiles.
« Les programmeurs sont tous enlisés dans la boue. Il suffit d'écouter n'importe quel développeur professionnel et de lui demander quel pourcentage de son temps est consacré à la résolution du problème qu'il s'est fixé, et quel pourcentage est consacré à des frais généraux inutiles. Lorsque nous explorons le monde de l'hypercomplexité, nous constatons que la plupart des problèmes ne présentent pas de complexité essentielle. En d'autres termes, les problèmes peuvent être résolus sans complexité, mais pour une raison ou une autre, les solutions que nous utilisons sont de toute façon compliquées », a-t-il déclaré.
Il donne l'exemple suivant : « les systèmes de journalisation. Ils se contentent de transmettre du texte d'un endroit à un autre, mais pour une raison ou une autre, il faut 5 minutes pour qu'il apparaisse. Ou les systèmes d'orchestration : ce sont des programmes dont la seule tâche est d'exécuter d'autres programmes, ce que les noyaux Unix font très bien, en quelques millisecondes, depuis des décennies. Les gens superposent des tas de boue. Mais on peut les enlever ».
Dans la communauté, les réactions sont mitigées. De nombreux commentateurs partagent l'avis de Pennarun, affirmant que les programmeurs et les entreprises d'aujourd'hui suivent les mots à la mode ou les tendances qui n'ont parfois aucun rapport avec les produits qu'ils cherchent à développer. « Le secteur est éternellement sensible aux "habitudes des gens efficaces" et se lance la tête première dans l'ingénierie et les promesses de mots à la mode. La plupart du temps, ils cherchent à résoudre un problème qu'ils n'auront jamais en utilisant une technologie qu'ils ne comprennent pas vraiment », a écrit un critique.
Les fournisseurs de cloud profitent de la situation et perçoivent des loyers
Pennarun s'en prend également au rôle prépondérant des entreprises comme AWS (Amazon Web Services) dans la complexification sans cesse croissante du développement logiciel moderne. Il lance un appel à reprendre l'Internet à ces entreprises qu'il appelle : les gardiens centralisés du cloud computing qui perçoivent des loyers.
Envoyé par Avery Pennarun
Le VPN "zero-config" de Tailscale est présenté comme un exemple de simplification des tâches qui ne nécessitent pas une mise à l'échelle importante, soulignant la nécessité de se concentrer sur des projets essentiels et évolutifs uniquement lorsque cela est nécessaire.
Source : billet de blogue
Et vous ?
Quel est votre avis sur le sujet ?
Le développement logiciel moderne est submergé par une complexité inutile ?
Le développement logiciel moderne est-il essentiellement une source de frais généraux inutiles ?
Êtes-vous d'avis que la mise à l'échelle a rendu le développement logiciel beaucoup plus complexe qu'il ne l'était ?
Toutes les applications modernes ont-elles besoin d'être mises à l'échelle ? La mise à l'échelle est-elle importante en informatique ?
Les pratiques de développement actuelles ont-elles perdu l'efficacité qui caractérisait la programmation dans les années 1990 ?
Les pratiques de développement actuelles favorisent-elles l'accumulation de la dette technique ?
Selon vous, comment rendre les logiciels plus faciles à construire et à exécuter ?
Voir aussi
Des développeurs démissionnent pour échapper aux mauvaises pratiques de codage de leurs entreprises, d'après un récent sondage qui pointe la dette technique comme raison de ce choix d'un lot de 51 %
De nombreux développeurs « n'ont pas les connaissances et les compétences essentielles pour développer efficacement des logiciels sécurisés », l'éducation et la formation sont requises, selon la Fondation Linux
Les ingénieurs en logiciel ne sont pas (et ne devraient pas être) des techniciens, car un grand ingénieur en logiciel est celui qui automatise le travail répétitif ou manuel, par Gabriella Gonzalez