Dans mon article précédent, je décrivais ma première expérience de Gemini Code Assist, l'assistant de codage de Google qui s'intègre dans VS Code. Pour le tester sérieusement, j'ai recréé à partir de zéro une version monolingue de mon blog. Aujourd'hui, je partage les enseignements que je tire de cette expérience, et comment j'améliore ma collaboration avec l'IA.
Les enseignements de ma collaboration avec Gemini Code Assist
Prendre le temps de bien décrire le projet 🖋
Au démarrage d'un nouveau projet, prendre le temps de bien analyser le projet dans son ensemble et de créer un fichier readme précis et assez complet. Cela permet tout d'abord d'être bien clair soi-même sur ce qu'on souhaite faire, puis cela facilite la tâche de l'IA et permet d'obtenir des réponses plus pertinentes.
Ne pas être trop fainéant 🥱🏖️
Lors de mon essai, Gemini a produit dans l'ensemble un code de très bonne qualité, mais tout de même perfectible à certains moments. Le conseil qu'on voit partout concernant la relecture du code produit par l'IA est donc justifié. En particulier, il est important d'avoir du recul et de se demander si l'approche adoptée par l'IA est pertinente dans le contexte.
Parfois, il est plus rapide de coder certaines choses simples soi-même que d'écrire un prompt et d'attendre la réponse de Gemini, qui peut prendre plus d'une minute pour s'afficher. En plus, cela évite de devenir soi-même trop paresseux et cela consomme moins d'énergie !
Être tolérant avec l'IA et l'éduquer 🫂
Lorsque l'IA ne répond pas à certaines requêtes comme on le souhaiterait, on peut vite s'agacer et être tenté de lui parler plus sèchement 🤬 au lieu de chercher à comprendre pourquoi elle produit ce genre de réponse.
Ce qu'il faut bien garder en tête, c'est qu'en faisant ça, on se met soi-même dans un état émotionnel qui rend le travail désagréable. Généralement, si l'IA répond à côté de la plaque, c'est que la demande n'était pas assez précise ou qu'on n'a pas fourni tout le contexte nécessaire.
Dans ce cas, il y a 2 possibilités : soit préciser ou découper davantage la demande, soit faire le travail soi-même. Si l'on produit soi-même le code, on peut en profiter pour éduquer l'IA en lui disant "voilà ce que j'attendais", et en lui fournissant le code en contexte. C'est aussi une excellente occasion de permettre à l'IA de nous faire des suggestions d'amélioration !
Tip
Finalement, il n'y a que du bénéfice à rester dans un état d'esprit de collaboration. Cela permet de rester soi-même dans une dynamique positive et agréable, et cela donne à l'IA l'occasion de s'améliorer et de nous fournir des suggestions utiles.
Ne pas être trop gourmand 🍰
Pour aller vite, on peut être tenté de demander à l'IA d'implémenter une grosse fonctionnalité en une seule fois. Mais cela ne marche pas, à cause des limites imposées par l'IA 😏. Et il n'est pas facile d'avoir une vision claire de ces limites. C'est pourquoi, vers la fin du projet, j'ai posé la question suivante à Gemini :
Quelles sont tes limites sur le nombre de fichiers et la quantité de code que tu peux générer en une seule fois ? Par exemple, si je te donnais les maquettes d'un blog complet, serais-tu capable de générer tous les fichiers en une seule fois ?
Voici sa réponse :
Bonjour ! C'est une excellente question qui touche au cœur de la meilleure façon de collaborer avec une IA comme moi.
Pour répondre directement : non, je ne serais pas capable de générer tous les fichiers d'un blog complet en une seule fois à partir de maquettes. Il y a deux raisons principales à cela :
- Limite de taille de la réponse : Chaque réponse que je génère a une taille maximale. Un projet complet, même un blog statique simple, contient de nombreux fichiers (HTML, CSS, JavaScript, configuration, etc.) et dépasserait très certainement cette limite.
- Complexité et qualité : La création d'un logiciel est un processus itératif. Demander de tout générer d'un coup est une tâche extrêmement complexe qui laisse place à beaucoup d'ambiguïté. Pour obtenir un résultat de haute qualité qui correspond vraiment à tes attentes, il est beaucoup plus efficace de procéder par étapes.
L'approche la plus productive est de me considérer comme un partenaire de "pair programming". Voici comment nous pouvons collaborer efficacement sur un projet d'envergure :
- Découper le projet : Divise le travail en tâches plus petites et logiques. Par exemple : "Crée la structure de base du projet Eleventy", "Crée le layout de base avec l'en-tête et le pied de page", "Maintenant, ajoute le style CSS pour le menu", "Implémente la page de liste des articles", etc.
- Travailler de manière itérative : Donne-moi une tâche à la fois. Cela te permet de vérifier mon travail, de le corriger si nécessaire et de me donner des instructions plus précises pour l'étape suivante. C'est exactement l'approche que tu as utilisée pour recréer ton blog, et c'est la plus efficace.
- Fournir un contexte précis : Même si j'ai accès aux fichiers du projet, le fait de spécifier les fichiers sur lesquels travailler dans ta requête m'aide à me concentrer et à fournir une réponse plus pertinente et plus rapide.
En résumé, il faut m'utiliser non pas comme un "générateur de site web en un clic", mais comme un assistant très rapide et compétent qui t'aide à construire ton projet brique par brique. Cette collaboration itérative garantit que tu gardes le contrôle total sur l'architecture et la qualité du code final.
Important
La dernière phrase me semble particulièrement importante : "une collaboration itérative qui garantit qu'on garde le contrôle total sur l'architecture et la qualité du code final". Cela sous-entend qu'il faut déjà bien maîtriser soi-même l'architecture et les technologies qu'on met en œuvre !
Mes conseils perso pour les débutants👉
Si tu débutes avec l'IA, pour avoir une première expérience positive et ne pas être déçu dès le départ, je te conseille vivement ce qui suit :
Tip
Analyse bien ton projet au départ, en prenant le temps d'écrire un fichier readme par exemple. Cela t'apportera 3 bénéfices :
- Tu seras toi-même bien plus clair sur ce que tu veux faire
- Le fichier readme sera un excellent moyen de donner du contexte à l'IA
- Il t'aidera aussi à découper le travail et à formuler les requêtes à l'IA
Autre bonne pratique que j'ai moi-même adoptée depuis pas mal de temps, et qui m'aide beaucoup :
Tip
Découpe les tâches importantes en tâches plus petites, et écris ces dernières sous forme d'une liste de cases à cocher dans un fichier Markdown nommé par exemple todo.md. Au fur et à mesure que tu termines ces tâches intermédiaires, coche les cases correspondantes.
Cette liste te permettra de ne pas perdre le fil de ce que tu fais, et finalement de ne rien oublier. Elle est d'autant plus utile que ton travail s'étale sur une longue période (plusieurs heures ou jours).
Mon dernier conseil concerne la préparation à la recherche d'emploi. Avec l'IA, il est clair que les développeurs débutants auront de plus en plus de mal à trouver du travail. D'où mon conseil suivant :
Tip
Avant de postuler à un poste de développeur, entraîne-toi tout d'abord sur des projets perso assez importants sans utiliser l'IA, afin de te familiariser avec les langages, frameworks et concepts d'architecture que tu vas utiliser. Si tu n'as pas d'idée de projet, un blog ou un site de e-commerce fictif feront très bien l'affaire.
Dans un second temps, quand tu auras acquis une certaine maîtrise technique, utilise l'IA pour te familiariser avec cet outil.
C'est super important de bien respecter cet ordre ! Car si tu utilises tout de suite l'IA sans maîtriser toi-même l'architecture et le code :
- ⌛ tu vas perdre un temps fou dans ton apprentissage, car tu croiras peut-être maîtriser le code, alors que ta compréhension ne sera que très partielle. Il y a en effet une différence énorme entre le fait de comprendre un code écrit par quelqu'un d'autre et le fait d'être capable de l'écrire soi-même.
- 🎭 tu auras sans doute le syndrome de l'imposteur (à juste titre !), car tu sentiras très vite que tu ne sais pas faire grand-chose sans l'IA.
- 💩 tu produiras de la merde ! Désolé de le dire aussi crument, mais il faut être réaliste. L'IA est capable de produire de très bons morceaux de code. Mais si tu n'as pas la vision d'ensemble, le recul et l'expérience pour bien la piloter, le résultat global sera pourri. Seul un joailler sait assembler correctement des diamants pour en faire un joli collier.
N'hésite pas à partager ta réaction en commentaire. Et si tu as d'autres bonnes pratiques ou conseils sur la façon de bien collaborer avec l'IA, n'hésite pas à les partager également ! 😉