Accéder au contenu
  • Développement
  • IA

Utiliser GitHub Copilot et l’IA générative pour accélérer le développement logiciel

18 juillet — 2024

Rémi Prévost
Associé, Directeur ⏤ Développement logiciel

GitHub Copilot est un outil d’IA générative introduit par GitHub il y a quelques années sous la forme d’un « assistant intelligent » aux développeur·euse·s pour les rendre plus efficient·e·s. Chez Mirego, nous l’utilisons dans nos projets open-source depuis le technical preview de 2021.

L’arrivée de GitHub Copilot Business en 2023 a été l’étincelle qui a permis de faire exploser l’impact de GitHub Copilot puisque ses fonctionnalités de confidentialité et sécurité ont rendu possible son utilisation dans les projets de nos clients.

Cet article explore les différentes manières avec lesquelles GitHub Copilot peut être utilisé et démontre comment il est maintenant un outil incontournable pour les équipes de développement qui veulent maximiser leur efficience.

Les chiffres sont plutôt impressionnants. Une étude publiée en 2023 par McKinsey chiffre entre 20 % et 50 % l’impact sur la productivité des développeur·euse·s utilisant des outils d’IA générative. Une autre étude réalisée par GitHub montre une augmentation de la productivité de 55 % lorsque GitHub Copilot est utilisé pour réaliser une tâche.

Selon le sondage annuel de la communauté Stack Overflow, la vaste majorité des développeur·euse·s répondant·e·s s’attend à ce que son utilisation de l’IA dans le cadre de son travail au cours de la prochaine année soit différente ou très différente de celle actuelle.

Le potentiel et la croissance de qualité de l’IA générative laisse croire que cette augmentation en efficience ne fera que se multiplier dans les années à venir et qu’il est donc crucial, comme nous l’avons fait chez Mirego, de s’approprier et de maîtriser ces technologies dès maintenant.



L’efficience en tant que développeur·euse

Avant de parler de cas concrets d’utilisation de GitHub Copilot qui améliore notre efficience, il est important de définir cette notion d’efficience.

En terme de développement logiciel, il est facile de penser que l’efficience peut être atteinte par le plus de lignes de code écrites en le moins de temps possible. Un minimum d’efforts ou de ressources pour accomplir une tâche. Bref, un synonyme de productivité.

Toutefois, l’efficience dont nous faisons référence se décrit plutôt comme une façon de « mettre des efforts aux bons endroits », pas juste « faire le minimum d’efforts ». Être plus efficient sur des tâches qu’il est possible d’optimiser permet d’améliorer la qualité de ce qui s’optimise moins bien.

Les outils d’IA générative comme GitHub Copilot permettent de gagner des précieuses minutes voire même des heures chaque jour, en ne faisant aucun sacrifice sur la qualité de ce que ce qui est produit. Cette économie de temps se traduit alors en deux éléments qui avantagent directement le produit : réduction du budget nécessaire au projet ou meilleure utilisation du budget pour créer des produits numériques encore plus exceptionnels.



Efficience en implémentation de code

Il s’agit du cas typique et le plus simple de GitHub Copilot. L’outil se base sur ce qu’il possède comme contexte du fichier courant et position du curseur pour tenter de proposer la meilleure suite possible.

Puisqu’il est propulsé par un LLM, il est possible de le guider de façon intelligente pour ne pas être à la merci du peu de contexte sur lequel il peut se baser. Par exemple, écrire un bref commentaire qui décrit ce qu’on veut faire (au lieu d’un simple nom de fonction) va rendre l’implémentation suggérée beaucoup plus précise.



Efficience en compréhension de code

En tant que développeur·euse, le temps passé à lire du code est largement supérieur au temps passé à écrire du code. Écrire du code optimisé pour la lecture (et donc la maintenabilité) est primordial.

Devoir composer avec du legacy code est de plus en plus monnaie courante pour beaucoup d’équipes de développement; GitHub Copilot peut aider à le décortiquer et le comprendre pour pouvoir y développer de l’ownership.

Évidemment, il ne pourra probablement pas expliquer 100 % de ce qui se passe, mais il sera assurément capable de proposer des pistes ou de poser les questions, comme le ferait un rubber duck intelligent.



Efficience en débogage de code

Un peu comme pour expliquer du code, il peut être difficile pour GitHub Copilot de comprendre tout le contexte nécessaire pour diagnostiquer un problème quelconque.

En s’efforçant de lui fournir le plus de pistes possibles (eg. un message d’erreur, une stacktrace complète ou des références de documentation), sa performance s’améliore.



Efficience en écriture de tests

Les tests automatisés sont un excellent moyen de s’assurer de la maintenabilité de notre code. Leur utilisation est tout aussi importante.

Dans le cas où du code fonctionne mais qu’il n’y a pas de tests pour en valider le comportement, GitHub Copilot aide à verrouiller ce bon fonctionnement en rédigeant des tests. En démarrant avec des cas de tests simples, il est facilement capable de les extrapoler en code exécutable.



Efficience en refactor de code

Évidemment, GitHub Copilot est capable de prendre du code et de le transformer pour l’améliorer et adopter de meilleures pratiques. Il peut être utilisé pour optimiser le code pour qu’il réponde aux standards d’accessibilité et de sécurité les plus récents.

Comme pour toute fonctionnalité de refactoring (impliquant de l’IA générative ou non), un filet de sûreté est requis pour s’assurer de ne pas briser le fonctionnement du produit — par exemple, une bonne série de tests automatisés et manuels.



L’exemple de La Ruche

Pour la refonte du site Web de La Ruche, une plateforme de sociofinancement, un des objectifs principaux était de reprendre le code existant, se l’approprier et de le faire évoluer rapidement.

L’utilisation de GitHub Copilot par notre équipe a grandement contribué à l’atteinte de cet objectif. Au-delà de son utilisation de base, nous avons poussé ses capacités au maximum pour nous permettre de :


  • Faire évoluer la plateforme plus vite en développant un ownership sur le code plus rapidement
  • Limiter le nombre d’enjeux techniques en faisant remonter à la surface des effets de bord potentiels dans le développement de nouvelles fonctionnalités
  • Ultimement, pouvoir passer plus de temps sur ce qui compte vraiment : les fonctionnalités du produit



Un outil d’avenir

Chez Mirego, nous croyons que les organisations qui sauront le mieux raffiner leur utilisation de ces outils d’IA générative et les déployer dans l’ensemble de leurs processus de développement seront celles qui se démarqueront dans le futur.

L’utilisation avancée de GitHub Copilot permet d’augmenter continuellement la valeur apportée dans un projet, dans plusieurs facettes liées au développement; autant au niveau de l’écriture de code que de la maintenance à long terme de celui-ci.

00:00
00:00

Switching to English