Guide pour un développement robuste avec l'IA : Cursor et Github Copilot

Guide pour un développement robuste avec l'IA : Cursor et Github Copilot
Gerónimo
Gerónimo
Fractional CTO
9 min read

Les assistants de code IA se sont récemment répandus grâce à la puissance qu’ils offrent pour accélérer le développement logiciel. Cependant, apprendre à les utiliser n’est pas aussi simple qu’écrire un simple prompt. La courbe d’apprentissage pour exploiter pleinement ce qu’ils offrent n’est pas aussi faible qu’on pourrait le penser. Si nous la sous-estimons, nous risquons a) de produire du code de mauvaise qualité avec des erreurs et des failles de sécurité ou b) de faire un usage limité des capacités et d’obtenir moins de bénéfices que ceux disponibles.

Cet article se veut un guide pour les programmeurs qui souhaitent débuter avec les assistants de code IA, ou ceux qui ont déjà commencé mais souhaitent en tirer davantage parti. Bien que nous parlions de Cursor et VSCode Copilot dans le titre, il est en réalité applicable à la plupart des assistants du marché. Nous commencerons par quelques principes que nous considérons comme essentiels pour programmer avec des assistants, puis nous parlerons des pratiques et cas d’utilisation.

Principes pour développer avec des assistants IA

Les assistants étant un outil si puissant, capable de générer de grandes quantités de code pour nous, nous estimons qu’il est essentiel d’être clair sur certains principes qui guident notre utilisation en permanence. L’objectif est de pouvoir produire du code avec eux tout en augmentant le standard de qualité. Nous ne croyons pas aux approches où la vitesse est priorisée et où des aspects importants tels que la qualité et la sécurité du code généré sont négligés.

  • Principe 1 - Revue : Les assistants de code actuels font fréquemment des erreurs, nous devons donc TOUJOURS examiner attentivement le code généré.

  • Principe 2 - Responsabilité : Le code généré par l’IA est notre code à tous égards et nous en sommes les seuls responsables.

  • Principe 3 - Expérimentation : Le même prompt peut fonctionner dans certains cas et pas dans d’autres ; une réponse initiale invalide ne signifie pas que l’IA ne peut pas nous aider. Il est conseillé de réessayer en modifiant le prompt : ajouter du contexte, donner des instructions plus détaillées, etc. Une attitude expérimentale nous aidera à apprendre à en tirer le meilleur parti dans notre contexte particulier.

  • Principe 4 - Contexte : La qualité et la pertinence de la réponse dépendront en grande partie du contexte dont dispose l’assistant. Un contexte adéquat doit contenir le code source nécessaire pour effectuer la modification ainsi que des instructions et des règles qui guident comment elle doit être faite. De plus, dans certaines situations, fournir la documentation du projet peut être nécessaire.

Pratiques d’utilisation recommandées

  • Revoir les meilleures pratiques de développement : Les revues de code, les tests automatiques, l’utilisation de linters, etc. sont plus nécessaires que jamais, car l’incorporation de l’IA dans votre équipe équivaut à élargir l’équipe ; plus vous produisez, plus le risque d’introduire des erreurs ou de la dette technique est élevé.

  • Planifier avant de commencer : Par défaut, les assistants sont configurés pour sauter directement à la solution et vous livrer le code, puis vous l’expliquer. Cependant, lorsque nous voulons effectuer des changements qui nécessitent une certaine complexité, il est conseillé de lui demander d’abord de concevoir l’approche et le plan pour effectuer les changements. Ainsi, nous pouvons examiner l’approche, suggérer des modifications ou la rejeter.

  • Diviser pour régner : Tout comme lorsqu’on aborde une grande tâche ou user story, la décomposer en sous-tâches plus petites est bénéfique. Lorsqu’on utilise un assistant, lui demander d’effectuer de petites étapes nous permet d’avancer avec plus de confiance. Idéalement, demander une petite tâche -> examiner et ajuster le code -> le tester -> répéter la boucle.

  • En cas d’erreur, réessayer avec un autre prompt ou modèle : Comme nous l’avons mentionné, l’IA fait des erreurs. Cependant, si elle donne une réponse incorrecte à un prompt, cela ne signifie pas qu’elle ne peut pas être utilisée dans ce cas. Dans ces situations, il est utile de comprendre d’où vient l’erreur et de réessayer. Exemples :

    • Manque de contexte -> Référencer les fichiers de code source ou le code complet. Générer des documents de documentation par modules pour les fournir à l’IA, par exemple : document avec le modèle de données.

    • Manque de spécification -> Ajouter des instructions détaillant comment nous voulons que les changements soient effectués. Définition de fichiers de règles.

    • Manque de capacité dû à la complexité -> Décomposer en tâches plus petites et plus simples. Utiliser un modèle plus avancé avec du raisonnement. Exemple : Gemini 2.5 pro, Claude 3.7 Sonnet Thinking, o3, …

    • Manque de capacité dû au manque de données -> Par exemple, si nous demandons quelque chose de très niche que le modèle n’a pas “vu” auparavant. Dans ce cas, il vaut mieux ne pas utiliser l’IA et revenir à la méthode traditionnelle.

  • Définir des règles de projet : Cursor et VSCode vous permettent de définir des règles et de les inclure dans vos dépôts pour vous éviter de les écrire à répétition. Ces règles vous permettent d’obtenir de la cohérence et un alignement avec votre contexte, dans les réponses de l’IA. Vous pouvez définir le style de la façon dont vous souhaitez les réponses et le code généré par l’assistant. Par exemple, dans une règle, vous pouvez définir que la bibliothèque Tailwind soit toujours utilisée pour le style Frontend ou le camel case pour le naming.

  • Choisir quand l’utiliser et quand ne pas l’utiliser : Avec la pratique, on apprend pour quelles tâches il est utile d’utiliser l’IA et pour lesquelles c’est contre-productif. En règle générale, si la tâche est complexe ou fortement dépendante de notre contexte, il semble préférable de commencer sans IA et de l’utiliser de manière limitée pour des tâches plus spécifiques et simples. Pour les tâches plus simples et répétitives, l’IA nous fera effectivement gagner beaucoup de temps.

  • Créer un forum pour partager les expériences en interne : Personne mieux que d’autres collègues qui partagent des projets et un contexte pour partager leur expérience et apprendre ce qui fonctionne le mieux. Un canal Slack, un wiki ou un document partagé où les expériences sont enregistrées peut accélérer l’apprentissage collectif et l’identification des meilleures pratiques pour votre contexte spécifique.

