Ces dernières années ont vu l’arrivée en force des Intelligences Artificielles génératives qui peuvent produire des images, du texte et même du code informatique pour aider les programmeurs. Dans ces conditions, on peut supposer que les métiers de la programmation vont subir un profond changement dans les années à venir. C’est ce que nous allons voir dans cet article.
Note : dans la suite je vais appeler les différentes sortes d’Intelligences Artificielles génératives ou non, AI ou IA (en anglais) par soucis de concision.
Si vous connaissez un peu l’histoire de l’informatique, vous savez que les modifications et évolutions sont nombreuses et surviennent régulièrement.
Citons quelques exemples pour le contexte. Au début, il fallait programmer les ordinateurs en langage machine extrêmement compliqué. C’est la programmation assembleur.
Puis des langages de programmation plus simples sont apparu : Fortran, C, Pascal, C++, etc. A ce moment (années 70 et 80), on a commencé à penser qu’on aurait plus besoin du langage machine assembleur pour programmer les ordinateurs.
Dans les années 90 et 2000, de nouveaux langages de programmation de plus haut niveau ont été créés pour simplifier à nouveau la programmation : Basic (Visual Basic), Python, Ruby, etc. Là encore, on s’est interrogé sur la pertinence d’avoir recours à des langages de programmation plus anciens…
Dans les années 2010, de nouveaux outils sont apparus. Ces outils ont été basés sur le paradigme du « No Code » qui permet d’utiliser un logiciel assez simple qui va dispenser le créateur d’un logiciel d’avoir recours à la programmation pour créer un outil et le commercialiser.
Aujourd’hui (article écrit en 2023), vous n’êtes pas sans savoir qu’on utilise toujours aujourd’hui des outils encore anciens comme le langage de programmation assembleur, le Cobol, le Fortran, le Python ou le PHP (créé dans les années 90 pour écrire des sites Web).
On utilise encore l’Objective-C pour écrire des applications pour iPhone et le Java pour écrire des applications Android.
Tout ceci n’empêche pas certaines personnes d’utiliser des outils No Code pour créer des applications et il en va de même pour les outils type IA comme Copilot et ChatGPT qui peuvent écrire du code informatique et éviter certaines tâches de programmation.
On en vient donc à la question des IA qui permettent de créer du code informatique pour créer des logiciels.
On peut citer celles qui sont les plus connues actuellement :
Si vous lisez la presse ou consultez des vidéos Youtube enthousiastes, vous savez que ces outils sont utiles pour les programmeurs qui cherchent à optimiser leur productivité.
En réalité ces outils ne programment pas tout seul. Leur utilisateur doit les configurer en leur demandant de produire des opérations particulières. Ces « questions » sont appelées « prompt » dans le jargin de l’AI. Il est donc nécessaire de savoir poser les bonnes questions à l’IA sous la forme du prompt adapté au problème.
L’utilisateur qui ne sait pas communiquer efficacement avec une IA et qui n’apprend pas son fonctionnement sera très limité sur l’usage qu’il pourra en faire.
ChatGPT et Copilot sont donc bonnes pour aider le programmeur en lui machant certains travaux de programmation. Mais, en l’état, elles ne peuvent pas construire une application de A à Z sans intervention humaine. En revanche, cela sera peut-être possible dans quelques années…
Les IA peuvent-elles réellement remplacer un programmateur ? Est-ce que les intelligences artificielles vont rendre les programmeurs obsolètes ?
C’est à cette question que l’on essaie de répondre dans cet article. Pour cela il est nécessaire de comprendre que les IA ne sont qu’un outil parmi d’autres (il y a les langages de programmation et le « No Code » en outil concurrents).
Autre chose importante : la programmation n’est qu’un moyen pour arriver à résoudre un problème. En ce sens, le programmeur a pour tâche de résoudre un problème en utilisant un outil composé d’un ordinateur (matériel) et d’un logiciel (compilateur, IA, No Code, Excel, etc.).
La programmation pour la programmation n’a pas de sens. Il ne faut donc jamais perdre de vue l’objectif finale de la programmation.
Si l’on programme un formulaire type CRUD (un utilisateur saisi des informations sur le client de l’entreprise dans le CRM, par exemple), on ne doit pas oublier que cet outil sera utilisé par les commerciaux et par les personnes chargées de la relation client au sein de l’entreprise. Le programmeur doit garder cela en tête pour déterminer les champs qu’il est nécessaire de renseigner (c’est aussi parfois le rôle du chef de projet informatique ou du « product manager »).
Le programmeur du jeu Doom (et qui a également travaillé pour Facebook), John Carmack, apporte une réponse en ce sens à un admirateur qui lui demande si cela veut encore le coup de devenir programmeur :
« Si vous développez des compétences ‘produit complet’ et que vous utilisez le meilleur outil pour créer votre produit, ce qui peut être aujourd’hui la programmation, mais plus tard l’IA, vous vous en sortirez probablement. »
La clé est donc de ne pas perdre de vue le problème que l’on cherche à résoudre et d’utiliser le meilleur outil pour faire ce travail.
Imaginons que demain, vous souhaitez vous investir dans la création d’un jeu vidéo et que des intelligences artificielles existent pout cela. Vous devrez garder à l’esprit que votre but premier est de divertir vos utilisateurs avec votre jeu et que pour cela vous devrez utiliser le meilleur outil à votre disposition (cela peut être de tout programmer à la main, d’utiliser un moteur de jeu vidéo comme Unity ou d’utiliser une IA qui va générer tout ou partie du jeu vidéo).
Un dernier point important est le développement de vos compétences utilisateurs d’intelligences artificielles.
Les outils comme ChatGPT sont performants pour retourner toutes sortes d’informations, mais seuls les utilisateurs avancés peuvent les utiliser pour créer des choses réellement intéressantes et qui sortent de l’ordinaire.
Vous pouvez donc apprendre à créer des prompts intéressants qui vont chercher à résoudre certains problèmes que vous pouvez rencontrer régulièrement. Vous pouvez aussi devenir un utilisateur avancé de ce type d’outil.
C’est un peu comme avec le logiciel Excel. Certains l’utilisent simplement pour faire des tableaux et saisissent tout à la main, d’autres utilisent les formules, d’autres les tableaux croisés dynamiques et les plus avancés font des tableaux de bords complets et écrivent des macros programmées en Visual Basic pour résoudre les problèmes les plus complexes.
En ce sens, utiliser une intelligence artificielle c’est acquérir une nouvelle compétence, une nouvelle corde à son arc, pour devenir encore plus performant dans son travail de programmeur.
Il ne sera pas surprenant de voir dans quelques années des offres d’emploi qui demandent un programmeur Python capable d’optimiser son temps de travail en utilisant Copilot ou ChatGPT.
Si vous voulez vous tournez vers les métiers de la programmation, vous pouvez toujours le faire mais vous ne devez pas occulter les intelligences artificielles.
Au contraire, vous devez les utiliser et voir ce pour quoi elles peuvent être utiles pour être un programmeur plus performant.
La programmation est toujours un métier qui aura de l’importance puisque c’est une compétence qui développe la logique et la résolution de nouveaux problèmes. Des outils mentaux qui vous serviront toute votre vie que vous utilisiez un langage de programmation, du « no code » ou de l’IA pour réaliser votre travail.
Enfin, n'oubliez pas que vous pouvez travailler dans la programmation des IA pour créer de nouvelles intelligences artificielles.