L'IA Github Copilot va-t-elle changer notre approche au code ?

le 26/04/2022 par Zakaria Rachedi
Tags: Data & AI, Data Science

Le but de cet article est de vous partager mon expérience de ce service, comment en tant que développeur je l’ai perçu et ce qu’il m’apporte. Je ne vais pas m’attarder sur les éléments profondément techniques de l'implémentation du dit service.

Qu’est-ce que Github Copilot ?

Github Copilot est la création de la société du même nom visant à améliorer le quotidien des développeurs. Le but ? Fournir un compagnon de code pour accélérer les développements. Tout comme le ferait un co-programmeur en pair programming, Github Copilot, va suggérer plusieurs manières de coder un segment de code.

Comment fonctionne Github Copilot ?

Pour être capable de guider les développeurs, Github Copilot se base sur du machine learning, apprenant des répertoires de la plateforme github elle-même. Ainsi il se perfectionne et devient de plus en plus cohérent dans ses suggestions notamment grâce aux feedbacks que nous remontons sur la qualité de la suggestion. Que ce soit du Javascript ou du Python, le service permet de reçevoir des suggestions peu importe le langage de programmation.

Durant mon utilisation, j’ai souvent eu des suggestions pertinentes avant même d’avoir tapé plus de 1 ou 2 caractères.

Quels sont les avantages de Github Copilot ?

Github Copilot, durant mon utilisation, m'a fait gagner pas mal de temps sur le prototypage et le boilerplate. Des éléments souvent fastidieux à réécrire pour définir une classe ou importer des services. Il m’a permis de me concentrer sur la partie créative de mon travail et de développer plus rapidement mes idées. Je ne vous cache pas que le confort qu’il apporte quelque soit l’IDE utilisé a eu impact positif sur mon moral de développeur.

Dans mon cas et dans le cadre de cette expérimentation, j’ai développé une petite app de listing en Javascript (utilisant le framework React Native de la société Meta).

Quelles sont les limites de Github Copilot ?

La technologie étant assez jeune (encore en bêta à l’heure ou j’écris ces lignes), il en va de soit qu’elle n’est pas parfaite. En effet le service souffre de suggestion parfois maladroite, de manque d’apprentissage basé sur “notre” code et de problèmes de cohérence.

En effet, si il est simple de construire un boilerplate pour accélérer le développement, il en est autre chose de la suggestion pure durant les phases d’écriture de code un peu plus complexe. Le service ne prend en compte que le code du fichier en cours d’édition et non celui de l’application entière pour nous faire ses suggestions. Cela pose les problèmes suivant:

  • Cohérence par rapport au reste de l’application
  • Code ne fonctionnant pas en l’état (en appliquant juste la suggestion)
  • Aucun apprentissage de notre “code style”
  • Éthique : suggestions provenant du code, certes open source de github, mais pas forcément utilisable à des fin commerciales selon les licences de chaque repository.
  • Privacy : notre code est envoyé au serveur de télémétrie github pour nous proposer une suggestion.

J’aimerais évoquer avec vous également un problème d’une autre nature, la dépendance. Oui Github Copilot peut amener le développeur à se reposer trop (?) sur lui, créant une diminution de la productivité aussitôt le service arrêté. Cela n’ira pas en s’améliorant car Github Copilot avec les futures mise-à-jour sera encore plus performant en prenant en compte désormais notre code à l’échelle de l’application.

Tout ceci peut résulter à une perte de compétence sur le long terme du développeur. Son utilisation n’est pour moi pas un problème tant que l’on garde le contrôle et que ce ne soit pas le service qui nous contrôle.

Doit-on utiliser (aujourd’hui) Github Copilot ?

De mon expérience personnelle suite à ces tests, je dirais que non. Le service est clairement très jeune et pas encore adapté à une utilisation pleine sur des sujets importants destinés aux clients. Le manque de visibilité sur l’avenir de la technologie peut également être inquiétant tant qu'on n'a pas encore posé de contours dessus.

Alternative

Moins connu, Tabnine ou Kite plus respectueux de la propriété intellectuelle et de la vie privée, sont de bonnes alternatives à Github Copilot. Le serveur de scan et de suggestion du code se lance en local et cela évite de remonter notre code sur les serveurs distants de ces sociétés.

Ces solutions sont néanmoins encore jeunes, il est donc bon de prendre en compte ce fait avant de se lancer corps et âme avec votre partenaire de pair programming virtuel.

Conclusion

Au-delà de ce qu’il apporte, c’est surtout l’avenir et l’espoir qu’offre une telle technologie qui font réfléchir sur la programmation de demain. Nous sommes aujourd’hui aux commandes et programmons nos applications à la main, mais en sera-il toujours le cas dans 10, 20 ans ? C’est tous ces sujets qu’une telle technologie soulève.

