Programmer avec ChatGPT : forces et limites
Ce matin, je lisais un billet récent de Dave Winer, un type qui dit souvent des choses intéressantes sur l’informatique et la programmation. Il fait partie, comme moi, des développeurs enthousiasmés par ce que ChatGPT peut apporter au quotidien à un développeur expérimenté. Mais ce billet de Dave Winer, qui reprend son podcast, va un poil plus loin, et exprime ses frustrations après quelques mois d’utilisation. Et ces frustrations, cela n’a rien d’étonnant, je les ai également ressenties : écrire du code avec ChatGPT est une expérience quasi magique, mais dont on finit un jour ou l’autre par atteindre les limites. Alors faisons ensemble un rapide petit point sur les forces et faiblesses de cet étonnant outil, pour un usage quotidien par un développeur informatique.
Les forces
Voici en vrac quelques un des atouts incroyables de ChatGPT.
- Il connaît quasiment tous les langes informatiques. Je l’ai testé en Python, bien sûr, mais également en JavaScript, en PHP, en BASIC (pour un article récent), je l’ai testé pour du code SQL, des requêtes ElasticSearch, du code CSS, des scripts Unix et même pour des formules Excel. Et à chaque fois, j’ai obtenu des résultats sensés. Bien sûr, ce n’est jamais parfait du premier coup, il faut tuner le système avec quelques prompts supplémentaires, mais imaginez un peu le temps que vous gagnez si vous devez par exemple reprendre un programme dans un langage que vous n’avez pas utilisé depuis plusieurs années…
- Il connaît de nombreuses API publiques, de très utilisées comme de plus spécifiques, telle celle de Sefaria. Même si parfois il invente des usages non supportés, des paramètres imaginaires, ou a tendance à utiliser des API dépréciées, il en connaît un rayon.
- Il commente tout ce qu’il produit, et cela facilite grandement la compréhension de ce qu’il vous propose. D’ailleurs, je n’ai jamais rencontré dans ma vie un développeur avec un ratio commentaires / code aussi élevé.
- C’est toujours structuré avec soin, en respectant les normes de programmation du langage utilisé, par exemple sur la casse des noms des variables, procédures, des classes ou des méthodes. Il sait indenter proprement son code (en Python, c’est une nécessité…) et insère des sauts de ligne là où cela rend le code plus lisible.
- Il sait corriger une erreur de sa part si vous le lui demandez, en indiquant précisément ce qui ne fonctionne pas et ce que vous attendez de lui.
- Il sait reprendre un bout de code mal écrit ou truffé d’erreurs, en le corrigeant, et en indiquant ce qu’il a corrigé. On peut lui dire « Corrige moi ceci » en copiant plusieurs dizaines de lignes de code et il en ressort un truc propre.
- Il sait « objectifier un code » : vous lui donnez un code écrit de manière procédurale, et vous lui dites : « réécrit avec une approche objt », il sait parfaitement exécuter cela.
- Il sait interpréter les messages d’erreur les plus courants.
- Il sait se souvenir d’exemples de code que vous lui avez fourni par le passé. Il sait reprendre, apr exemple, un code d’initialisation que vous avez l’habitude d’utiliser d’un script à l’autre (par exemple pour lire des variables d’environnement permettant d’initialiser une connexion à une base de données).
Les limites
Pourtant, ChatGPT dispose encore d’une importante marge de manoeuvre.
- Sa mémoire est aléatoire. Quand je dis qu’il sait se souvenir du code que vous lui avez fourni, c’est exact mais incomplet. En réalité, sa mémoire est sélective. Il a tendance à garder ce que vous lui fournissez, mais à réutiliser ce qu’il a l’habitude de vous fournir. Il a par exemple l’habitude d’utiliser une procédure de connexion à ElasticSearch avec un paramètre inutile, que je dois supprimer à chaque fois. J’ai beau lui dire de ne pas l’utiliser, cela revient régulièrement, et c’est assez agaçant.
- Quand on lui demande de corriger une erreur, il a tendance à fournir de nouveau l’ensemble du code, au lieu de ne fournir que le bout de code, ou la procédure / méthode / fonction concernée.
- Il est parfois assez paresseux, et a tendance à fournir des codes parfois assez longs, qu’on pourrait très bien factoriser à l’aide d’une ou deux méthodes bien pensées. Si on le remarque et on lui indique comment corriger, il sait le faire, alors pourquoi ne pas le faire du premier coup ? On dirait que son mode de fonctionnement, consistant à s’inspirer de codes déjà écrits, qui peuvent parfois être de piètre qualité, déteint sur sa production.
- Il n’est pas très à l’aise avec les problèmes d’installation. C’est normal, il ne connaît pas nos environnements et nos configurations. Mais c’est und es rares domaines où j’ai rarement réussi à tirer profit de ses conseils.
- Il a tendance à proposer des trucs inexistants ou impossibles quand il sort de ses limites. C’est comme avec les images produites avec trois bras ou des mains à sept doigts, même quand il produit du code, il peut halluciner.
- En fait, plus je l’utilise, et plus j’ai le sentiment d’avoir affaire à un super développeur qui connaît un tas de choses, mais qui a l’air de s’ennuyer et n’apprend plus grand chose, et cherche souvent à reproduire le même fonctionnement.
- Il n’a pas de grandes compétences UX/UI. Je l’ai remarqué sur des petits scripts qui me permettaient de créer des POC avec une interface visuelle assez élaborée. Ce qu’il fournit fonctionne, mais est parfois inexploitable tant la répartition des différents éléments graphiques est aberrante. Il faut alors lui indiquer les proportions de chaque bloc, mais il ne s’en sort étrangement pas très bien, alors qu’il est assez bon en CSS.
Alors que peut-on en conclure ?
Bref, comme je l’ai écrit il y a quelques jours, ChatGPT ne marque pas, à mon sens, la fin des développeurs juniors. Il marque seulement le début d’une ère plus sélective, celle des utilisateurs qui vont au fond des choses et ne se content pas de superficialité. Et qui, comme le remarque Dave Winer, ne s’appuient pas sur ChatGPT pour des idées stratégiques, qui ne se contentent pas du consensus, mais qui savent utiliser ChatGPT pour ce qu’il est : une formidable encyclopédie doté d’une interface rudement efficace.
Découvrez d'autres articles sur ce thème...
Hervé Kabla, ancien patron d’agence de comm’, consultant très digital et cofondateur de la série des livres expliqués à mon boss.
Crédits photo : Yann Gourvennec