T’es un développeur et chaque jour du pisses des lignes de code et produit quelques fois des bugs. Ce qui est marrant c’est qu’en plus d’être le codeur que t’es, t’es aussi un bug hunter. Des fois, chaque algorithme que t’écris bug: t’obtiens des ValueError, des SynthaxError et j’en passe. C’est alors que tu portes ton armure de super-héros et tu corriges tous ces bugs à la vitesse de la lumière. Néanmoins, si jamais tu considères que t’es pas un bug hunter, alors, je t’explique ici comment en devenir un.
Alors, est-ce normal de coder avec des bugs?
En tant que développeur, tu te poses certainement cette question tout le temps et moi je te dis oui! Oui! C’est normal de coder avec des bugs parce que t’es un homme et que t’as droit à l’erreur. Pourquoi? Et bien… C’est en écrivant ton programme que tu vas certainement rencontrer des bugs, hahaha! T’es pas une rockstar mon pote! Mais sache aussi que t’es obligé de corriger tous ces bugs. Avec des bugs tu sais très bien que ton programme il ne va jamais fonctionner et tu risques servir sur un plat dorée un programme comme celui du vol inaugural du lanceur européen Ariane 5.
Attention au mauvais état d’esprit des bug hunters
Nous sommes des dev et chacun a un comportement qui lui est spécifique lorsqu'il rencontre un bug. Cet état d’esprit diffère selon lequel le bug est rencontré en production ou en pleine séance de test, qu’il soit bloquant ou non. D’habitude tu te sens mal et le syndrome de l’imposteur se rapproche de toi. Du coup tu essaie les méthodes suivantes:
- exécuter le code plusieurs fois tout en espérant que ça change (ce qui est tout à fait une perte de temps inutile)
- Ensuite tu copie l'erreur et tu vas la coller sur les zinternets tout en espérant que notre cher amis stackoverflow te montre le bon chemin
- Des fois tu mets des print ou des console.log un peu partout pour essayer de comprendre d’où vient le bug.
Finalement, tu te retrouves en train de perdre du temps et aucune solution sous la main.
Voici ce que tu dois faire pour déboguer efficacement
- Comprendre quelle est l'erreur et pourquoi elle apparaît avant de faire un tour sur les zinternets. Cette étape est cruciale. Ceci dit, tu dois relire ton code de façon minutieuse ligne par ligne. Pour cela, il est très important que t’écrives des tests tout en essayant de reprendre le contrôle de ton legacy code
- Tu peux aussi te parler à toi-même en utilisant la technique du rubber duck ou canard en plastique. Ah! Tu peux également parler à ton chat ou à ton collègue. Le principe est simple: tu lui parles et tu lui explique ce qui ne va pas afin de mieux appréhender le problème et exprimer ce que tu ressens.
- Diviser pour mieux régner: exécute ton code bloc par bloc, l’un après l’autre. Il sera plus facile pour toi de repérer ce qui ne va pas avec ton code.
- Utiliser des breakpoints. Le débogueur est ton meilleur allié. Il va te permettre d’entrer et d’exécuter des objets à quelques endroits jusqu’à ce que tu rencontres le problème. Tu auras alors parcouru toute une étape logique qui t’auras permis de comprendre d’où vient l’erreur. Méthode à utiliser avec la technique diviser pour mieux régner présentée plus haut.
- Lire la documentation. Beaucoup de développeurs n’aiment pas lire pourtant ça fait partie du métier. Si t’es bloqué sur l’utilisation d’un objet, va dans la section de la documentation officielle qui parle de cet objet, lis la, peut-être tu trouveras ce qui cloche.
- Si tout ce que j’ai cité plus haut ne marche pas, arrête de coder et va prendre de l’air puis revient quelques heures plus tard.
Les outils qui te permettent de déboguer comme un chef
- pdb ou web_pdb si tu codes en Python
- La console de ton navigateur si tu code en JavaScript. Un exemple serait Chrome DevTools
- gdb si tu code en Go
Note finale
Nul ne peut coder sans qu’un bug ne s’insère dans son programme: alors, il faut à tout prix retrouver ce bug et le corriger. Pour cela, tu dois adopter les méthodes des bug hunters qui te permettent de corriger les erreurs rapidement et efficacement, comme expliquées plus haut.