Les résultats des dernières expériences, rien que pour toi :)
J'ai donc implémenté un algo en 4 heures hors pauses. Sur ces 4 heures j'ai passé 1 h 30 sur l'implémentation initiale qui comprend l'algo et l'ajout d'un paramètre pour activer l'algo. Le paramètre n'est pas une partie difficile mais ça avait un impact sur l'existant et demandait d'aller modifier un paquet de fichiers pour le prendre en compte. Les 2 h 30 restantes sont passées à chercher et corriger deux problèmes à côté desquels j'étais passé dans l'implémentation initiale, dont un problème bien compliqué qui m'a amené à faire intervenir un collègue (qui ne comprenais pas plus que moi mais qui a apporté le soutien dont j'avais besoin pour trouver la solution).
J'ai ensuite lancé une session avec Claude en partant du commit précédant mes modifs, dans un conteneur avec toutafon, IS_SANDBOX=1, et --dangerously-skip-permissions. Je lui ai donné un court document décrivant comment compiler le projet et comment le tester et après quelques étapes de chauffe (« lit le document. », « compile le projet », « lance tel test »), je lui ai demandé de trouver telle fonction à modifier et je lui ai décrit la tâche. Il était hyper motivé, il a sorti un très juste résumé des structures de données en jeu et comment elles étaient connectées.
Il m'a ensuite posé quelques questions pour éclaircissements. Les questions montraient que s'il avait compris les connections entre les structures au niveau code, il n'avait par contre pas compris la sémantique. Soit, je réponds sincèrement à ses questions.
Et hop il se met à patcher le code. Je n'ai même pas eu le temps de lui parler du paramètre de config ! En 35 minutes après le début de la session il avait implémenté l'algo d'une manière excellente. J'étais bluffé, son algo ressemblait comme deux gouttes d'eau au mien (comme quoi il a appris des meilleurs :)). Il est allé jusqu'à utiliser la même manière relativement particulière d'indexer conditionnellement une table dans une boucle (j'avais mis une indirection : à l'itération i je traitais data[index[i]] ce qui permettait de sortir un if de la boucle et me semblait plus clair). C'était même un poil mieux parce qu'il avait en plus factorisé 3 lignes que j'avais dupliquées (j'étais simplement passé à côté de la similarité).
Je me demande même s'il a pu avoir accès à mon code, mais je ne vois pas comment. Claude est dans un conteneur et travaille dans un dossier certes versionné sous Git mais sans l'historique ni l'URL de notre dépôt. Éventuellement il se peut que le code soit sur les serveurs d'Anthropic puisque des collègues travaillent avec Claude sur le dépôt, mais j'en doute à cause de la suite.
La suite est que son code qui ressemble énormément au mien est tellement semblable qu'il a les mêmes bugs. Les deux problèmes qui m'ont pris la tête sont aussi présents !
Il est donc parti dans la recherche de corrections pour ces problèmes, et là, c'est le drame. Il a été incapable de corriger. Je l'ai fait bosser 10 h en interaction, sans lui donner la solution évidemment (sinon ça n'aurait pas été juste). Ses analyses étaient très mauvaises, toutes ses pistes allaient dans la mauvaise direction. Il est passé d'un bug côté encodeur à un crash côté décodeur, puis il s'est retrouvé à crasher l'encodeur aussi avant de tout annuler. Plein d'aller-retours à essayer des trucs, rater, revenir en arrière, ré-essayer des trucs qui n'avaient pas marché.
Voilà le bilan. 35 minutes pour coder (un peu moins) que ce que j'ai codé en 1 h 30, puis 9 h 30 à ne pas réussir à corriger deux bugs que j'ai corrigé en 2 h 30.
[^] # Re: Pendant ce temps
Posté par Julien Jorge (site web personnel) . En réponse au journal De développeur à orchestrateur, comment l'IA a changé ma vie. Évalué à 8.
Les résultats des dernières expériences, rien que pour toi :)
J'ai donc implémenté un algo en 4 heures hors pauses. Sur ces 4 heures j'ai passé 1 h 30 sur l'implémentation initiale qui comprend l'algo et l'ajout d'un paramètre pour activer l'algo. Le paramètre n'est pas une partie difficile mais ça avait un impact sur l'existant et demandait d'aller modifier un paquet de fichiers pour le prendre en compte. Les 2 h 30 restantes sont passées à chercher et corriger deux problèmes à côté desquels j'étais passé dans l'implémentation initiale, dont un problème bien compliqué qui m'a amené à faire intervenir un collègue (qui ne comprenais pas plus que moi mais qui a apporté le soutien dont j'avais besoin pour trouver la solution).
J'ai ensuite lancé une session avec Claude en partant du commit précédant mes modifs, dans un conteneur avec toutafon, IS_SANDBOX=1, et --dangerously-skip-permissions. Je lui ai donné un court document décrivant comment compiler le projet et comment le tester et après quelques étapes de chauffe (« lit le document. », « compile le projet », « lance tel test »), je lui ai demandé de trouver telle fonction à modifier et je lui ai décrit la tâche. Il était hyper motivé, il a sorti un très juste résumé des structures de données en jeu et comment elles étaient connectées.
Il m'a ensuite posé quelques questions pour éclaircissements. Les questions montraient que s'il avait compris les connections entre les structures au niveau code, il n'avait par contre pas compris la sémantique. Soit, je réponds sincèrement à ses questions.
Et hop il se met à patcher le code. Je n'ai même pas eu le temps de lui parler du paramètre de config ! En 35 minutes après le début de la session il avait implémenté l'algo d'une manière excellente. J'étais bluffé, son algo ressemblait comme deux gouttes d'eau au mien (comme quoi il a appris des meilleurs :)). Il est allé jusqu'à utiliser la même manière relativement particulière d'indexer conditionnellement une table dans une boucle (j'avais mis une indirection : à l'itération
ije traitaisdata[index[i]]ce qui permettait de sortir unifde la boucle et me semblait plus clair). C'était même un poil mieux parce qu'il avait en plus factorisé 3 lignes que j'avais dupliquées (j'étais simplement passé à côté de la similarité).Je me demande même s'il a pu avoir accès à mon code, mais je ne vois pas comment. Claude est dans un conteneur et travaille dans un dossier certes versionné sous Git mais sans l'historique ni l'URL de notre dépôt. Éventuellement il se peut que le code soit sur les serveurs d'Anthropic puisque des collègues travaillent avec Claude sur le dépôt, mais j'en doute à cause de la suite.
La suite est que son code qui ressemble énormément au mien est tellement semblable qu'il a les mêmes bugs. Les deux problèmes qui m'ont pris la tête sont aussi présents !
Il est donc parti dans la recherche de corrections pour ces problèmes, et là, c'est le drame. Il a été incapable de corriger. Je l'ai fait bosser 10 h en interaction, sans lui donner la solution évidemment (sinon ça n'aurait pas été juste). Ses analyses étaient très mauvaises, toutes ses pistes allaient dans la mauvaise direction. Il est passé d'un bug côté encodeur à un crash côté décodeur, puis il s'est retrouvé à crasher l'encodeur aussi avant de tout annuler. Plein d'aller-retours à essayer des trucs, rater, revenir en arrière, ré-essayer des trucs qui n'avaient pas marché.
Voilà le bilan. 35 minutes pour coder (un peu moins) que ce que j'ai codé en 1 h 30, puis 9 h 30 à ne pas réussir à corriger deux bugs que j'ai corrigé en 2 h 30.