tominardi.fr

L'état de l'IA pour les développeurs

08 février 2024

Petit article écrit d'une traite. Je sors d'un meetup animé par Hugo Herault de chez Keepcod, à props des outils IA à destination des développeurs, et j'ai envie de profiter d'avoir encore la tête là-dedans pour donner mon ressenti.

L'IA comme assistant

La première chose qui nous vient à l'esprit quand on pense à utiliser l'IA en tant que développeur, c'est les outils d'assistance. Avec, en toile de fond, l'idée que peut-être, demain, ces outils vont nous remplacer et que le métier de développeur sera du passé.

JP

  • Notre métier est fini
  • Vous voulez dire éteint

Spoiler alerte à ce sujet : on a le temps de voir venir.

Aujourd'hui, il faut vraiment voir ces assistants comme... bah des assistants... C'est une sorte de canard en plastique, qui nous aidera à résoudre nos problèmes de nous-mêmes rien qu'en formulant nos questions, et qui, en plus, pourra répondre, inlassablement, n'importe quand.

Les principaux outils

Les deux outils qui, pour le moment, sont les plus populaires, et je ne vais surprendre personne, c'est ChatGPT et Github Copilot.

Le premier est un LLM accessible sous forme de chat dans le navigateur, et basé sur les modèles GPT3.5 ou GPT4. Inutile de revenir dessus, il a très largement fait le buzz et c'est lui qui a fait rentrer les IA chez le citoyen moyen.

Pour l'utiliser en tant que développeur, on va tout simplement lui poser une question, auquel il pourra répondre en insérant un extrait de code, par exemple.

Github Copilot, lui, est un outil vraiment spécialisé dans la génération de code. C'est un outil qui s'installe comme une extension à votre IDE (VS Code, Jet Brains, etc), et qui, dans son utilisation la plus simple, propose une auto-complétion intelligente en fonction de ce qu'on est en train d'écrire. Il est également possible d'ouvrir une session de chat, session qui prendra en compte le code ouvert dans son contexte.

Les cas d'utilisation

Les cas d'utilisations de ces 2 outils ne sont pas vraiment limités, mais on peut facilement isoler les cas suivants :

Les inconvénients

Tout ça n'est pas magique, et il y a évidemment des problèmes. Sinon, on ne serait déjà plus ici pour en parler.

skynet

note : je ne m'attarde pas sur les conséquences écologiques des IA en général. Ça mériterait un article entier. Sachez que ça fait partie des questions qui se posent.

Biais de confirmation

Le premier problème que je vois, c'est le biais de confirmation qui touche chatGPT, mais également Copilot, même si ça se voit moins.

Je vais prendre exemple sur ChatGPT, car c'est plus facile à voir. En gros, pour schématiser, si on tourne une question sous la forme "Est-ce que {SOLUTION} est une bonne solution pour résoudre {PROBLEME}", ChatGPT aura tendance à répondre par la positive. Ca m'arrive encore régulièrement de tourner maladroitement mes questions sous cette forme, et un petit "heu... tu es sûr de toi" réveille un peu ChatGPT, qui peut s'excuser de son erreur. Mais en gros, le LLM a tendance à être d'accord avec la personne avec qui elle parle.

Quelles conséquences sur le développement ? Eh bien lui et vous, vous pouvez vous entrainer vers une mauvaise solution, trop compliquée, ou qui ne répond plus vraiment au problème initial. C'est très contre-productif, et le pire c'est que vous pouvez très bien vous laisser entrainer et ne pas le voir.

Ne perdez pas de vue que ces LLMs sont de piètres architectes. C'est vous le professionnel, pas lui.

Conséquences sur la Qualité

Cela a une conséquence sur la qualité. En effet, on commence à voir arriver des études montrant que l'impact des IA sur la qualité peut être négative.

Le lien que je vous donne parle de la redondance dans le code, ainsi que du code churn, mais mon intuition, c'est qu'on peut vite être tenté, avec un assistant, de se lancer dans des chantiers qui nous dépassent, en termes de compétence, et d'intégrer des mauvaises choses.

La dépendance aux outils

Problème suivant : la dépendance aux outils, qui ne va pas toucher tout le monde de la même façon. Un junior qui débute prend le risque de ne jamais vraiment apprendre le fonctionnement de son langage, et sera absolument perdu sans. Un développeur plus expérimenté peut également vite être perdu s'il s'habitue à coder tout le temps avec ça. Quand je suis dans le train et que je perds ma connexion, je me rends compte à quel point je me suis habitué à travailler avec. Pensez à vous déconnecter. Pensez à soigner votre expertise.

Confidentialité des données et du code

Enfin, le problème le plus sensible pour les entreprises concerne la sécurité des données. En effet, le plugin copilot installé sur son IDE, c'est le code source de la boite qui est envoyé chez Microsoft, sans qu'on ait trop de regard sur ce qui se passe chez eux. Et, de ce que j'ai constaté, en 2023, les entreprises n'étaient pas prêtes du tout pour l'arrivée de l'IA. Beaucoup de développeurs utilisaient les IA de leur propre initiative, sans qu'il y ait un règlement interne pour l'autoriser ou l'interdire. Les politiques de sécurité des entreprises n'étaient pas encore au point, et je ne suis pas persuadé que ce soit beaucoup plus le cas aujourd'hui.

