L'Intelligence Artificielle, la fin des développeurs?

Dans le paysage technologique actuel en évolution rapide, l’essor de l’intelligence artificielle (IA) commence à susciter la curiosité et l’inquiétude des étudiants et ingénieurs logiciels. Alors que l’IA et l’apprentissage automatique continuent de progresser, nombreux sont ceux qui se demandent : l’IA remplacera-t-elle les ingénieurs logiciels?
Pour répondre à ces préoccupations et mettre en lumière la relation complexe entre l'IA et le développement de logiciels, nous explorerons les applications actuelles du développement de logiciels assisté par l'IA, les avantages qu'il offre et les défis potentiels qu'il pose.
L'état de l'informatique
L'informatique a pour but de traduire des idées en un programme qui va être exécuté par. un ordinateur.
L'une des hypothèses fondamentales en informatique est que les programmes doivent être écrits, maintenus et compris par les humains! Or le problème est que les humains sont tout simplement nuls dans ces 3 aspects!
Depuis les années 1960 dernières années, les sciences informatiques on essayé de pallier aux limitations des humains en:
- Créant de nouveaux languages de programmation pour rendre la programmation plus facile: De LISP, FORTRAN, COBOL, BASIC dans les années 1950 à Java, Rust, Go, Python etc. aujourd'hui.
- Créant de nouveaux paradigmes de programmation pour aider a bien structurer le code: On est passé de la programmation fonctionnelle, à la procédurale et ensuite orientée objets.
- Créant des outils pour améliorer la qualité du code, détecter les bogues et augmenter la productivité des programmeurs
- Créant des méthodologies pour mieux encadrer les activités de développements: Waterfall, Prototype, Agile
Après plus de 60 ans, les humains ont toujours la difficulté à écrire des programmes faciles à comprendre et maintenir! On produit toujours des programmes truffés de bogues, difficile à faire évoluer, qu'on est obligé de les réécrire au bout de 6 à 8 ans (en moyenne).
Les Large Language Models

Les Large Language Models (LLM) sont des réseaux neuronaux qui sont entraînés avec de larges quantités de texte, ce qui leur permet de comprendre et générer du contenu.
Avec les LLM, on est passé à une ère où les machines sont capables de comprendre un énoncé de problème en langage naturel, et de produire en sortie du code pour résoudre ce problème. Ce code étant conçu et écrit sans la moindre assistance d'un humain!
Voici un exemple de requête à ChatGPT qui demande de produire le code pour compter le nombre de mots dans un texte:

Et voici le résultat généré par l'IA:

L'ère de la programmation en binôme IA
Une pratique de développement très populaire en entreprise est la programmation en binôme (pair programming en anglais) où 2 développeurs travaillent sur le même poste de travail:
- Le conducteur qui écrit le code
- L'observateur, qui assiste le conducteur en décelant les imperfections, vérifie que le code est correct, et fait des suggestions au conducteur.
La pratique de programmation en binôme favorise la collaboration, réduit les erreurs, améliore la résilience, améliore la qualité du code et accélère la formation des membres juniors de l'équipe.
Les LLM ont permit l'émergence de la programmation en binôme où l'observateur est une IA tels que Github CoPilot, Cody ou Codeium. Les binômes IA sont des plug-ins que les développeurs ont juste à installer dans leur environnement de développement intégré, et il analyse votre programme pour comprendre sa structure et le context, pour:
- faire des suggestions de code en temps réel au développeur.
- détecter automatiquement des erreurs de syntaxe et de structure.
- poser des question en langage naturel, au lieu de faire des recherches dans Google ou StackOverflow.
Aujourd'hui, coder sans un binôme IA, c'est comme faire une course à pied contre des adversaires en voiture de F1!
Les seules choses qui empêchent les binômes IA d'être vraiment bon, c'est plus de données et plus de puissance de calcul. Devinez quoi, nous avons les deux en abondance !
L'ère des développeurs IA
Avec les données et la puissance de calcul en abondance, les binômes IA vont devenir de plus en plus meilleurs, au point de passer d'observateur à conducteur, et vont tout simplement écrire le code à la place des humains!

