23 points par spilist2 2024-03-09 | 2 commentaires | Partager sur WhatsApp

(En me levant ce matin et en relisant, j’ai vu qu’il y avait des erreurs de mise en forme dans le texte initial, et qu’en plus il était beaucoup trop long, donc je republie une version résumée)

J’ai souvent vu des débutants sur ChatGPT faire 3 erreurs quand ils essaient de résoudre des « problèmes complexes » avec ChatGPT.

  1. Ils s’attendent à ce que ChatGPT donne « la bonne réponse » d’un seul coup
  2. Ils s’attendent à ce que ChatGPT donne la bonne réponse « immédiatement »
  3. Comme cette attente est rarement satisfaite facilement, ils sont déçus, n’utilisent ChatGPT que pour des problèmes simples, l’utilisent seulement de manière passive, ou arrêtent complètement de l’utiliser

Au final, ils passent à côté de nombreuses opportunités de gains de productivité grâce à l’IA.

C’était aussi mon cas il y a encore quelques mois.

  • Le chargement initial de l’app était lent, donc j’ai analysé la taille du bundle et je suis tombé sur un énorme fichier JS. J’ai découvert qu’il était possible de supprimer la majeure partie de ce fichier de 18 500 lignes
  • Au début, j’ai essayé de supprimer le code à la main en le lisant, mais c’était trop ennuyeux et je faisais sans arrêt des erreurs
  • J’ai donc commencé à travailler avec ChatGPT. En avançant, je me suis rendu compte que, comme un débutant, j’attendais moi aussi qu’il me donne « la bonne réponse d’un seul coup »
  • Après en avoir pris conscience, j’ai adopté une « stratégie de collaboration à trois » et j’ai très vite constaté d’énormes progrès

Progression du travail

Fais la refactorisation à ma place

  • Je lui ai donné une fonction, expliqué le résultat souhaité et demandé de la refactoriser → échec. Ça ne compilait même pas
  • Il ne modifiait pas le code en comprenant sa structure, mais en supprimant des lignes au fur et à mesure

Écris le code qui fait la refactorisation

  • Je lui ai demandé non pas de la faire directement, mais de me donner du code JS pour effectuer la refactorisation → échec. Là aussi, il supprimait les lignes une par une
  • En y réfléchissant, je me suis dit que ChatGPT n’avait probablement pas été suffisamment entraîné à ce type de refactorisation de grande ampleur

Écris du code de refactorisation avec un AST

  • Je voulais supprimer non pas ligne par ligne, mais par blocs. Il fallait donc une compréhension syntaxique du code, et je me suis dit qu’utiliser un AST serait pertinent
  • J’ai demandé à ChatGPT de se mettre dans la peau d’un ingénieur ayant de l’expérience en développement ESLint et de coder cela avec un AST ; il m’a alors fourni un excellent boilerplate basé sur babel. Une énorme avancée
  • Comme je n’avais pas d’expérience avec babel, j’ai appris avec ChatGPT tout en ajoutant la logique au fur et à mesure, mais j’ai fini par me heurter à une difficulté. Il était dur de gérer une logique complexe

J’ai essayé comme ça avec un AST. Cette partie ne marche pas bien ; toi, comment tu t’y prendrais ?

  • Je me suis rendu compte, une fois encore, que j’essayais d’obtenir la bonne réponse d’un seul coup, donc j’ai changé de stratégie. Dès que j’ai compris qu’il n’était pas nécessaire de faire un seul traverse, tout est devenu beaucoup plus fluide
  • J’ai avancé rapidement en exécutant d’abord quelque chose de simple, puis en construisant la logique en regardant les résultats
  • Pour les parties qui coinçaient, je demandais à ChatGPT comment implémenter cet objectif précis
  • À la fin, j’ai terminé à l’œil et à la main ce qui était difficile à transformer en règles. À ce moment-là, la quantité de code avait déjà énormément diminué, donc c’était faisable

Résultat

  • Le code est passé de 18 500 lignes à 1 335, et la taille du bundle du chunk principal a diminué d’environ 7,8 %
  • La taille du fichier JS et la quantité de logique nécessaires au chargement initial ont diminué, ce qui a légèrement amélioré la vitesse de chargement initiale
  • J’ai acquis de l’expérience et de la confiance en refactorisant du code legacy long et complexe avec un AST
  • J’ai aussi gagné la conviction qu’on peut résoudre efficacement la plupart des problèmes complexes grâce à une collaboration à trois entre l’IA, le code et l’humain

Un modèle mental pour résoudre efficacement des problèmes complexes avec l’IA

  1. Comprendre ce que l’IA fait bien, ce que le code fait bien et ce que l’humain fait bien.
  2. Analyser le problème à résoudre et distinguer les domaines où l’IA, le code et l’humain excellent.
  3. Aider l’IA à bien produire le premier code, l’exécuter sur de petits cas, l’améliorer avec elle, puis faire soi-même, en cours de route et à la fin, ce qu’il est plus simple pour un humain de faire directement.

2 commentaires

 
agart319 2024-03-12

Très intéressant, merci.

 
moderator 2024-03-09

Le contenu en double a été supprimé.