13 points par kciter1 2024-07-29 | 7 commentaires | Partager sur WhatsApp
  • Le débogage est en pratique une compétence indispensable pour les développeurs
  • Dans le débogage, l’important est avant tout l’état d’esprit avec lequel on l’aborde
  • Le débogage est le processus qui consiste à identifier la cause d’un problème à partir d’une situation et de données données
    • L’auteur appelle cela l’intuition
    • L’intuition, c’est relier les connaissances que l’on possède au problème
    • L’expérience joue le rôle de raccourci permettant aux connaissances de se transformer en intuition
  • Pour trouver la cause d’un comportement inattendu, les développeurs réduisent instinctivement le champ des possibles
  • L’auteur estime qu’il est plus efficace de procéder ainsi, en réduisant les possibilités une à une selon des principes
  • Présentation de quatre étapes pour trouver le problème
    • Première étape, douter
      • Code, logs, messages d’erreur, données de monitoring, exigences, matériel : tout sert à recueillir des informations pour résoudre le problème
      • Il est utile de préparer une checklist
    • Deuxième étape, classer
      • Parmi les informations recueillies, il faut distinguer ce que l’on connaît de ce que l’on connaît mal
      • Les informations éliminées dès la phase de collecte le sont grâce à une petite intuition
      • L’auteur les classe en quatre catégories : défauts logiques, défauts des technologies dépendantes, défauts des technologies de base et défauts physiques
    • Troisième étape, apprendre
      • À partir des informations recueillies, il faut repérer les lacunes de connaissance et les combler
    • Quatrième étape, relier
      • À partir des informations, il faut formuler des hypothèses sur le problème et les tester
      • Si de nouvelles idées émergent dans ce processus, il faut utiliser une boucle de rétroaction et repasser par ces quatre étapes
  • Les éléments présentés plus haut sont une méthode utile pour s’exercer à l’intuition mentionnée précédemment
  • Si vous n’avez pas encore vos propres principes de débogage, vous pouvez vous appuyer sur cet article pour les construire, ou en créer de nouveaux. Et c’est encore mieux si vous partagez vos bonnes astuces

7 commentaires

 
cosine20 2024-07-30

L’auteur estime qu’il est plus efficace de procéder par principes et de réduire le champ d’investigation pas à pas.

Je partage tout à fait ce point de vue. Et je pense que vous avez bien structuré et proposé une approche générale du débogage.

En pratique, le processus de débogage implique une grande variété de causes et de connaissances de contexte qui s’entremêlent de façon complexe ; dans ce cadre, je pense qu’il est vraiment essentiel de resserrer progressivement le focus pour trouver les indices nécessaires.
Dans le texte, il est dit qu’il faut affûter son intuition et sa perspicacité au cours de ce processus ; pour déterminer intuitivement où se trouve la cause, et sur quel point concentrer l’enquête, il me semble que l’intuition forgée par l’expérience et le flair joue ici un rôle très important.

 
kciter1 2024-07-30

Je suis d’accord. Je voulais bien exprimer l’intuition dont vous parliez, mais en y réfléchissant, je me dis qu’il vaudrait mieux harmoniser l’ensemble du texte autour de la notion de perspicacité plutôt que d’intuition.

 
halfenif 2024-07-30

L’idée que ceux qui savent raisonner y arrivent, et que ceux qui n’y arrivent pas n’y arrivent pas.

C’était il y a environ 30 ans, je crois.

Les anciens disaient souvent qu’en IT, au bout d’environ trois ans, tout le monde finissait par avoir le même niveau.

Quand j’y repense aujourd’hui ....

 
savvykang 2024-07-29

Ne serait-il pas plus naturel de considérer le fait de relier les informations non pas comme relevant de l’intuition, mais plutôt de l’inférence ou de la démonstration logique ? À force de répéter et de maîtriser les démonstrations, les étapes intermédiaires peuvent être omises et la réponse venir immédiatement, comme lorsqu’on récite ses tables de multiplication, ce qui peut donner l’impression d’une intuition, mais je pense qu’il est juste de distinguer les deux.

En revanche, je suis d’accord sur le reste — le doute, la classification et l’apprentissage — car j’ai constaté qu’ils s’améliorent à mesure que l’expérience et les connaissances de base s’accumulent.

 
savvykang 2024-07-30

Je relis le texte et j’ajoute ceci.

Il me semble que la définition de l’intuition avancée par l’auteur diffère de celle généralement admise socialement. Pour ma part, je comprends la définition courante de l’intuition comme le fait de comprendre un problème sans passer par un processus de réflexion. En lisant le texte, je me suis même demandé un instant si je n’avais pas mal compris le sens du mot intuition, au point d’aller vérifier à nouveau. J’ai aussi l’impression que cela ne va pas sans contradiction avec l’argument général selon lequel le débogage nécessite une procédure de réflexion. Si le débogage était réellement une tâche pouvant être accomplie entièrement par intuition, alors ne faudrait-il pas aussi considérer comme vraie l’affirmation qu’il n’est absolument pas nécessaire, lors du débogage, de consulter les logs ou les données, ni de faire de gestion de configuration ?

 
kciter1 2024-07-30

