L'IA et le code : La fin du développeur, vraiment ?

Wait 5 sec.

On entend de plus en plus parler de l'intelligence artificielle qui transformerait radicalement notre façon de coder. Certains vont même jusqu'à dire que les développeurs seront bientôt une espèce en voie de disparition. Mais qu'en est-il réellement ? Le code, tel que nous le connaissons, est-il sur le point de disparaître au profit d'une "ingénierie par intuition", ou "Vibe Engineering", comme certains l'appellent ?Le "Vibe Coding" : Une nouvelle approche, vraiment ?Le terme "Vibe Coding", popularisé par Andrej Karpathy, décrit une méthode où l'on ne manipule plus directement le code, mais où l'on interagit avec une IA. On lui donne des instructions, et elle génère le programme. C'est un peu comme si le développeur devenait un chef d'orchestre, donnant des directives à un instrumentiste ultra-performant."Le Vibe Coding, c'est un nouveau type de codage, où l'on s'abandonne totalement aux vibrations, où l'on embrasse les exponentielles et où l'on oublie l'existence même du code."Andrej KarpathyCette idée a semé un vent de panique et d'excitation dans le monde de la tech. Twitter a été inondé de messages annonçant la révolution et la fin imminente du métier de développeur. Certes, l'IA a un impact indéniable sur notre manière d'écrire du code, mais a-t-elle vraiment bouleversé notre rôle fondamental en tant qu'ingénieurs ?Comme le souligne Clancy Gilroy :"Lorsqu'une tornade traverse votre quartier, que votre maison s'effondre, que vous n'avez pas souscrit d'assurance et que vous perdez tout, vous ne pouvez rien y faire. Mais vous pouvez certainement contrôler la façon dont vous allez réagir à cette situation."Code et Ingénierie : Une distinction crucialeIl est essentiel de comprendre la différence entre "coder" et "faire de l'ingénierie logicielle". Beaucoup, même des professionnels du secteur, confondent les deux. Le génie logiciel ne se limite pas à écrire des lignes de code.La définition la plus pertinente que l'on puisse donner de l'ingénierie logicielle est la suivante :"Le génie logiciel est une programmation intégrée dans le temps." - Le génie logiciel chez Google : Leçons tirées de la programmation au fil du tempsLa notion d'"intégration dans le temps" est primordiale. Elle signifie que notre mission n'est pas seulement de créer un programme qui fonctionne à un moment précis, mais de construire un système qui évolue, s'adapte aux besoins changeants et résiste à l'épreuve du temps.Le "Vibe Coding", comme le codage traditionnel, se concentre sur la production de code à un instant T. Utiliser une IA pour générer un prototype rapide et le valider par des tests, c'est du codage, pas de l'ingénierie. L'ingénierie, c'est concevoir des systèmes capables de supporter des charges de travail intenses, de résister aux menaces de sécurité, de migrer des données d'utilisateurs et de s'adapter à de nouvelles exigences, souvent sur plusieurs années.Les défis du "Vibe Coding" pour l'ingénierieLorsque l'on interagit avec la base de code via des invites, la mise en œuvre technique reste cachée au "Vibe Codeur". Cela conduit inévitablement à ignorer de nombreuses préoccupations techniques. Il est difficile d'exprimer ces inquiétudes dans une simple instruction et encore plus de les vérifier en inspectant uniquement le résultat final. Historiquement, les pratiques d'ingénierie visent à anticiper et à résoudre ces problèmes le plus tôt possible dans le processus de développement, car c'est là qu'ils sont les moins coûteux à corriger. Avec le "Vibe Coding", ces problèmes sont repoussés à la fin, ce qui rend leur résolution beaucoup plus onéreuse.Attention !La question de savoir si une IA peut un jour réaliser l'intégralité du cycle d'ingénierie, construire et faire évoluer un logiciel de la même manière qu'un humain, reste ouverte. Cependant, rien n'indique qu'elle en soit capable à ce stade. Et si cela devait se produire, cela n'aurait rien à voir avec le "Vibe Coding" tel qu'il est défini aujourd'hui.La véritable "Vibe Engineering" : Une vision future ?Imaginons un instant : serait-il possible de concevoir des systèmes fiables entièrement composés d'éléments "vibe-codés" ? Après tout, il fut un temps où le matériel grand public, moins fiable, a remplacé les ordinateurs centraux, et nous avons appris à construire des systèmes robustes à partir de composants intrinsèquement peu fiables.Ces systèmes pourraient encapsuler étroitement les composants "boîte noire" générés par l'IA, avec des tests rigoureux, un profilage détaillé des performances, de la traçabilité, des déploiements progressifs ("canary deployments") et des contrôles stricts de la compatibilité des protocoles. En d'autres termes, ces systèmes utiliseraient les mêmes pratiques d'ingénierie rigoureuses qui sous-tendent les logiciels d'aujourd'hui, mais probablement de manière beaucoup plus stricte.Dans un tel avenir, chaque ingénieur deviendrait une sorte de mélange entre architecte et ingénieur de plateforme. On pourrait même inventer le terme "Vibe Engineering" pour ce nouveau rôle, mais sa définition resterait la même que celle de l'ingénierie logicielle traditionnelle. Il n'y a donc pas de "Vibe Engineering" à proprement parler, il s'agit simplement d'ingénierie logicielle, peut-être avec moins de code à taper qu'auparavant.Quand cet avenir arrivera-t-il ? C'est une question incertaine. Un bon indicateur pourrait être le moment où les ingénieurs répondront avec confiance "oui" à la question suivante :"Seriez-vous heureux d'être de garde pour un système de services entièrement générés par l'IA ?"Jusqu'à présent, la réponse semble être une majorité de "non".Comparaison : Vibe Coding vs IngénierieCaractéristiqueVibe Coding (actuel)Ingénierie LogicielleObjectif principalGénérer du code rapide, prototypageConcevoir des systèmes robustes, évolutifs, durablesInteractionVia des invites à une IAManipulation directe du code, conception d'architectureGestion des préoccupations techniquesSouvent ignorées ou découvertes tardivementAnticipées et gérées dès les premières étapesDurée de vie du projetCourt terme (prototype)Long terme (maintenance, évolution)Confiance pour la productionFaibleÉlevée (avec pratiques rigoureuses)ConclusionLe "Vibe Coding" en tant que pratique est bien là pour rester. Il est efficace et résout des problèmes concrets, permettant de passer d'une idée à un prototype fonctionnel en quelques heures. Cependant, pour l'instant, il n'est pas adapté à la création de logiciels de qualité professionnelle.Il est possible qu'à l'avenir, les logiciels soient construits à partir de blocs "vibe-codés", mais le travail de conception de logiciels capables d'évoluer et de s'adapter ne disparaîtra pas pour autant. Ce n'est pas du "vibe engineering", c'est simplement de l'ingénierie, même si la partie codage sera un peu différente. L'IA est un outil puissant, mais l'expertise humaine en matière de conception, d'architecture et de maintenance des systèmes reste irremplaçable.Merci de votre lecture.Réflexion :Que pensez-vous de cette distinction entre "coder" et "faire de l'ingénierie" à l'ère de l'IA ? L'IA va-t-elle, selon vous, redéfinir fondamentalement le rôle du développeur, ou simplement lui fournir de nouveaux outils ?Coding Team