Bien qu'il y ait quelques mois, je n'ai pas franchi la prochaine étape logique pour essayer Copilot, l'outil de support de codage AI de Github. Cependant, mon intérêt a été suscité la semaine dernière, lorsqu'un de mes collègues a partagé une capture d'écran d'une suite de tests générée par l'IA.
L'invite était raisonnablement simple et les cas de test générés étaient pertinents ; de quoi me donner envie de m'abonner à GC essai gratuit et de contribuer à l'avènement de l'événement singularité.
J'éviterai de détailler ce que Copilot peut ou ne peut pas faire : d'autres m'ont déjà devancé de loin. La partie intéressante pour moi est de savoir comment je peux me réconcilier avec cette nouvelle technologie.
Dans cet article, j'utiliserai également Github Copilot comme référence pour déduire ce qu'une "IA pour le codage" peut faire aujourd'hui, car je pense qu'elle représente l'état de l'art dans le domaine.
De nombreuses questions spontanées viennent à l'esprit lorsque l'on pense à l'IA dans le domaine logiciel.
Est-ce utile? Est-il dangereux? Cela prendra-t-il nos emplois? La chose la plus importante n'est pas de nous enfermer dans un état d'esprit limitant et de laisser nos émotions forger un récit étrange autour de l'IA - que ce soit en tant que néoluddistes ou techno-enthousiastes utopiques.
Au lieu de cela, je trouve d'autres types de questions plus intéressantes et beaucoup plus faciles à répondre : ces questions n'impliquent pas de réponse "oui" ou "non", mais commencent généralement par "quoi", "quand" et "où".
Par exemple, comment puis-je intégrer Copilot dans mon travail quotidien ? Quelles tâches facilite-t-il et quelles compétences personnelles exige-t-il ?
La valeur de l'IA dans notre travail est surtout claire pour les ingénieurs en logiciel. Pourtant, je comprends que des personnes d'autres horizons puissent grossièrement mal évaluer les possibilités, d'autant plus que de nombreux créateurs de contenu ou journalistes aiment attirer les regards en suggérant des scénarios catastrophiques (ou en promettant que le logiciel de construction est désormais accessible à tous).
Oui, il est vrai que les outils basés sur GPT-3 - et tout récemment GPT-4 - peuvent écrire du code, et oui, le code généré compilera souvent et fera ce qu'on attend de lui.
Cependant, cela ne représente pas nécessairement une menace immédiate pour ma sécurité d'emploi, car écrire du code n'est pas vraiment ce que font les ingénieurs logiciels. Permettez-moi de mieux élaborer.
Notre travail ne consiste pas à taper du code dans un éditeur de texte. Nous ne sommes pas des sténographes. Le travail consiste à décider quoi coder. En fait, chaque fois que je conçois un logiciel et que je commence enfin à taper quelque chose dans mon IDE, j'ai déjà en tête à quoi ressemblera le prochain extrait de code.
À ce stade, l'IA ne fait que relier les points, générant instantanément la méthode ou la structure de données que je voulais, moins les fautes de frappe involontaires ou d'autres erreurs évidentes.
Même si l'IA pourrait contribuer à plus de 80 % d'une certaine base de code, il est essentiel de donner l'invite appropriée (les 20 % initiaux) , car elle contient d'énormes informations dont GC a besoin pour fonctionner correctement. Et vous n'obtiendrez pas cette invite initiale sans un ingénieur derrière le clavier.
Je crois qu'une bonne comparaison peut être faite avec les pilotes automatiques d'avion. L'AFCS (Auto-Flight Control System) peut parfaitement effectuer diverses opérations de vol : ajuster la trajectoire de vol, approcher d'un aéroport ou même atterrir.
Je ne rêverais toujours pas de sauter sur un vol commercial sans aucune surveillance humaine.
Le fait que l'ordinateur soit capable de contrôler l'avion ne signifie pas que les pilotes restent inactifs sur le pont d'envol.
Il reste encore beaucoup à faire : vérifier la météo à venir, communiquer avec le contrôle aérien, planifier des itinéraires alternatifs et, surtout, superviser le pilote automatique et prendre les rênes si besoin est.
Par conséquent, nous pouvons voir comment les pilotes sont toujours ceux qui pilotent l'avion.
De la même manière, l'IA ne développe pas de logiciels, ce sont les ingénieurs qui le font . L'IA est un outil. Les ingénieurs sont formés pour rationaliser leur flux de travail en utilisant l'automatisation, mais ils surveilleront toujours ce que fait leur outil. S'il ne se comporte pas comme prévu, les ingénieurs interviendront et redresseront la situation.
C'est l'état d'esprit que j'ai lorsque j'utilise Copilot : je lui déléguerai volontiers les tâches subalternes mais, en attendant, je serai vigilant quant au rendement qu'il produira.
Comme vous le savez peut-être, l'algorithme ML sous-jacent de Copilot s'appelle GPT-3 et fait des prédictions de la séquence la plus probable de jetons à générer. Bien que le code généré soit généralement correct d'un point de vue syntaxique, les outils n'ont aucune connaissance des spécifications et de la validité du code produit.
Une contre-mesure possible aide GC avec une ingénierie rapide : par exemple, écrire un commentaire indiquant ce que fait le prochain extrait est une technique puissante pour aider l'IA.
Mieux encore, parfois même le commentaire peut être généré automatiquement après avoir tapé les premiers mots.
Cependant, il faut dire que, même dans les conditions les plus idéales, Copilot n'offre pas toujours une suggestion utile, ou aucune suggestion du tout si c'est le cas. Bien que GC soit assez étonnant, je pense qu'il est encore très imparfait en tant qu'outil de codage.
Pour l'instant, je n'ai pas décidé d'intégrer pleinement Copilot dans mon ensemble d'outils ou non : la nature aléatoire de ses suggestions peut parfois être un obstacle.
Dans tous les cas, je suggérerais à tout le monde de se mouiller les pieds et d'essayer au moins une fois : considérez-le comme un outil utilitaire comme votre surligneur de syntaxe ou la fonction d'auto-complétion de votre IDE préféré.
Quelle est votre opinion sur Github Copilot ? L'avez-vous intégré à votre travail quotidien ou était-ce une passe difficile pour vous ? Ne soyez pas timide et dites-le moi dans les commentaires !