Bonjour. Merci de l’intérêt porté à mon article.

Comme vous l’avez dit, en général, l’intuition désigne le fait de saisir un objet sans activité de réflexion directe. Cela dit, je ne pense pas qu’on puisse vraiment arriver à la bonne réponse en partant d’un état où l’on n’a absolument aucune connaissance.

Pour commencer, si je devais expliquer ce que je pense du mot « intuition », quand on parle de débogage, j’entends souvent des collègues — ou je me surprends moi-même — à dire des choses comme « ça m’est venu d’un coup » ou « j’avais comme l’impression que le problème venait de cette partie ». C’est cela que je considérais comme de l’intuition. En examinant une à une ces idées qui surgissent soudainement au lieu de les balayer, j’ai fini par constater qu’il y avait en réalité une expérience préalable sur ce point précis, ou une bonne compréhension des connaissances associées. C’est pour cette raison que j’ai utilisé le mot « intuition », et comme cela pouvait prêter à confusion, j’ai ajouté la phrase : « l’intuition consiste à relier les connaissances que je possède au problème ».

Pour répondre donc aux quelques interrogations que vous avez soulevées,
concernant le point selon lequel « cela contredit aussi l’idée générale selon laquelle le débogage nécessite une procédure de réflexion », j’ai décrit dans mon texte l’intuition comme le fait d’abréger, sans grande réflexion, quelque chose que l’on a déjà expérimenté ou que l’on sait déjà. Mon intention n’était donc pas de dire qu’aucune procédure de réflexion n’est nécessaire, mais plutôt de la présenter comme un outil permettant de réfléchir plus vite.

Ensuite, à propos de « si le débogage était vraiment une tâche pouvant être accomplie entièrement par intuition, alors l’affirmation selon laquelle il n’y aurait absolument pas besoin de vérifier les logs, les données ou la gestion de configuration lors du débogage devrait également être vraie, non ? », je n’ai pas affirmé qu’il pouvait être réalisé entièrement par intuition. Au contraire, j’ai ajouté la phrase : « le débogage est un processus consistant à rechercher la cause d’un problème à partir d’une situation et de données données ». Cela dit, je pense qu’il y a peu de développeurs qui, à chaque débogage, passent réellement par les quatre étapes de raisonnement que l’article présente. Avec un certain niveau d’expérience et de connaissances, il arrive aussi qu’on en saute certaines en se fiant à son propre jugement. Les logs, les données et les autres éléments que vous mentionnez jouent, selon moi, deux rôles : si l’on a de l’expérience ou des connaissances, ils servent à les faire remonter à l’esprit ; si l’on n’en a pas, ils servent à aider le raisonnement. Ce sont donc des informations importantes dont on ne peut pas se passer, y compris pour l’intuition telle qu’elle est évoquée dans l’article.

Je pense que le mot « intuition » lui-même, tel qu’il est employé dans cet article, peut être ambigu. Il est possible aussi que la structure ou la progression du texte n’aient pas été idéales pour exprimer ma pensée. Dans un premier temps, je compte corriger les parties qui manquaient de précision. En revanche, je ne sais pas encore s’il serait préférable de remplacer le mot « intuition ». Comme j’en ai fait un élément central dès l’écriture de l’article, aucun autre terme de substitution ne me vient à l’esprit. Si vous avez une bonne suggestion, je vous en serais reconnaissant. :)

 
savvykang 2024-07-31

Je pense qu’ajouter dans l’introduction une explication de fond sur le fait que le débogage nécessite à la fois l’intuition et le raisonnement, puis dans le corps du texte une méthode pour trouver le problème ainsi que le lien entre intuition et raisonnement, pourrait renforcer la cohérence et la complétude de l’article.

Avant modification

  1. Le débogage est le processus qui consiste à identifier la cause d’un problème à partir d’une situation et de données données.
  2. La résolution de problème par le débogage provient généralement de l’intuition du développeur.
  3. Il existe quatre étapes pour trouver le problème.

Après modification

Introduction

  1. Le débogage est le processus qui consiste à identifier la cause d’un problème à partir d’une situation et de données données.
  2. Le débogage nécessite successivement deux sous-tâches : l’identification du problème et sa résolution.
  3. L’intuition intervient dans l’identification du problème, et le raisonnement dans sa résolution. Une théorie qui étaye cela est la théorie du double processus (dual process theory).
  4. Si l’on n’utilise que le raisonnement dans le processus d’identification du problème, il faut vérifier et valider un à un les détails techniques, comme la configuration du système, ce qui limite les gains de productivité. À l’inverse, utiliser l’intuition comme appui dans cette phase est plus avantageux pour une stratégie de débogage.
  5. Pour accroître l’efficacité de l’intuition, il est important d’accumuler au quotidien de l’expérience et des insights, c’est-à-dire des heuristiques.
  6. Il existe toujours une possibilité que l’intuition soit erronée ou inadaptée à la situation, et il est aussi important de s’entraîner à échapper aux biais cognitifs.

Corps du texte (procédure de débogage)

  1. Collecte d’informations
  2. Classification - l’intuition et les heuristiques interviennent
  3. Apprentissage
  4. Formulation et vérification d’hypothèses - le raisonnement intervient