paint-brush
Mon nouveau développeur junior est un peu nulpar@michaelsalim
1,193 lectures
1,193 lectures

Mon nouveau développeur junior est un peu nul

par Michael Salim6m2023/05/12
Read on Terminal Reader

Trop long; Pour lire

Utiliser ChatGPT pour coder, c'est comme avoir un développeur junior sous vos ordres. Il peut y obtenir le code à 80%, mais vous devrez revoir pratiquement chaque ligne. Entre l'interface utilisateur et l'interaction, c'est une corvée à utiliser. Le succès le plus répété que j'ai eu était 3 fois.
featured image - Mon nouveau développeur junior est un peu nul
Michael Salim HackerNoon profile picture
0-item

Ce développeur est ChatGPT, et j'ai une relation amour-haine avec lui.


Il y a tellement d'articles sur l'IA de nos jours, alors je vais essayer de garder celui-ci court.

TL ; RD :

Utiliser ChatGPT pour coder, c'est comme avoir un développeur junior sous vos ordres. Ils peuvent y obtenir le code à 80 %, mais vous devrez revoir pratiquement chaque ligne.

Le scénario

Je dois admettre qu'il existe de nombreuses façons d'utiliser ChatGPT pour aider à écrire du code. C'est probablement mieux pour certains d'entre eux et pire pour d'autres.


Par exemple, j'ai entendu beaucoup de gens l'utiliser comme moteur de recherche. Personnellement, je trouve cela un peu discutable. Il n'est pas si difficile de trouver de la documentation ou même des réponses grâce à une recherche. J'utilise Kagi qui aide à réduire les peluches.


Au contraire, en utilisant ChatGPT, comment êtes-vous censé savoir si la réponse est vraie ?


De l'autre côté du spectre, il y a beaucoup de gens qui l'utilisent comme une auto-complétion glorifiée. Quelque chose comme Github Copilot . Je vois que c'est utile.


Le scénario que j'ai choisi est :

Conversion de mon code de chakra-ui en tailwindcss .


Pourquoi?


  • Il existe de nombreuses ressources pour les deux technologies, en particulier Tailwind (et bien sûr, HTML). Il devrait avoir beaucoup de données à partir desquelles travailler.


  • Il est très possible de créer un programme pour ce faire. Bien qu'il puisse y avoir de nombreux cas extrêmes, la fonctionnalité elle-même est simple. chakra-ui est inspiré par le vent arrière, il hérite donc d'un tas de choses qui peuvent être facilement transférées.


  • C'est quelque chose que je dois faire. C'est donc un cas d'utilisation réel que quelqu'un d'autre pourrait rencontrer.

L'ingénierie rapide est une corvée

En regardant autour du terrain, il semblait que bien inciter était la différence entre obtenir de bons résultats ou des résultats médiocres. Je ne suis pas le meilleur dans ce domaine, mais j'ai fait quelques recherches et j'ai fait de mon mieux.


Je me suis assuré d'utiliser plusieurs invites pour le mettre dans un bon état. Ne coller mon code que lorsqu'il semble qu'il sait qu'il ne doit convertir que mon code.


Honnêtement, cette partie pourrait être améliorée. Entre l'interface utilisateur et l'interaction, c'est une corvée à utiliser :


  • Cela peut prendre un certain temps pour qu'il atteigne l'état souhaité

    Entre le fait que je réfléchisse à ce qu'il faut écrire, puis que j'attende qu'il réponde et qu'il finisse d'écrire, cela devient assez ennuyeux de faire ce travail.


  • C'est incohérent

    Cela n'aide pas que vous ne puissiez pas toujours réutiliser les mêmes invites. ChatGPT a un certain caractère aléatoire, j'ai donc dû modifier l'invite à chaque fois. Copier-coller une invite qui fonctionnait auparavant n'a pas aidé.


  • Il est très facile de sortir de l'état souhaité

    Ce qui précède est bien si c'est une chose unique. Mais j'ai trouvé qu'il est très facile pour l'IA de tout oublier après la première conversion de code. Le succès le plus répété que j'ai eu était 3 fois je crois. Au-delà de cela, il a renvoyé des choses complètement indépendantes, comme expliquer ce que fait mon code.


  • Le jeton est un facteur assez limitant

    Il n'y a qu'une quantité de code qu'il peut produire en raison de sa limite de jetons. Vous pouvez vérifier le tokenizer ici pour voir comment il calcule les jetons . Ce n'est pas très convivial pour le code. Vous trouverez ci-dessous un exemple de l'une de ses sorties. Chaque couleur différente représente un jeton.


    Code tokenisé

    Pour cette raison, je dois diviser la conversion en plusieurs étapes. Sinon, la génération s'arrêtera au milieu. Lui dire de continuer ne fonctionne pas la plupart du temps. Combiné avec les points ci-dessus, cela devient rapidement une corvée à faire.


    ChatGPT lançant une erreur lorsqu'on lui a demandé de terminer sa génération de code