Je reste néanmoins fasciné par la prouesse technologique de ce service et son avenir dépendra de ce que nous développeurs en feront !

Qu’est-ce que Github Copilot ?

Github Copilot est la création de la société du même nom visant à améliorer le quotidien des développeurs. Le but ? Fournir un compagnon de code pour accélérer les développements. Tout comme le ferait un co-programmeur en pair programming (def), Github Copilot, va suggérer plusieurs manières de coder un segment de code.

Comment fonctionne Github Copilot ?

Pour être capable de guider les développeurs, Github Copilot se base sur du machine learning et de l’intelligence artificielle, apprenant des repositories de la plateforme github elle-même. Ainsi il se perfectionne et devient de plus en plus cohérent dans ses suggestions notamment grâce aux feedbacks que nous remontons sur la qualité de la suggestion. Que ce soit du Javascript ou du Python, le service permet de reçevoir des suggestions peu importe le langage de programmation.

Durant mon utilisation, j’ai souvent eu des suggestions pertinentes avant même d’avoir tapé plus de 1 ou 2 caractères.

Quels sont les avantages de Github Copilot ?

Github Copilot, durant mon utilisation, m'a fait gagner pas mal de temps sur le prototypage et le boilerplate. Des éléments souvent fastidieux à réécrire pour définir une classe ou importer des services. Il m’a permis de me concentrer sur la partie créative de mon travail et de développer plus rapidement mes idées. Je ne vous cache pas que le confort qu’il apporte quelque soit l’IDE utilisé a eu impact positif sur mon moral de développeur.

Dans mon cas et dans le cadre de cette expérimentation, j’ai développé une petite app de listing en Javascript (utilisant le framework React Native de la société Meta).

Quelles sont les limites de Github Copilot ?

Dépendance et techno trop jeune. Usage limité et erreur car ne se base pas sur notre style de programmation.

La technologie étant assez jeune (encore en bêta à l’heure ou j’écris ces lignes), il en va de soit qu’elle n’est pas parfaite. En effet le service souffre de suggestion parfois maladroite, de manque d’apprentissage basé sur “notre” code et de problèmes de cohérence.

En effet, si il est simple de construire un boilerplate pour accélérer le développement, il en est autre chose de la suggestion pure durant les phases d’écriture de code un peu plus complexe. Le service ne prend en compte que le code du fichier en cours d’édition et non celui de l’application entière pour nous faire ses suggestions. Cela pose les problèmes suivant:

  • Cohérence par rapport au reste de l’application
  • Code ne fonctionnant pas en l’état (en appliquant juste la suggestion)
  • Aucun apprentissage de notre “style de programmation”
  • Éthique : suggestion provenant du code certes open source de github mais pas forcément utilisable à des fin commerciales selon les licences de chaque repository.
  • Privacy : notre code est envoyé au serveur de télémétrie github pour nous proposer une suggestion.

J’aimerais évoquer avec vous également un problème d’une autre nature: la dépendance. Oui Github Copilot peut amener le développeur à se reposer trop (?) sur lui, créant une diminution de la productivité aussitôt le service arrêté. Cela n’ira pas en s’améliorant car Github Copilot avec les futures mise-à-jour sera encore plus performant en prenant en compte désormais notre code à l’échelle de l’application.

Tout ceci peut résulter à une perte de compétence sur le long terme du développeur. Son utilisation n’est pour moi pas un problème tant que l’on garde le contrôle et que ce ne soit pas le service qui nous contrôle.

Doit-on utiliser (aujourd’hui) Github Copilot ?

De mon expérience personnelle suite à ces tests, je dirais que non. Le service est clairement très jeune et pas encore adapté à une utilisation pleine sur des sujets importants destinés aux clients. Le manque de visibilité sur l’avenir de la technologie peut également être inquiétant tant qu'on n'a pas encore posé de contours dessus.

Alternative

Moins connu, Tabnine ou Kite plus respectueux de la propriété intellectuelle et de la vie privée, sont de bonnes alternatives à Github Copilot. Le serveur de scan et de suggestion du code se lance en local et cela évite de remonter notre code sur les serveurs distant de ces sociétés.

Ces solutions sont néanmoins encore jeunes, il est donc bon de prendre en compte ce fait avant de se lancer corps et âme avec votre partenaire de pair programming virtuel.

Conclusion

Au-delà de ce qu’il apporte, c’est surtout l’avenir et l’espoir qu’offre une telle technologie qui font réfléchir sur la programmation de demain. Nous sommes aujourd’hui aux commandes et programmons nos applications à la main, mais en sera-il toujours le cas dans 10, 20 ans ? C’est tous ces sujets qu’une telle technologie soulève.

Je reste néanmoins fasciné par la prouesse technologique de ce service et son avenir dépendra de ce que nous développeurs en feront !