Ma réflexion sur Copilot...
Published: 2022-08-22 15:59:54

La fin d'été est à nos porte, et après avoir utilisé GitHub Copilot à plein temps pendant un bon moment pour tester la bête, j’ai pensé vous livrer mes réflexions sur ce nouvel outil qui veut, dans une certaines mesure, redéfinir la façon dont nous allons programmer dans le futur. À n’en pas douter, on est ici en présence d’un produit qui a le potentiel d'avoir un impact important sur la vie de plusieurs programmeurs. C’est un produit qui est à la fois utile, maladroit et potentiellement dangereux. Alors sans plus attendre, on est partis!

## Le prix…

Le modèle de tarification de Copilot est ma partie préférée. Est-ce que je suis d’accord avec cette tarification? Non! Est-ce que je pense que cet outil vaut le coût, non. Je sais ici que mon point de vue ne fera pas l’unanimité. Et qu’il risque même de m’apporter des ennemis. Mais laissez-moi expliquer pourquoi je crois que ça ne vaut pas le coût.

S’il est vrai que Copilot fait sauver du temps, je ne crois pas qu’un outil qui se “nourrit” du code des autres devrait être payant. Mais ce débat en est un autre. Mon point principal est que l'outil, souvent, se “nourrit” de code pourris, nous forçant souvent à analyser chaque suggestion qui, au final, ne m’ont pas permis de gagner beaucoup de temps.

Bien sûr, les suggestions fonctionnent la plupart du temps, mais était-il optimiser à ma solution. Très rarement. Ensuite, je ne suis pas sûr que de payer 10$/mois pour un modèle de copier-coller à la stack Overflow valent le prix. Alors pour moi, le modèle de tarification est un gros non.

## Copilot est bruyant!

Si Copilot est proactif, il est un peu trop à mon goût. J’ai trouvé l'outil un peu fatigant à plus d’une reprise.  Celui-ci tentant de s'insérer dans mon code chaque fois que je prenais une pause dans le codage. Parfois, Copilot est magique, finissant sans effort un bloc entier de code. Et parfois, Copilot ne ressemble à rien de plus qu’un imposteur qui tente d’improviser du code pour montrer qu’il peut-être utile.

Règle générale, j’ai trouvé que Github Copilot avait une faible précision dans des sujets qui demande un code optimisé. Ce qui fait que très (trop) souvent, j’ai dû surtaxer ma touche Esc pour annuler les suggestions. Et pour moi, si il y a un domaine ou Copilot devrait réussir, c’est celui-là. Mais Copilot n’y arrive tout simplement pas. Et c’est souvent frustrant.

Ce problème de précision pourrait être résolu avec le temps. Mais d'autres personnes avec qui j’ai travaillé ont vécu des expériences similaires, donc cela ne me semble pas isolé, mais c'est peut-être lié aux types de projets sur lequel nous avons dû travailler. 

## Et si on automatisait les tests ?

Je pensais qu'écrire des tests serait une bonne tâche pour notre Copilot. Je n'aime pas écrire des tests, alors peut-être que Copilot pourrait me rendre la vie plus facile (c’est important de rêver) ? Donc je l’ai laissé faire. Et il l’a fait! Juste pour ça, Bravo!

Mais attention ! Car après avoir regardé le test, je me suis rendu compte qu’il avait oublié des éléments, et qu'il avait rendu le test plus compliqué pour rien. Alors au final, j’ai dû tout de même le refaire à la main parce qu’il y avait, dans l’ensemble plus de problème dans le test que ce à quoi je m’attendais. Et cela m'a un peu frustré. 

Je ne m'attends pas à ce qu'un robot sache tous les changements que j’avais mis dans mon composant et que j’avais déjà configurés dans un wrapper devait retourné une réponse X ou Y, mais… je m’attendais à mieux.

Mais je dois tout de même dire que Copilot a écrit certains tests qui ont parfaitement réussi, même si ce n'était tout simplement pas les meilleurs tests. Mais ça demeure, pour une machine une petite victoire car cela demande quand même beaucoup d’analyse pour réussir à faire des tests qui se valent dans un projet complexe. Et, il faut quand même que je le dise, Copilot semble doué pour générer des tests beaucoup plus rapidement que moi, donc je considère cela comme un succès.

## Copilot est-il mauvais pour notre domaine ?

Il y a beaucoup de peur, d'incertitude et de doute sur le fait que Copilot est un danger pour notre domaine, je ne veux pas écarter les véritables préoccupations, mais voici quelques-unes de mes réflexions sur les préoccupations communes soulevées.

Pour moi, Copilot crée des programmeurs paresseux. Bien sûr, nous sommes tous paresseux . Si une machine peut me rendre plus paresseux, cela semble être positif. 

Mais c’est ici qu’il faut nuancer le terme paresse. Parce que même si la machine vous permet d’être plus paresseux, il vous faudra tout de même être un bon programmeur pour savoir si ce que la machine génère est un bon code.

Et s'il y a un point avec lequel je suis 100% d’accord avec mon affirmation précédente, c’est que Github Copilot a le potentiel de produire efficacement du mauvais code. Et ceci n’a rien de rassurant pour qui que ce soit.

## Copilot change ma position face au code

À force de l’utiliser, je me suis aperçue que la plus grande différence que j’avais vu avec Copilot, était que maintenant, je ne programmais plus, je faisais de la révision de code. Je ne faisais plus de session de code, je faisais de la programmation en binôme avec moi-même. Et tout ceci m’a fait décrocher de Copilot.

Parce qu’au final, mon but est d’écrire du code, pas de lire du code. Notre métier entier repose sur le fait d’écrire du code, pas simplement sur le fait d’approuver des changements… que je n’ai même pas fait!

Mais cette prise de conscience m’a aussi fait voir de bons côtés à cet outil. L'objectif final est de faire fonctionner un logiciel. Et, dans cette optique, Copilot peut me suggérer du code plus rapidement. Code que je n’ai pas à écrire. Céder à cette dynamique crée un changement fondamental dans la programmation…

## Et maintenant, je fais quoi?

Après un été à le tester, j’ai remarqué des changements dans ma façon d'appréhender le code. Maintenant, quand je m'assieds pour écrire un bloc de code, j'imagine ce bloc de code dans ma tête. Ensuite, je commence à taper le plus précisément possible ce que j’ai imaginé et Copilot commence à deviner (ou il essaye très fort!) ce que je tente d’accomplir.

Parfois (souvent), Copilot se trompe mais… quand il arrive à faire ce que j'imaginais dans mon cerveau, c'est merveilleux. Un robot qui lit dans les pensées, c'est incroyable !

Et même si cet article se termine sur une note positive, je n’utiliserai pas Copilot. Trop de choses ont fait en sorte que j’ai été frustré par l’outil pour me dire que j’accepte de payer 100$ par année pour. Mais rien ne dit que je ne changerai pas d’avis dans l’avenir. Et sur ce point, j'ai hâte de voir où s’en va cet avenir.