Leçon 5/17 8 min

Débugger avec l'IA

Apprenez quand demander à l'IA et quand réfléchir vous-même pour résoudre un bug.

FR EN

Le cadre de décision : IA-first vs Cerveau-first

Tous les bugs ne se valent pas. Certains sont parfaits pour l'IA, d'autres nécessitent votre cerveau humain. Voici comment décider :

IA-first (demandez à l'IA)

  • Erreurs de syntaxe
  • Messages d'erreur connus
  • Typos et fautes de frappe
  • Problèmes de configuration
  • Incompatibilités de versions

Cerveau-first (réfléchissez d'abord)

  • Bugs d'architecture
  • Race conditions
  • Logique métier incorrecte
  • Problèmes de performance
  • Bugs intermittents

L'IA excelle sur les bugs déterministes : ceux qui ont un message d'erreur clair et une cause unique. Elle est moins fiable sur les bugs systémiques : ceux qui impliquent plusieurs composants ou une logique métier complexe.

Le rapport de bug structuré

Le plus grand piège du debugging IA : coller juste le message d'erreur. L'IA va "corriger" quelque chose, mais probablement pas la vraie cause.

Un bon rapport de bug pour l'IA contient 4 éléments :

1. Message d'erreur Le message exact, copié-collé 2. Comportement attendu "Le formulaire devrait envoyer un email" 3. Ce que j'ai essayé "J'ai vérifié les logs, changé le port..." 4. Code concerné La fonction ou le fichier qui pose problème
Numéro Élément Description

Comparez ces deux approches :

Approche A (mauvaise)

"TypeError: Cannot read property 'map' of undefined. Corrige."

Approche B (bonne)

"J'ai un TypeError: Cannot read property 'map' of undefined dans ma fonction displayUsers(). Elle reçoit les données d'une API fetch. L'erreur arrive quand l'API retourne une réponse vide. J'ai vérifié : le fetch fonctionne, response.ok est true, mais response.json() retourne parfois null. Voici le code : [code]"

La technique du rubber duck IA

Le rubber duck debugging est une technique classique : expliquer son bug à un canard en plastique force à structurer sa pensée. Avec l'IA, c'est encore mieux : le canard répond.

La technique :

  1. Expliquez le bug à l'IA comme si elle ne connaissait pas votre projet
  2. Décrivez ce que DEVRAIT faire le code
  3. Décrivez ce qu'il FAIT réellement
  4. Expliquez les hypothèses que vous avez déjà testées

Souvent, le simple fait de formuler le problème clairement suffit à trouver la solution vous-même. L'IA est un bonus.

Le piège : corriger le symptôme, pas la cause

Le plus grand danger du debugging IA : l'IA corrige le symptôme, pas la cause.

Exemple : votre application plante avec "out of memory". L'IA suggère d'augmenter la limite de mémoire PHP. Le vrai problème ? Une boucle infinie dans votre code qui charge des données sans pagination.

Augmenter la mémoire "corrige" l'erreur... temporairement. La boucle infinie, elle, est toujours là.

Règle : quand l'IA propose un fix, demandez-vous toujours : "Est-ce que ça corrige la cause ou le symptôme ?" Si c'est le symptôme, creusez plus.

The decision framework: AI-first vs Brain-first

Not all bugs are created equal. Some are perfect for AI, others require your human brain. Here is how to decide:

AI-first (ask the AI)

  • Syntax errors
  • Known error messages
  • Typos and spelling mistakes
  • Configuration issues
  • Version incompatibilities

Brain-first (think first)

  • Architecture bugs
  • Race conditions
  • Incorrect business logic
  • Performance issues
  • Intermittent bugs

AI excels at deterministic bugs — those with a clear error message and a single cause. It is less reliable with systemic bugs — those involving multiple components or complex business logic.

The structured bug report

The biggest debugging trap: just pasting the error message. The AI will "fix" something, but probably not the real cause.

A good bug report for the AI contains 4 elements:

1. Error message The exact message, copy-pasted 2. Expected behavior "The form should send an email" 3. What I tried "I checked the logs, changed the port..." 4. Relevant code The function or file causing the issue
Number Element Description

Compare these two approaches:

Approach A (bad)

"TypeError: Cannot read property 'map' of undefined. Fix it."

Approach B (good)

"I have a TypeError: Cannot read property 'map' of undefined in my displayUsers() function. It receives data from a fetch API call. The error happens when the API returns an empty response. I checked: the fetch works, response.ok is true, but response.json() sometimes returns null. Here is the code: [code]"

The AI rubber duck technique

Rubber duck debugging is a classic technique: explaining your bug to a rubber duck forces you to structure your thinking. With AI, it is even better — the duck answers back.

The technique:

  1. Explain the bug to the AI as if it does not know your project
  2. Describe what the code SHOULD do
  3. Describe what it ACTUALLY does
  4. Explain the hypotheses you have already tested

Often, just formulating the problem clearly is enough to find the solution yourself. The AI is a bonus.

The trap: fixing the symptom, not the cause

The biggest danger of AI debugging: the AI fixes the symptom, not the cause.

Example: your application crashes with "out of memory". The AI suggests increasing the PHP memory limit. The real problem? An infinite loop in your code that loads data without pagination.

Increasing memory "fixes" the error... temporarily. The infinite loop is still there.

Rule: when the AI suggests a fix, always ask yourself: "Does this fix the cause or the symptom?" If it is the symptom, dig deeper.

Avec l'IA

Testez un rapport de bug structuré. Copiez ce prompt dans Claude :

J'ai un bug dans une fonction JavaScript. Erreur : TypeError: Cannot read property 'length' of undefined à la ligne 3. Comportement attendu : la fonction devrait retourner le nombre d'éléments d'un tableau. Ce que j'ai essayé : vérifier que le tableau est bien passé en argument. Code : function countItems(items) { console.log(items); return items.length; }. La fonction est appelée avec countItems(getData()) et getData() retourne parfois undefined. Quelle est la vraie cause et comment la corriger proprement ?
Ré-explique sans regarder

Sans relire la réponse de l'IA ci-dessus : avec tes mots, comment vérifies-tu qu'un fix proposé corrige la cause et pas seulement le symptôme ?

Une bonne explication dit : remonter la chaîne de causalité (pourquoi l'erreur apparaît, pas juste où). Sur l'exemple items.length, le vrai problème n'est pas la ligne 3 mais que getData() renvoie parfois undefined : un ?? [] sur l'appelant traite la cause, un try/catch autour de .length masque le symptôme. Demander « est-ce que ça revient si je change les données d'entrée ? » : si oui, c'est un patch de symptôme.
Exercice : Rédigez un prompt de debug

Votre site PHP affiche une page blanche au lieu du formulaire de contact. Rédigez un prompt de debug structuré avec les 4 éléments : message d'erreur, comportement attendu, ce que vous avez essayé, code concerné.

Accepter ou rejeter le fix de l'IA

Tu signales à l'IA un TypeError: Cannot read property 'length' of undefined dans countItems(getData()), où getData() renvoie parfois undefined. Elle répond « corrigé » avec ce diff. Tu l'acceptes tel quel ou tu le rejettes ?

function countItems(items) {
  try {
    return items.length;
  } catch (e) {
    return 0;
  }
}
Rejeter. C'est l'exemple parfait du fix de symptôme : le try/catch avale l'erreur et renvoie 0, l'appli ne plante plus… mais elle ment. Un « 0 élément » et un « échec de chargement des données » sont deux situations différentes, et masquer l'undefined ici fera disparaître silencieusement de vrais bugs ailleurs. La cause est en amont : getData() ne devrait jamais renvoyer undefined (corrige-le là), ou l'appelant fait countItems(getData() ?? []). try/catch sert à gérer une erreur attendue, pas à étouffer un undefined qu'on n'a pas compris.
Rappel libre

Sans remonter dans la leçon : quels sont les 4 éléments d'un bon rapport de bug à l'IA, et quelle question te protège du fix de symptôme ?

Les 4 éléments : (1) le message d'erreur exact copié-collé, (2) le comportement attendu, (3) ce que tu as déjà essayé, (4) le code concerné. Coller juste le message ne suffit pas : l'IA « corrigera » quelque chose, rarement la vraie cause. Et la question qui te protège du symptôme : « Est-ce que ça corrige la cause ou le symptôme ? » Si le bug peut revenir dès que les données d'entrée changent, c'est un patch de symptôme.
Pour quel type de bug l'IA est-elle la plus utile ?
Que faut-il TOUJOURS inclure dans un prompt de debug ?
Le plus grand piège du debugging IA ?
Quand ne PAS demander à l'IA ?
Prochaine étape

Débugger après coup, c'est réparer ce qui aurait pu être évité. La prochaine leçon, le TDD piloté par l'IA, renverse la logique : faire écrire les tests d'abord, puis le code qui les fait passer, pour que l'IA construise juste du premier coup.

Leçon 6 : TDD piloté par l'IA →
Besoin d'un développeur pour votre projet ?

Réponse sous 24h · Sans engagement