Cela concerne aussi les éventuelles données qui seraient sur le disque dur des développeurs. Même si certains fichiers sont dans le .gitignore, je ne suis pas certain que Copilot le prenne en considération. C'est donc une énorme brèche de sécurité, et les enjeux à ce niveau sont énormes. Certaines sociétés proposent des alternatives.

Les alternatives

OpenAI (ChatGPT) et Microsoft (Github Copilot) proposant chacun un outil privé et mutualisé, on peut estimer que cela sera un frein pour bon nombre de sociétés ou d'organisations gouvernementales soucieuses de la confidentialité des données.

À ce titre, il existe plusieurs types d'alternatives :

Mon retour

Du coup, de mon côté, j'utilise ces outils depuis un peu plus d'un an, et j'aurais vraiment du mal à faire marche arrière.

J'estime qu'avec le niveau d'expérience que j'ai, je travaille trois fois plus vite avec que sans.

Tant qu'on reste à sa place de développeur et qu'on le garde dans son rôle d'assistant, c'est un outil qui permet un gain de productivité énorme, qui rend beaucoup de choses accessibles, qui vous aide à vous poser les bonnes questions et vous aiguille sur les bonnes réponses.

Certaines personnes parlent plutôt d'un rapport du simple au double sur la productivité, mais en ce qui me concerne, je persiste sur mon rapport de 1 pour 3. Et je pense que quand l'adoption sera généralisée, on aura effectivement besoin de 3 fois moins de développeurs. C'est, selon moi, tout ce qui est "pisseurs de code", qui vont être affectés rapidement. Quand on a besoin de faire rapidement une tâche répétitive et bien spécifiée, les LLMs sont ultra-performants.

Comme je l'ai dit plus haut, il y a des choses que je n'aime pas. Par exemple concernant la rédaction des tests. À se laisser guider par Copilot, c'est un coup à ce qu'il teste des choses inutiles. Globalement, il n'est pas très Yagni.

Par contre c'est très sympa de faire du TDD avec lui.

Les perspectives

Quelles perspectives à moyen terme ?

Je suis personnellement persuadé que les entreprises vont bientôt toutes avoir des oracles internes, à qui elles apprendront les spécificités de l'organisation : frameworks internes, documentation techniques et utilisateurs, etc.

Les outils pourront à la fois aider les équipes internes, mais aussi servir de support niveau 0 en dépannant les utilisateurs.

Quant à la survie du métier de développeur, elle ne fait aucun doute. Il me semble que c'est Michaël Azerhad qui, sur LinkedIn, avait partagé l'avis suivant : dans tous les cas, il faudra bien spécifier à la machine ce qu'elle a à faire, en lui communiquant des spécifications précises, en lui renseignant des règles métiers. Finalement, c'est exactement ça, le métier de développeur.

Parce que, après tout, quand on code en JavaScript ou en Python, on utilise déjà un langage de haut niveau, avec un très fort niveau d'abstraction, qui se rapproche du langage naturel. Je ne suis pas certain que les pionniers verraient nos métiers comme du vrai développement (d'ailleurs quand j'ai commencé à faire du web, on n'était pas mélangé avec l'équipe informatique dans la boite où j'étais). Donc, quand bien même les LLMs seraient capables de traduire parfaitement un besoin en code informatique, au final ça ne serait jamais qu'un niveau d'abstraction supplémentaire.

En conclusion, je suis plutôt enthousiaste sur les IA pour nos métiers. Même si bon, parfois, hein, je me réveille la nuit en me disant que la fin du monde est pour demain, Skynet, tout ça 😁

L'IA comme librairie

Je vais faire très rapide sur cette partie, parce que je dois partir faire un peu de musique, mais bizarrement, quand on parle de l'arrivée des IA pour les développeurs, peu de gens semblent penser à un point pourtant incroyable : l'utilisation des IA comme librairie.

Le connecteur ChatGPT en python est tellement simple à utiliser, et il offre des perspectives incroyables.

J'ai déjà expliqué [comment j'ai automatisé la modétation des images sur mon site)[/7/2/2024/moderer-automatiquement-images-python-avec-nudenet/), mais je pourrais aussi parler des contenus qui je génère grâce à chatGPT pour alimenter les réseaux sociaux. Et les idées pour l'avenir ne manquent pas : analyse de contenus, aiguillage automatique, etc. L'automatisation permise par les LLM est assez incroyable. À condition de ne jamais oublier que l'outil n'est pas fiable. Par exemple, si on demande à ChatGPT de nous répondre avec un json, qu'on lui fournit un template, à tout moment, il peut s'éloigner de la réponse attendue. C'est à prendre en compte.

Évidemment, ça fait déjà pas mal de temps que des boites utilisent des modèles pré-entrainés (ou non, d'ailleurs, il existe d'autres technologies qui conviennent à d'autres cas d'utilisation). Mais la démocratisation de chatGPT est une chance incroyable, et ça donne à tout le monde l'opportunité de réaliser, très facilement, des tâches qui paraissaient beaucoup plus compliquées il y a peu de temps.

Allez, sur ce, je vous laisse, on m'attends.

Tumblr
Pinterest
LinkedIn
WhatsApp

<< Modérer automatiquement des images en python avec nudenet

2022 - tominardi.fr