Comment débugger un problème de manière efficace ?

in #fr5 years ago

Aujourd'hui, je partage avec vous mon processus pour résoudre des problèmes en apparence complexes, mais qui peuvent se résoudre facilement si l'on utilise la bonne méthode.

Je me suis souvent retrouvé face à des problèmes techniques en apparence très complexes et qui m'ont demandé parfois des dizaines d'heures pour les résoudre... Face à la complexité de certains problèmes, j'ai passé mon temps à :

  • Faire des suppositions plutôt qu'à isoler le problème pour mieux le comprendre.
  • Copier-coller bêtement le problème sur un moteur de recherche sans poser le problème sur papier de manière claire et précise.
  • Faire des va-et-vient, et réparer le problème de manière temporaire plutôt que le résoudre à la source et de manière définitive.

Récemment, j'ai réussi à réparer un problème qui arrivait de manière récurrente et aléatoire sur mon infrastructure web.

Du coup, j'en profite pour créer et partager avec toi une sorte de procédure sous la forme d'une checklist de 5 étapes à réaliser dans l'ordre :

  1. Je supprime le superflu et réduis mon environnement de travail le plus possible pour isoler le problème

  2. Je trouve le moyen de reproduire ce problème à tous les coups (minimum 5 à 10 fois d'affilées) et avec le moins d'étapes possible

  3. Si l'erreur ne se reproduit pas à tous les coups, je reviens à l'étape 1 dans le but de supprimer les comportements aléatoires

  4. Une fois le problème correctement isolé et facilement reproductible, je rédige sur papier une description précise et détaillée du problème, comme si je m'adressai à un collègue

  5. Enfin, après avoir collecté toutes les données en lien avec le problème, je tente de résoudre le problème (avec des recherches internet ci-besoin). Sinon je délègue le bug à quelqu'un d'autre en prenant soin de lui donner tout ce que je sais sur celui-ci.

Pour résumer, pour résoudre un bug, il faut simplement isoler notre problème dans un environnement minimal, le reproduire au moins 10 fois, collecter un maximum de données et décrire notre problème sur papier. De cette façon, on améliore notre compréhension du problème afin de mieux le résoudre.

Je suis quelqu’un de très visuel et le simple fait d'écrire le problème sur papier m'aide beaucoup à le résoudre.

Il existe aussi la méthode Rubber Ducking qui consiste à placer un canard en caoutchouc près de soi et de lui décrire le problème. Le fait de dire votre problème à haute voix rendra la solution plus claire.

Je ferai prochainement un article sur l'utilisation de la commande git bisect run, qui permet d'automatiser plus ou moins le processus de debug.

N'hésite pas à t'inscrire à ma newsletter pour être informé de la sortie de chaque article si ça t'intéresse. ;)

Sort:  

Congratulations @ston3o! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You received more than 50 upvotes. Your next target is to reach 100 upvotes.

You can view your badges on your Steem Board and compare to others on the Steem Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

Do not miss the last post from @steemitboard:

Are you a DrugWars early adopter? Benvenuto in famiglia!
Vote for @Steemitboard as a witness to get one more award and increased upvotes!

Petite astuce pour vos prochaines publications : pourquoi ne pas utiliser Partiko ? Cela vous rapporte des points convertibles en .... steems ! J’ai écrit un post là-dessus : https://busy.org/@iptrucs/partiko-ideal-pour-gagner-des-steems
Essayez via le lien suivant : https://partiko.app/referral/iptrucs
Et vous me direz ce que vous en pensez. Bonne journée 👍

Coin Marketplace

STEEM 0.32
TRX 0.12
JST 0.034
BTC 64664.11
ETH 3166.18
USDT 1.00
SBD 4.11