L'équipe de développement dans quelques années sera composée de:
- Un analyste d'affaire, qui va formuler le problème à l'ingénieur IA en langage naturel (anglais, français etc.).
- Le programmeur AI va générer le code pour résoudre le problème dans un language de programmation donné (Ex: Java).
- L'ingénieur humain va reviser et vérifier le code produit par l'IA, fournir le feedback a l'IA pour qu'il fasse des amélioration au besoin.
- Puis le code va être livré une fois qu'il sera jugé de bonne qualité.
Les humains vont continuer à être dans la chaine de développement pendant un certain temps. A un moment donné, on aura assez confiance aux ingénieurs IA qu'on aura plus vraiment besoin d'humains pour faire les vérifications.
A ce point:
- Les programmes seront écrits, maintenus et compris par les machines!
- Le langage de programmation sera un langage naturel, et non Java, Rust ou PHP: tout le monde sera un programmeur!
- Les ingénieurs IA n'auront plus besoin de générer du code compris par des humains, ils produiront du code en langage machine, qui sera directement exécuté par des ordinateurs.
- Les coûts de développement vont être largement réduits: plus besoin de payer grassement des programmeurs, juste louer un développeur IA que vous payerez à l'utilisation.
Quel impact pour les développeurs?
La nature du travail
L'IA va profondément changer le rôle des développeurs, qui auront plus un rôle de surveillance des IA, au lieu de générer le code.
Il y aura donc une réduction du nombre programmeurs requis pour exécuter des projets, ce qui va entraîner une chute considérable de la demande pour les programmeurs. Il ne faudrait pas être surpris que les mises à pied dans le domaine de la tech s'amplifient!
Les méthodologies de développement
Une équipe agile scrum livre généralement la valeur sur une fréquence de 2 à 3 semaines. Ceci parce que:
- The Mythical Man-Month, un des livres les plus influents sur le génie logiciel, stipule qu'un développeur produit en moyenne 10 lignes de code par jour!
- Le développeur travaille en moyenne 8 heures par jour. Le reste de 16 heures sont pour sa vie personnelle et se reposer.
- Dans les 8 heures de travail, il passe une bonne partie de son temps dans des meetings à communiquer avec ses pairs (scrum journalier, enrichissement des stories, planification, sessions de design).
L'IA n'a pas besoin de repos, n'a pas de vie personnelle donc peut travailler 24 heures sur 24. Les besoins de communications avec l'IA seront réduits. Il va donc falloir repenser comment développer les logiciels dans un contexte où l'IA augmentera considérablement la productivité, et que certaines activités de développement deviendront probablement obsolètes.
Les salaires
Combien coûte un informaticien aux US?
- Le salaire moyen d'un informaticien au US est d'environ $120K/an.
- $120K / 260 jours de travail = $461/jour.
Combien coûte un IA comme ChatGTP?
- ChatGPT coûte $0.015 / 1K jetons.
- 1 ligne de code contient environ 10 jetons.
- 10 lignes de code par jour * 10 jetons = 100 jetons/jour.
- Soit un coût de $0.0015 / jour
$461 contre $0.0015 par jour! Considérant que les salaires représentent une part importante des coûts de développement logicielle, une telle statistique va avoir un impact significatif sur l'industrie.
Est-il encore pertinent d'étudier en informatique?
Oui!
- Il va falloir avoir les compétences techniques pour pouvoir surveiller les IA!
- Il y aura un besoin pour des développeurs dans le domaine de l'IA.
- l'IA va offrir de nouvelles opportunités d'emploi dont on a encore aucune idée! Dans les années 1990, les rôles de développeurs Web ou Android n'existaient tout simplement pas. Ce sont des rôles qui ont apparus avec les Internet et les téléphones mobiles.
En rétrospective, l'IA va avoir un impact significatif sur la pratique de génie logiciel. Il y a probablement des catégories d'emploie qui vont disparaître, mais il y aura aussi de nouvelles opportunités.
Alors, pas de panique! Il faut juste embrasser le changement.
Si vous n'utilisez pas d'outils comme Github Copilot (ou tout autre binôme IA), je vous conseille fortement de le faire. Les gains en productivité sont impressionnants. Dans quelques années, il n'y aura aucun développeur qui travaillera sans IA!
Si vous avez aimé l'article, montrez votre soutien avec un ❤️ et abonnez-vous a mon blog! Votre engagement m’inspire!