Dans l'ensemble, j'ai l'impression que je n'ai pas envie d'écrire en anglais. Si je dois déjà écrire quelque chose, je préfère écrire directement du code qui fonctionne.


Je peux voir que l'ingénierie rapide est une compétence clé à avoir à l'avenir. Semblable à la façon dont savoir comment rechercher est une compétence clé dans le monde d'aujourd'hui.

La sortie n'est pas trop mauvaise

Malgré tout le travail qu'il a fallu, ChatGPT a produit un code assez impressionnant. Voici une comparaison entre l'original et le résultat :


Comme vous pouvez le voir, il a bien fait le travail.


Le bon

  • La structure est assez bien amenée

    Mis à part les détails, la structure HTML est assez similaire à l'original. Les espacements sont désactivés, mais la disposition générale demeure.


  • Le contenu du texte ne change pas

    Le contenu lui-même a été bien géré. Même si j'ai dû tous les revérifier, rien n'a été changé. La seule exception est ceux dérivés de JS.


Le mauvais

  • Il avait des classes aléatoires

    Il y a plein de classes qui ne font rien. Certaines ont été modifiées et d'autres étaient des classes de vent arrière invalides.


  • Il y a plein de petites différences

    L'interface utilisateur donnait l'impression qu'une bibliothèque venait d'être mise à niveau et que quelqu'un avait oublié de migrer le code. Dans ce cas, c'est parce que ChatGPT a modifié de manière aléatoire les valeurs des classes. Par exemple, un padding de 3 à 4, ou changer le font-weight de gras à normal. Les détails étaient tous faux.


  • ça marche pas la moitié du temps

    Les captures d'écran ci-dessus sont celles que je peux directement comparer. En réalité, les résultats étaient soit incomplets, soit juste assez erronés pour que j'aie dû apporter de nombreuses modifications pour que cela fonctionne. Et à cause de cela, je ne peux pas le comparer côte à côte. Je ne peux tout simplement rien comparer puisque le code ne s'exécute pas.

C'est comme revoir les relations publiques au lieu d'écrire du code

Ce qui est génial, c'est que j'ai quelque chose à partir de quoi travailler. Heureusement, le travail lui-même est très simple. Il est facile de repérer les erreurs. La correspondance entre les classes de chakra-ui et tailwind est presque univoque. C'est seulement fastidieux car la syntaxe est différente.


Mais cette approche s'apparente davantage à l'examen des PR. J'ai dû parcourir tout le code pour m'assurer que tout est fait correctement.


Ça a l'air bien à première vue. Mais il y a beaucoup de pièges une fois que vous travaillez avec et faites très attention. Cela apporte ce faux sentiment de sécurité qui m'a un peu frustré une fois que j'ai découvert tous les défauts.


Une grande partie est du code qui est interpolé à partir d'autres bases de code. Ça n'a pas l'air terrible, mais ce n'est pas ce que je voulais.


Il y a même des changements alarmants comme changer le cap de h2 à h1. Je ne peux que supposer qu'il l'a fait à cause du contenu.


C'était comme si un développeur junior avait assemblé quelque chose et n'avait pas testé son code . Et maintenant, je dois l'examiner et le réparer sans pouvoir leur dire de le réparer eux-mêmes.


Et c'est horrible. J'ai déjà ma dose d'examen des relations publiques au travail. Maintenant je dois le faire aussi pour mes propres projets ? Non merci!

Avenir plein d'espoir

Bien que je ne pense pas que ce soit encore proche, je pense que l'IA sera utile à un moment donné pour le développement à l'avenir. Si la réponse est LLMs, qui sait?


Les limites de jetons augmentent constamment

J'ai assez tardé à terminer cet article. Pendant ce temps, il y a beaucoup d'annonces d'augmentation de la limite de jetons. Bien que je ne sache pas si c'est public, payant ou autre, c'est formidable à voir.


Inviter UX devrait devenir plus facile avec le temps

Avec les plugins ChatGPT et une meilleure intégration, des problèmes tels que la mémorisation de l'état et la cohérence devraient être améliorés. Espérons que cela réduira l'effort nécessaire pour obtenir une sortie utile de ChatGPT.


En attendant, j'ai terminé l'autre moitié de la migration manuellement. C'était plus rapide ? Eh bien, qui sait. C'était à peu près la même chose. Mais l'écrire manuellement me semblait beaucoup mieux.