Je sais ! Je m'étais promis de ne pas parler d'IA car, comme beaucoup d'entre vous je pense, je fais une overdose et je n'en peux plus d'entendre parler d'intelligence artificielle à tout bout de champ. Cependant, je voulais faire cet article pour répondre à une interrogation que je reçois de plus en plus souvent :
Est-ce que ça vaut toujours le coup d'apprendre le développement étant donné l'avancée de l'intelligence artificielle ?
00:00 Introduction
01:19 Le cri au loup
02:40 Il n'y a pas que le code
04:09 L'IA est trop approximative
05:55 La productivité peut amener plus de travail
07:18 Un avenir idéalisé
11:06 Le futur avec l'AGI
11:56 Bénéfices de l'IA
12:40 Impact de l'IA pour l'apprentissage
14:04 L'IA en tant que copilote
15:24 Conclusion
Le sous-entendu derrière la question est de penser que l'intelligence artificielle va remplacer notre métier et qu'apprendre le développement aujourd'hui ne servirait à rien pour le futur. Personnellement, je ne pense pas que l'intelligence artificielle soit capable dans un avenir proche comme lointain de remplacer notre métier car, à mon sens, il est trop complexe.
Si on arrivait à créer une intelligence artificielle avec une telle capacité je pense que le problème serait plus général que de savoir si on peut toujours faire du développement notre métier. La question serait plutôt de savoir si on peut concevoir une société sans travail car l'IA serait alors capable de remplacer la plupart des métiers ? Pour le moment, on ne vit pas dans ce monde là et je pense que c'est toujours pertinent d'apprendre le développement.
L'IA va peut-être être transformer notre métier, le rendre un peu différent mais pas complètement obsolète pour autant et c'est une caractéristique de notre métier que de changer (le développement aujourd'hui n'a rien à voir avec ce que l'on faisait il y a 10 ans...).
Ce n'est pas la première fois qu'on nous annonce que notre métier est censé disparaître. Il y a eu de nombreuses évolutions dans le domaine du développement et à chaque fois que ces évolutions ont eu lieu, on a prétendu que notre métier allait disparaître. Pour vous donner quelques éléments clefs que j'ai pu connaître :
À chaque fois qu'une évolution technologique se propose de remplacer le code, la mort du métier de développeur est annoncée.
Le problème vient du fait que le grand public a une mauvaise conception du métier de développeurs. Pour beaucoup de personnes, être développeur ce n'est ni plus ni moins qu'écrire des lignes de code dans un langage particulier.
Dans la réalité, le code n'est pas forcément l'objectif principal du développeur, l'objectif est avant tout de prendre un problème et de réfléchir à comment on va le solutionner. La solution ne vient pas d'elle même et on doit réfléchir à comment approcher le problème :
Ce n'est qu'une fois qu'on a tout réfléchi que l'on va commencer à écrire du code. Le code n'est que la partie finale qui nous permet d'expliquer à l'ordinateur ce qu'on veut lui faire faire. Et en soit, des outils comme les CMS, comme le no-code, ne sont que des manières différentes d'expliquer les choses à l'ordinateur et quelqu'un qui utilise un CMS ou du no-code reste un développeur.
Si on revient sur l'intelligence artificielle, capable d'écrire du code à partir d'une demande, ce n'est ni plus ni moins qu'un nouvel outil qui permet d'expliquer les choses à la machine. Donc de facto, la communication avec l'IA deviendrait un "langage de programmation". Plutôt que d'écrire du PHP, du Java ou autre, j'expliquerais en français ce que je veux faire, et c'est l'IA qui se chargerait de la phase de traduction. On ne viendrait pas remplacer le métier mais simplement le transformer avec un nouvel outil.
Après, la question qu'il faudra se poser c'est de savoir si c'est plus rapide d'écrire du code ou d'arriver à obtenir de l'IA le code qui correspond exactement à ce qui est demandé (et je ne pense pas que ça soit évident pour des problèmes complexes).
Lorsque l'on écrit du code, il n'y a pas d'approximation possible. Soit le code est juste, soit il ne l'est pas, il n'y a pas d'entre-deux. Les intelligences artificielles ont plutôt tendance à être approximatives (par nature) dans leur réponse. Ce qui est suffisant pour générer des images ou du texte mais ce n'est pas possible lorsqu'il s'agit de générer du code. À moins d'avoir une intelligence artificielle qui répond juste à 100%, on ne pourra pas lui faire confiance pour déléguer le développement de manière autonome. Cela implique qu'à chaque fois que l'on demande à l'IA d'écrire du code pour quelque chose, on est obligé d'avoir un développeur qui va venir vérifier le code qui a été généré.
L'autre souci c'est que l'intelligence artificielle a été entraînée sur une grande quantité de code avec des niveaux très différents. À cause de cet entrainement on se retrouve avec une intelligence artificielle qui va écrire du code moyen.
En plus de ça, elle a pu être entraînée sur de mauvaises données. Par exemple du code qui est périmé et qui n'a plus lieu d'être aujourd'hui, ou du code qui contient des failles de sécurité.
Pour toutes ces raisons là, on est obligé d'avoir un développeur derrière l'IA qui va vérifier les choses. Et personnellement, faire de la revue de code, vérifier que le code est juste et qu'il fonctionne, n'est pas forcément évident. C'est quelque chose qui peut parfois prendre plus de temps que d'écrire soi-même le code. Surtout que dans le cas du code généré par l'IA elle ne peut pas nous expliquer comment elle a réfléchi et justifier l'approche choisie.
À l'heure actuelle, les IA n'ont pas un bon taux de réussite et je ne pense pas personnellement qu'on arrive un jour à une IA de confiance à ce niveau là. Ce sont les 10 derniers pourcents de réussites qui vont être un vrai challenge à obtenir et qui pourrait demander encore plus de travail que tout ce qui a été fait jusque là.
Un autre point qui peut faire peur c'est que le gain de productivité entrainé par les IA engendre une baisse de besoin car un développeur pourra faire le travail de 10 développeurs. C'est un point qui se tient mais qui peut aussi fonctionner dans les 2 sens avec le principe d'élasticité de la demande.
Depuis des années, notre productivité en tant que développeur n'a de cesse d'augmenter (avec l'apparition de Framework ou de librairies qui nous permettent de créer des sites beaucoup plus rapidement que par le passé) mais pour autant la demande de développeur n'a fait qu'augmenter. Car avec des développeurs plus efficace et plus nombreux il est possible de créer des projets plus conséquents qui n'était pas faisable facilement par le passé.
Pour moi, le gain de productivité ne veut pas nécessairement dire une perte en termes d'emploi. Ça peut fonctionner vraiment dans les deux sens et seul l'avenir nous le dira. Je ne pense pas qu'on puisse se baser sur cet argument là pour se dire que le métier va disparaître.
Certains d'entre vous vont me dire
oui mais là tu parles de l'intelligence artificielle à l'heure actuelle mais dans un avenir plus ou moins lointain, elle va être capable de résoudre des problèmes complexes et dans ce cas-là menacer ton métier.
Alors je dirais qu'il faut faire attention avec les effets d'annonce autour de l'intelligence artificielle parce que c'est un domaine qui attire beaucoup d'investissements et du coup certaines entreprises n'hésitent pas à mentir ou à faire des hyperboles sur leur capacité dans l'objectif d'attirer des investisseurs.
Pour vous donner quelques exemples concrets, on a eu récemment par exemple Devin qui était une IA qui se proposait justement de remplacer les développeurs, avec une démonstration vidéo où l'IA est capable de décomposer le problème et d'écrire un code complet avec plusieurs fichiers. Dans les faits il s'avère que cette démonstration est truquée et que de nombreuses affirmations sont fausses mais cela dit, la démonstration a suffit pour que de nombreuses personnes / média l'utilisent comme preuve de la fin programmée des développeurs.
On a eu la même chose avec la démo de Gemini (IA de Google), qui présente quelqu'un qui converse avec une IA qui semble capable de comprendre des interactions en temps réel. Mais si on regarde dans les petites lignes on voit que cette démonstration n'est pas réaliste et qu'elle reflète plutôt la vision désirée de l'IA plutôt que ce dont elle est actuellement capable.
Enfin, une autre annonce que je voulais analyser c'est celle qui a été faite par le CEO de Nvidia Jensen Huang.
It is our job to create computing technology such that nobody has to program and that the programming language is human. [...] Everybody in the world is now a programmer.
Nvidia c'est un constructeur de processeurs graphiques, qui sont des processeurs qui sont indispensables dans l'entrainement et l'utilisation de modèles d'intelligence artificielle. C'est une entreprise qui a un intérêt assez important à voir l'IA se développer (comme pour la blockchain ils sont les bénéficiaires indirect du battage autour de l'IA) et ils ont un intérêt important à survendre les capacités et l'évolution de l'IA. Aussi, et cela rejoint le premier point, ce n'est pas parce que tout le monde peut maintenant générer du code que l'on peut créer des applications pour autant. Mais, en vendant cette possibilité Nvidia cherche à solidifier l'idée que l'IA va continuer à évoluer à un rythme important pour devenir LA technologie du futur. Dans la réalité c'est surtout une société qui s'adapte au marché et qui communique en ce sens.
Enfin, pour ceux qui me citeraient Elon Musk comme source d'information, ce n'est pas quelqu'un en qui on peut avoir confiance pour prédire une tendance...
De manière plus générale, je vous dirais de faire attention aux sources d'informations liées à l'intelligence artificielle. Essayez de trouver la citation originale derrière un article et regardez qui en est à l'origine. Est-ce qu'il a un intérêt à faire la promotion de l'intelligence artificielle ? Et appliquez aussi la même retenue sur cet article car, en tant que développeur, je vais avoir un avis qui va être complètement différent de quelqu'un qui travaille dans le domaine l'IA. Il est important de recueillir l'avis de différentes personnes et à partir de ça de vous faire votre propre opinion. Ne vous basez pas simplement sur l'avis d'une personne qui soit pour ou contre mais essayez vraiment d'écouter les deux opinions
Maintenant, je peux me tromper. Et l'AGI, l'intelligence artificielle générale, pourrait être plus proche qu'on ne le pense. Dans ce cas là on se trouverait avec une IA avec les capacité cognitive d'un humain et la rapidité d'une ordinateur. Si on arrive effectivement à ce niveau d'IA, je pense que le problème ne sera pas de savoir si on peut garder notre métier de développeur mais plutôt de savoir si on peut imaginer une société qui ne soit pas centrée sur le travail car aucun métier ne sera épargné. On pourrait toujours apprendre le développement mais ça serait alors par loisir plutôt que par vocation.
Enfin, je voudrais étendre cet article sur l'utilisation de l'intelligence artificielle dans notre domaine, parce que je peux sembler être contre l'IA mais il n'en est rien. Je pense que l'IA est une solution intéressante qui va permettre de résoudre des problèmes que jusqu'à maintenant on ne pouvait pas résoudre facilement avec de simples algorithmes et cela va ouvrir de nombreuses perspectives intéressantes. Par contre, je pense qu'à l'heure actuelle, on essaie d'utiliser l'IA pour répondre à des problématiques qui ne sont pas forcément adaptées à son utilisation en la vendant comme la solution à tous les problèmes.
En tant que formateur on me demande souvent ce que je pense de l'IA comme vecteur d'apprentissage. Personnellement, je suis un petit peu mitigé sur le sujet car je pense que l'IA peut être intéressante pour obtenir des réponses adaptées à son problème et son niveau de compréhension. Et ce n'est pas forcément si différent que les recherches que l'on faisait sur les différents forums d'entraides. Le principal inconvénient de l'IA, c'est qu'elle peut se tromper et donner des informations incorrectes avec un aplomb important. Il est donc important de vérifier ce qui est donné par l'IA mais en soi ce n'est pas forcément si différent d'une recherche qui peut donner de mauvais résultats. La différence, c'est que sur les forums, il y a souvent des interactions avec des personnes qui critiquent les réponses données et en propose de nouvelles, ce qui permet d'avoir un meilleur contexte.
L'autre inconvénient est que la technologie avance assez vite et les modèles ne sont pas forcément entrainés sur des données suffisamment récentes. Essayer d'apprendre le code à une IA est plus complexe qu'apprendre une langue vivante qui ne change pas de manière conséquente au fil des années.
Avec les IA on a aussi vu arriver des "copilotes" qui sont des IA qui viennent s'intégrer aux éditeurs pour proposer des suggestions de code dès que vous commencez à écrire.
De mon côté ce n'est pas forcément quelque chose que je trouve très pratique car ça impacte ma manière de travailler négativement. Avec l'autocomplétion classique offerte par l'éditeur je peux prévoir à peu près ce qui va m'être proposé et je sais que les propositions sont justes. Lorsque je tape le début du nom d'une méthode, je m'attends à ce qu'il me propose des méthodes qui existent sur l'objet en cours et qui sont documentées.
Le problème avec l'IA, c'est qu'elle n'est pas déterministe et elle peut donner n'importe quoi en fonction de la situation. Aussi, on commence à écrire un peu de code puis on attend qu'une suggestion arrive. On doit scanner rapidement le code fourni pour voir s'il correspond à ce que l'on voulait faire ou non. S'il ne correspond pas, on continue à avancer pour avoir une autre suggestion et voir si elle convient ou non, et ainsi de suite...
Plutôt que d'écrire du code, et de passer de notre pensée au code, on se retrouve dans un jeu où l'IA va essayer de deviner ce que l'on cherche à faire pendant que l'on valide que les propositions correspondent aux attentes en effectuant des modifications si nécessaire. À chaque fois que l'IA suggère du code, on est obligé de l'analyser pour comprendre s'il correspond à ce que l'on veut ou pas et c'est quelque chose que je trouve épuisant mentalement. C'est pour ça que je ne suis pas forcément fan de ces solutions là mais ça reste un avis personnel et si c'est une approche qui vous convient je ne vois pas de contre-indication.
Si je dois résumer un petit peu les choses, je ne pense pas que l'intelligence artificielle soit capable dans un avenir proche de faire des raisonnements complexes, et je pense qu'elle va être limitée à la complétion de code avec un directeur qui sera un développeur. Je ne pense pas non plus que l'IA ne sera pas capable de générer du code qui sera systématiquement juste, et il faudra nécessairement aller vérifier que ce qu'elle a dit est juste. Elle peut être pertinente lorsqu'on a des petites questions, et elle permet aussi de générer du code qui est adapté à la question (avec les bons noms des variables et les bonnes données). Je trouve l'IA pratique dans des cas particuliers comme l'écriture de tests, la génération de données, mais je ne la trouve pas forcément encore assez juste pour devenir une manière différente d'écrire des programmes.