L’essor de l’Intelligence Artificielle (IA), notamment des modèles de langage (LLM) comme ChatGPT et LLaMA, suscite un vif débat sur l’avenir de nombreuses professions. Parmi elles, l’ingénierie logicielle et la programmation sont souvent remises en question, conduisant à deux points de vue dominants sur les réseaux sociaux et dans les cercles technologiques.
L’un dresse un tableau sombre, suggérant que la programmation en tant que carrière viable touche à sa fin. Ses partisans affirment que l’IA automatisera bientôt la génération de code à un point tel que les programmeurs humains deviendront redondants, leurs compétences obsolètes en quelques années. À l’inverse, un autre point de vue rejette les LLM comme de simples nouveautés, divertissantes mais superficielles, offrant peu de valeur réelle au processus complexe du développement logiciel.
Cependant, la réalité est bien plus complexe et nuancée. Pour les personnes entrant ou travaillant déjà dans le domaine de l’ingénierie logicielle, ces opinions polarisées peuvent être déstabilisantes et anxiogènes. En tant que créateur de contenu spécialisé dans la technologie automobile et l’interprétation de code chez carcodereader.store, j’ai été témoin de l’évolution de la technologie et de sa transformation des industries. Explorons donc l’impact transformateur que l’IA est sur le point d’avoir sur le paysage de la programmation dans les années à venir.
Voici les points clés :
- L’IA suit une trajectoire d’amélioration continue, probablement selon une courbe en S, bien que sa position actuelle sur cette courbe reste incertaine.
- Les LLM ne supprimeront probablement pas les rôles d’ingénieurs logiciels. Ils serviront d’outils puissants, amplifiant l’efficacité des équipes et des développeurs, leur permettant d’en faire plus avec moins de ressources et en moins de temps.
- L’utilisation efficace d’outils d’IA comme ChatGPT pour la génération de code nécessite des instructions précises et logiquement structurées. Ce processus reflète la fonction principale d’un programmeur : traduire des exigences dans un langage compréhensible par une machine, mais sous une forme plus abstraite.
- Si l’IA progresse au point où l’intervention humaine devient totalement superflue dans la création de logiciels, nous aurons probablement atteint l’Intelligence Artificielle Générale (IAG). À ce stade, l’obsolescence de la programmation sera éclipsée par des défis sociétaux bien plus profonds découlant de l’automatisation généralisée.
Intrigué ? Approfondissons ces points.
L’amélioration de l’IA et les courbes en S successives
Les progrès de l’IA au cours de l’année écoulée ont été remarquables. Nous sommes passés de croquis rudimentaires générés par l’IA à des films sophistiqués produits à partir de texte, d’images et de paroles, grâce à des plateformes comme Midjourney. Les progrès d’OpenAI avec les modèles GPT ont démontré des capacités impressionnantes à générer du texte cohérent et du code fonctionnel. De plus, les expériences AutoGPT montrent le potentiel des LLM à exécuter de manière autonome des tâches complexes et multi-étapes grâce à des processus itératifs orchestrés par des développeurs qualifiés.
Ces progrès rapides pourraient donner l’impression d’une progression exponentielle du développement de l’IA. Cependant, les schémas historiques de l’avancement technologique suggèrent une trajectoire plus nuancée, souvent décrite par des courbes en S successives.
Le progrès technologique se déroule généralement selon une courbe en S : une phase initiale de développement lent, suivie d’une période d’accélération rapide, et finalement un plateau à mesure que la technologie arrive à maturité. Des innovations révolutionnaires peuvent alors déclencher de nouvelles courbes en S, s’appuyant sur les progrès précédents mais à des niveaux de capacité progressivement plus élevés. Bien que la vue d’ensemble du progrès technologique puisse paraître linéaire, elle est en réalité composée de ces cycles de courbes en S qui se chevauchent.
Il est raisonnable de supposer que le développement de l’IA, du moins dans un avenir prévisible, suivra une progression similaire en courbe en S. Cela soulève une question cruciale : où nous situons-nous actuellement sur la courbe en S de l’IA ? Sommes-nous à l’aube d’une croissance exponentielle, prêts pour un autre bond en avant spectaculaire, ou approchons-nous d’un plateau, les améliorations progressives devenant plus difficiles à réaliser à court terme ?
Si je devais spéculer, je dirais que nous approchons d’un plateau dans la courbe en S actuelle du développement de l’IA. Bien que les LLM et les technologies d’IA connexes aient encore une marge de raffinement et d’optimisation, je pense qu’il nous manque actuellement un élément essentiel qui nécessitera du temps et des efforts importants pour être pleinement réalisé.
À mesure que le contenu généré par l’IA prolifère – vidéos, audio, code, images – un nombre croissant de personnes deviennent aptes à reconnaître ses imperfections subtiles, souvent décrites comme l’effet de la « vallée dérangeante ». Comme beaucoup de projets ambitieux, perfectionner les 10 % finaux des capacités de l’IA pourrait exiger 90 % de l’effort et du temps totaux.
Prédire le calendrier d’apparition de la prochaine courbe en S, marquant le début d’une autre phase d’amélioration exponentielle de l’IA, est intrinsèquement difficile et dépasse la certitude d’un seul individu.
LLM : l’évolution naturelle des IDE pour les programmeurs
Pour revenir au domaine spécifique de la programmation, nous avons assisté à l’intégration et à l’adaptation remarquables de modèles comme le GPT d’OpenAI dans l’environnement de codage. Des outils tels que ChatGPT, GitHub Copilot et le nouveau Copilot X améliorent manifestement la productivité des développeurs de logiciels du monde entier.
Cependant, il est crucial de reconnaître que ces outils d’IA ne remplacent pas les programmeurs ; ils évoluent plutôt en outils indispensables dans l’arsenal d’un programmeur, lui permettant de travailler plus efficacement.
Je me souviens de l’impact transformateur du passage d’un éditeur de texte basique comme Sublime Text à un environnement de développement intégré (IDE) complet comme JetBrains. Ma productivité a connu un bond en avant lorsque j’ai eu accès à des fonctionnalités telles que la saisie semi-automatique intelligente, le refactoring de code automatisé, les frameworks de test intégrés et une compréhension plus approfondie des dépendances des projets. Ces capacités d’IDE m’ont permis de produire un code plus propre et plus robuste à un rythme considérablement accéléré.
Les assistants de codage basés sur l’IA représentent la prochaine étape logique de cette évolution continue des outils de programmation.
Depuis le début de cette année, j’utilise activement Copilot et ChatGPT dans mes projets personnels, et j’ai observé un gain d’efficacité similaire.
De nombreuses tâches routinières du développement logiciel, en particulier dans les nouveaux projets, impliquent des activités qui ne nécessitent pas d’effort cognitif intense mais qui prennent néanmoins du temps. Il s’agit notamment de l’écriture de tests unitaires, de la génération de modèles frontaux, de la création de classes réutilisables ou du formatage des sorties de données. Avec l’aide des outils d’IA, je peux désormais accomplir ces tâches jusqu’à dix fois plus vite. Ces outils démontrent une capacité remarquable à comprendre mes intentions et à générer rapidement l’échafaudage de code nécessaire dans mon projet pour les réaliser.
De plus, lorsqu’il est nécessaire d’implémenter des corps de fonctions complexes ou de travailler avec des bibliothèques inconnues, les assistants IA s’avèrent inestimables. En tapant simplement un commentaire descriptif décrivant la fonctionnalité souhaitée, l’IA peut générer des extraits de code qui correspondent souvent étroitement aux exigences.
Par exemple, dans un projet récent impliquant une application PHP, j’ai dû utiliser la bibliothèque FFMpeg, connue pour sa documentation étendue et quelque peu complexe. Au lieu de me plonger dans la documentation, j’ai simplement ajouté le commentaire suivant à mon code :
<span>public</span> <span>function</span> <span>formatVideo</span><span>(</span><span>$video</span><span>)</span> <span>{</span> <span>// use ffmpeg to convert the video to a gif</span> <span>}</span>
En appuyant sur Entrée, Copilot a généré un code concis et fonctionnel que j’ai pu intégrer facilement dans mon projet avec des ajustements minimaux.
L’élément clé ici est le gain de temps considérable que ces outils offrent. Même si je possédais une connaissance approfondie de la bibliothèque FFMpeg, écrire manuellement le code n’aurait peut-être fait gagner qu’une minute ou deux. Cependant, dans les situations où j’ai des compétences linguistiques générales mais que je manque d’expertise spécifique à la bibliothèque, les assistants IA comblent le vide, me permettant d’articuler mes besoins et de recevoir du code immédiatement utilisable. Cela élimine le besoin de recherches documentaires approfondies, de recherches sur Stack Overflow ou d’essais et erreurs fastidieux.
C’est là que réside le véritable potentiel de l’IA en programmation : elle permet aux développeurs de travailler plus intelligemment et plus efficacement.
Cependant, il est important de reconnaître deux limites clés :
- Excès de confiance et hallucinations : Les modèles d’IA peuvent parfois faire preuve d’un excès de confiance, générant du code qui inclut des arguments ou des fonctions inexistants, soit dans la base de code de mon projet, soit dans des bibliothèques externes. Bien que des invites itératives puissent souvent guider l’IA vers des suggestions plus précises, il arrive qu’elle produise un code totalement hors sujet. Heureusement, ces cas sont relativement rares.
- Manque de conscience contextuelle : Les modèles d’IA actuels comme ChatGPT et Copilot excellent à produire des extraits de code isolés qui effectuent des tâches spécifiques basées sur des entrées données. Cependant, ils ne sont toujours pas capables de développer de manière autonome une application entière. Cette limitation découle de facteurs tels que les limites de jetons (même les modèles avancés comme GPT-4 ont des contraintes, environ 8 000 jetons ou ~ 6 000 mots) et la difficulté de maintenir un style de développement cohérent et d’atteindre les objectifs globaux du programme dans des projets complexes, même avec des bases de données vectorielles et des implémentations AutoGPT. Alors qu’une IA pourrait réussir à générer une application fonctionnelle de liste de tâches, la création d’un système plus complexe comme un CRM pour un salon de coiffure est susceptible d’entraîner des fonctionnalités incomplètes ou un code inefficace.
Ce dernier point nous amène naturellement à une compréhension plus fondamentale du rôle du programmeur.
Programmeurs : traducteurs du langage de la logique
Lorsque vous demandez à différentes personnes de définir ce que fait un programmeur, beaucoup proposeront probablement une réponse simplifiée : « quelqu’un qui écrit du code ». Bien que techniquement exacte, cette définition néglige un aspect crucial de la profession. Un programmeur, un ingénieur logiciel, un développeur – quel que soit le titre spécifique – est fondamentalement un traducteur du langage de la logique.
La tâche principale d’un programmeur est de prendre un concept, une idée ou un flux de travail exprimé dans un langage compréhensible par l’homme et de le traduire dans un langage qu’un ordinateur peut interpréter et exécuter. Ces langages de programmation sont méticuleusement conçus pour éliminer l’ambiguïté et fonctionner dans le cadre strict des principes logiques.
Prenons l’instruction simple : « Lorsque le bouton est enfoncé, changez l’arrière-plan en rouge. »
Lors d’une réunion d’équipe, les humains peuvent saisir intuitivement le sens voulu.
Cependant, un ordinateur a besoin d’informations beaucoup plus spécifiques. Quel bouton ? Quel arrière-plan ? Quelle nuance de rouge ? Que se passe-t-il si le bouton est enfoncé à nouveau ?
Pour supprimer l’ambiguïté, nous devons reformuler l’instruction avec plus de précision : « Lorsque le bouton avec l’ID ‘clicky’ est enfoncé, changez la couleur d’arrière-plan de ce même bouton en une couleur avec la valeur hexadécimale #FF0000. »
Exprimé en code JavaScript, cela devient :
<span>document</span><span>.</span><span>getElementById</span><span>(</span><span>'</span><span>clicky</span><span>'</span><span>).</span><span>addEventListener</span><span>(</span><span>'</span><span>click</span><span>'</span><span>,</span> <span>function</span><span>()</span> <span>{</span> <span>this</span><span>.</span><span>style</span><span>.</span><span>backgroundColor</span> <span>=</span> <span>"</span><span>#FF0000</span><span>"</span> <span>})</span>
Si vous connaissez JavaScript et que l’on vous présentait cet extrait de code, vous pourriez facilement le traduire en une phrase lisible par l’homme, similaire à la version plus précise que nous avons formulée précédemment.
Vous avez effectivement traduit le code JavaScript dans votre langue maternelle.
Ce processus de traduction est au cœur de la programmation et est l’une des principales raisons pour lesquelles je crois que la profession perdurera, même avec l’avènement continu des outils d’IA.
De nombreuses discussions en ligne tournent autour de la question : « Pourquoi ChatGPT ne produit-il pas le code que je veux ? » La réponse récurrente se résume systématiquement à :
« Vous devez savoir comment lui parler. »
Si interagir avec un outil d’IA pour obtenir des résultats précis et cohérents nécessite l’utilisation d’un langage spécifique, alors nous nous engageons essentiellement dans la programmation en langage naturel. Ce n’est pas un concept nouveau, mais la sophistication et l’étendue des LLM ont considérablement abaissé la barrière à l’entrée.
Même si la construction d’une application évolue vers un processus de saisie d’invites dans un outil comme ChatGPT, l’exigence d’utiliser un langage précis pour générer une sortie fiable et fonctionnelle implique que nous sommes, en substance, toujours en train de programmer.
Dans le paysage actuel, tenter de construire une application complète uniquement par le biais des LLM, compte tenu de leurs limites inhérentes, nécessite souvent l’assemblage et l’intégration manuels d’extraits de code. Ce processus constitue encore de la programmation, exigeant une compréhension fondamentale du langage du code généré et de son placement approprié dans la structure globale de l’application.
Cependant, considérons un avenir hypothétique où les progrès de l’IA rendraient une telle intervention manuelle triviale ou inutile. Imaginez un scénario où vous pouvez simplement demander à une IA : « Compilez ces éléments et déployez-les sur example.com. » À ce stade, le besoin même d’un langage de programmation comme étape intermédiaire pourrait sembler disparaître. L’IA deviendrait effectivement le pont entre vos données et le résultat souhaité, contournant complètement l’étape de codage traditionnelle.
Mais une telle capacité signifierait que nous avons essentiellement atteint le domaine de l’Intelligence Artificielle Générale (IAG).
IAG : un changement de paradigme au-delà de la programmation
Supposons que la technologie de l’IA atteigne un niveau de sophistication où l’intervention humaine en programmation devienne minimale ou inexistante. Imaginez un système où une invite connectée à une base de données gérée par l’IA peut générer n’importe quel tableau de bord, analyse de données ou fonctionnalité logicielle que vous demandez. Quelles sont les implications plus larges ?
Si l’IA devient suffisamment avancée pour éliminer le besoin de programmeurs humains, elle aurait probablement la capacité d’automatiser un vaste éventail de professions créatives et basées sur la connaissance. Cela pourrait déclencher un bouleversement économique mondial, car une part importante (potentiellement plus de 60 %) de la main-d’œuvre pourrait devenir fonctionnellement redondante.
Au minimum, un tel scénario nécessiterait l’adoption généralisée du Revenu Universel de Base (RUB). Dans une vision plus radicale, cela pourrait ouvrir la voie au Communisme de Luxe Entièrement Automatisé (CLEA).
Cela, bien sûr, suppose l’adoption immédiate et universelle d’une telle technologie d’IA transformatrice dans toutes les entreprises. Bien que les entreprises soient invariablement poussées à maximiser leurs profits et à améliorer leur efficacité, la réalité est que le monde des affaires s’adapte souvent aux changements technologiques à un rythme plus lent que ne le prévoit l’industrie technologique elle-même.
Je connais personnellement des équipes qui n’adoptent que maintenant des technologies comme Docker ou des frameworks comme React. Le secteur des entreprises, en particulier, a tendance à évoluer délibérément. Même si les outils d’IA pouvaient automatiser 90 % de la charge de travail d’une équipe de développement dans la création de nouveaux produits, la maintenance des systèmes existants et des architectures logicielles complexes et interdépendantes nécessiterait encore une expertise humaine, pendant et même après l’intégration des solutions d’IA.
La profession d’ingénieur logiciel est actuellement confrontée à une pénurie importante, avec environ 100 000 postes vacants aux États-Unis seulement. Même si l’automatisation complète devait devenir techniquement réalisable aujourd’hui, son adoption et son intégration généralisées seraient un processus graduel s’étalant sur une période considérable.
Conclusion : le paysage évolutif de la programmation
Cet article a servi d’exploration de mes propres réflexions sur l’IA et ses implications pour la profession de programmeur. En tant que personne qui admet volontiers être sujette à l’anxiété, je ne nierai pas que je nourris une certaine appréhension quant à l’avenir de ma carrière d’ingénieur logiciel.
Cependant, mon émotion dominante est l’enthousiasme quant au potentiel des outils basés sur l’IA à améliorer ma productivité et à me permettre de devenir un programmeur plus efficace. J’encourage toute personne qui envisage ou qui se lance dans une carrière en ingénierie logicielle à adopter l’apprentissage continu et à explorer activement les outils et les techniques qui deviennent disponibles.
Je crois que nous sommes à l’aube d’une période de progrès remarquables dans l’IA et le développement logiciel. C’est une période passionnante pour être impliqué dans ce domaine. Et sur la base de la trajectoire actuelle, je crois fermement que la programmation n’est pas une carrière sans issue.
Bien que l’efficacité accrue des développeurs grâce à l’IA puisse conduire à des équipes plus petites et à un changement dans les pratiques d’embauche des entreprises au fil du temps, ces mêmes technologies démocratisent également le développement logiciel. Les startups et les petites entreprises peuvent tirer parti de l’IA pour lancer des produits et des services innovants qui auraient auparavant nécessité beaucoup plus de temps, de ressources et d’expertise spécialisée.
Si mon évaluation s’avère incorrecte et que la programmation devient obsolète dans les années à venir, alors cela aura été un voyage fascinant. Vous me trouverez peut-être alors à la poursuite d’une vie plus simple, peut-être à jardiner et à fabriquer des meubles dans une cabane nichée dans les bois.