C’est lors d’un récent hackathon pour l’association Meridie dont je suis membre, hackathon qui s’est tenu ce vendredi 1er septembre à Maisons-Laffite à coté de Paris, que je me suis véritablement amusé à coder avec ChatGPT. J’insiste sur le terme « avec », c’est-à-dire pas en tant qu’outil subordonné, voire rédigeant l’ensemble du code, mais bel et bien comme partenaire car c’est comme tel qu’il me semble que l’on en tire les principaux bienfaits.

L’objectif de la journée était de travailler sur une application R Shiny permettant d’évaluer le salaire des enseignants dans divers pays d’Afrique, outil particulièrement intéressant pour les syndicalistes, surtout au vu des différentes situations politiques des pays visés, certaines étant actuellement particulièrement complexes voire désastreuses. Cet outil permet en effet d’asseoir les revendications syndicales sur des bases statistiques. Je ne rentrerai pas dans le détail, n’étant pas spécialiste de ces questions. Je laisse ceci à Pierre Varly, président de Meridie et consultant en éducation, qui orchestrait la journée.

R est un langage dédié aux statistiques et au traitement de données tandis que R Shiny est un complément bien pratique permettant de créer des applications web à partir de code R. Le genre d’outils que j’aurais aimé avoir durant ma thèse mais il était encore un peu tôt.

L’application est en version beta et sera disponible sous peu mais il reste quelques petites choses à modifier avant de pouvoir la publier. Pour ma part, cela m’a permis de mettre les mains dans le cambouis et d’imaginer de futurs projets, dont celui de reprendre une partie des données de ma thèse pour les publier de manière efficace et interactive, l’intégralité des données étant au format XML.

Mais revenons à ChatGPT ! Si celui-ci sait faire beaucoup de choses, il ne fait pas encore le café et surtout ne code pas entièrement une application. C’est pour cette raison qu’au fil de la journée j’ai imaginé et testé plusieurs comportements possibles et qui me furent véritablement utiles.

Inutile de lui demander de coder une application entière si l’on veut garder une approche constructive et pédagogique, permettant d’apprendre et non de simplement recopier des bouts de code que l’on tentera en vain de coller ensemble. D’ailleurs ChatGPT me mettait en garde lors de certaines demandes : « N’oubliez pas d’adapter ce code à vos besoins spécifiques en fonction de la structure de votre application Shiny et des traitements que vous souhaitez appliquer aux données lues. »

C’est pourquoi je l’ai considéré comme un camarade « avec » qui je collabore plutôt qu’un logiciel faisant à ma place, mettant ainsi de mon coté à mal les prédictions catastrophistes concernant l’Intelligence Artificielle.

Synthétiser, expliquer

Il n’est pas toujours facile de reprendre le code d’un.e autre et de comprendre à quoi servent les différents éléments, en particulier les variables, comment s’articulent les commandes et les différentes fonctions. Lorsque j’avais un peu de mal à voir où le précédent développeur voulait en venir, je soumettais le code à ChatGPT qui m’en faisait un bref résumé fort utile.

Obtenir des pistes

Dans quelle direction partir ? Comment gérer tel ou tel élément ? Chaque fois que j’étais à court d’inspiration, je n’hésitais pas à interroger mon assistant ou plutôt partenaire virtuel qui me proposait des pistes que je testais dans mon code. Cela permettait la plupart du temps de confirmer ou infirmer mes hypothèses avant de tester directement. Un gain de temps appréciable quand on sait que certains changements peuvent parfois affecter l’ensemble du code.

Chercher des alternatives

Il n’existe bien souvent pas qu’une seule manière de coder un algorithme et les habitudes nous poussent souvent à utiliser les mêmes méthodes. J’ai donc régulièrement exposé mon code à ChatGPT et demandé ce qu’il en pensait, quelles étaient les alternatives possibles.

Au delà des pistes offertes par ChatGPT, cela me permettait ainsi de développer un panel de solutions dont certaines que je mettais en commentaires afin de pouvoir comparer facilement, l’objectif étant cette fois de gagner en lisibilité, en rapidité et en efficacité.

Relire le code

Je ne saurais compter le nombre d’heures perdues depuis que je programme à la recherche d’une virgule en plus ou en moins, d’une parenthèse mal fermée, d’un crochet à l’envers ou tout simplement oublié qui, quoi qu’il arrive, fait planter irrémédiablement le programme. Bien souvent en effet, cette simple faute de frappe crée des erreurs en cascade et l’origine en est parfois difficilement repérable.

Je m’étais lancé ce vendredi dans la relecture d’une bonne centaine de lignes de code. En vain… Qui plus est le message d’erreur était plus que laconique m’indiquant simplement que l’exécution du programme s’était arrêtée, ce qui (ne) m’aidait franchement (pas). 😉 J’ai fini par copier/coller le code incriminé dans ChatGPT qui m’a aussitôt indiqué le numéro de la ligne où se situait le problème. Un gain de temps et d’énergie appréciable…

Conclusion

Demander à ChatGPT de faire à ma place n’était pas mon objectif mais s’en servir comme d’un partenaire, exactement comme si j’échangeais avec mon voisin, ma voisine, me semble beaucoup plus utile car il a dans ce cas véritablement le rôle d’un assistant qui aide à comprendre, pas juste à réaliser.

Je n’étais pas le seul à travailler de cette manière ce vendredi, ce qui ne nous empêchait pas d’une part de puiser dans nos connaissances préalables, ChatGPT ne pouvant tout faire, d’autre part d’échanger entre nous pour nous faire part de nos avancées et des astuces découvertes.

Laisser un commentaire