Cas d’utilisation

Les assistants IA génératifs intégrés dans l’IDE supportent beaucoup plus de cas d’utilisation que la simple écriture de code. Sur l’image, nous pouvons voir un rapport Stackoverflow sur l’utilisation de l’IA en 2024, où il est évident comment les développeurs utilisent la technologie.

  • Recherche d’informations. Nous permet de poser des questions directement et nous évite de devoir quitter l’IDE pour ouvrir un navigateur et chercher sur Google.

  • Revue de code. Lui demander de vérifier le code pour les erreurs, les problèmes et les risques de sécurité ; un guide de référence peut être fourni pour qu’il sache comment effectuer la revue.

  • Créer des tests. Si nous avons du code sans tests, nous pouvons lui demander de créer des tests unitaires pour nous. Il est recommandé de lui donner une référence comme un autre fichier de test, pour créer des tests cohérents. Il peut aussi être utilisé pour le TDD, où on lui demande de commencer par les tests et nous les utilisons pour concevoir la fonctionnalité.

  • Débogage. Si nous collons la trace d’erreur et fournissons le contexte du code, il peut déboguer et proposer des solutions qui sont souvent correctes. C’est aussi très utile si nous lui demandons d’ajouter des traces et des logs au code pour nous aider à déboguer.

  • Refactoring. Étant donné du code existant, on peut lui demander d’aider à refactoriser en suivant un guide de bonnes pratiques et de style.

  • Comprendre le code legacy. Lui demander d’expliquer, de générer des diagrammes, poser des questions, etc.

  • Documentation. C’est très efficace pour créer une structure et un squelette, nous évitant de partir d’une page blanche. Nous devrons probablement revoir et modifier des choses. Nous pouvons fournir des modèles pour structurer l’information.

  • Brainstorming et planification. Lorsque nous devons aborder un nouveau projet ou une nouvelle tâche et que nous voulons explorer les options, l’assistant peut être sollicité pour aider et suggérer plusieurs façons d’aborder le sujet. Un avantage des LLMs est de générer de nombreuses options, car ils ont été entraînés avec de vastes quantités de données.

  • Spécifications. Si la tâche n’est pas suffisamment spécifiée, l’assistant peut être utilisé pour suggérer une spécification, servant de base pour affiner et obtenir la spécification souhaitée.

  • Évaluer des décisions techniques. Lors du choix entre diverses technologies ou solutions pour un problème, l’IA peut aider en listant les avantages et inconvénients de chacune, et approfondir les points sur lesquels nous voulons prendre une décision plus éclairée.

  • Automatiser des tâches dans l’environnement local. Cela fonctionne très bien pour créer des scripts qui automatisent le travail local.

  • Migration vers d’autres technologies et langages. Par exemple, migrer un projet de Java 8 à Java 24, ou migrer l’ORM que nous utilisons.

  • Automatisation du déploiement et de l’intégration (pipelines CI/CD). Surtout lorsque nous commençons un nouveau projet, cela nous permet de créer des pipelines pour la plateforme que nous avons en très peu de temps.

  • Adapter le code pour le rendre accessible. C’est généralement une tâche un peu fastidieuse mais très nécessaire, qui n’est généralement pas excessivement complexe, ce qui en fait un cas d’utilisation idéal pour l’IA.

  • Analyse de logs et de grands ensembles de données. Surtout lorsque nous travaillons sur l’investigation de problèmes en production, l’IA peut grandement nous aider à analyser les données et à trouver des patterns. Cependant, au lieu de passer un log à l’IA pour en extraire les erreurs, l’approche idéale est de lui faire construire un script pour le faire. Cette approche donnera de bien meilleurs résultats et nous évitera de devoir partager des données de production avec l’IA.

En résumé

Les assistants IA génératifs en développement sont là pour rester, il est donc essentiel d’apprendre à en tirer le meilleur parti pour accélérer le développement et augmenter la qualité logicielle. Si vous ne devez retenir que quelques idées de ce document, les voici :

  1. (Qualité) Se concentrer sur les bonnes pratiques de développement pour assurer la qualité et la sécurité.

  2. (Revue) Examiner TOUT le code généré.

  3. (Responsabilité) Le code généré par l’IA reste VOTRE responsabilité.

  4. (Diviser pour régner) Privilégier les petites itérations : prompt -> revue et ajustement -> test.

  5. (Critère) Décider quand l’utiliser et quand ne pas l’utiliser.

  6. (Apprentissage partagé) Créer des forums pour partager les connaissances au sein de l’entreprise.


En tant que Fractional CTO, j’ai aidé plusieurs entreprises à adopter l’IA générative dans leurs processus de développement, je sais donc comment définir et exécuter une stratégie qui maximise la valeur de ces outils tout en limitant les risques. Si vous envisagez d’adopter ces assistants et souhaitez le faire de manière robuste avec des garanties, je peux vous aider.

IA Blog cursor développement programmation