Principe de non-prolifération des problèmes

Philosophie15 min de lecture
Attribution : ChatGPT 5

Formulation générale

La solution réelle à un problème initial n’introduit aucun problème potentiel.

Raisons

Que l’on adopte un point de vue économique, social, et même technique, notre société moderne a normalisé l’ajournement des problèmes. Un problème n’en est un que si l’on en fait l’expérience dans l’immédiat. Nous sommes même parvenus à capitaliser ces délais, à en faire une ressource économique, parfois jusqu’à vendre l’illusion perpétuelle d’une résolution qui ne viendra jamais.

Différer un problème consiste à retarder l’échéance de sa résolution, mais ce délai temporel peut s’assortir d’un transfert de responsabilité et, là encore, certains sont passés maîtres dans cet art. Une expertise que j’ai malheureusement personnellement constatée dans le cadre de ma carrière de développeur, via une situation à la fois spécifique et tragiquement commune : un bug affecté à un développeur (c’est-à-dire, un problème initial pour lequel une solution réelle doit être trouvée) qui se retrouve à passer de main en main, chaque fois sous de nouveaux prétextes : pas assez de temps, priorisation différente, décision managériale, etc.

Reporter la résolution d’un problème spécifique peut sembler une stratégie payante, témoignant d’une certaine souplesse à laquelle l’humain semble tenir. En remaniant les priorités, et donc en repoussant certaines échéances, on peut au moins donner l’illusion de maîtriser le projet dans sa globalité, voire d’être un expert dans son domaine.

C’est oublier qu’une fois qu’un problème a été identifié, le cacher sous le tapis peut s’avérer difficile, voire impossible, en particulier si l’on compte sur le fait que les protagonistes qui lui sont liés vont en oublier l’existence. Alors, plutôt que quantifier un irrationnel quotient bénéfices/risques, ou un pourcentage de progression dans la résolution du problème, il serait plus bénéfique d’adopter un point de vue plus absolu.

Définitions

Ces définitions doivent permettre au lecteur de qualifier un problème et de déterminer s’il est décomposable ou non. Il ne s’agit pas de redéfinir des termes, mais de préciser le cadre dans lequel je les utilise.

Clarifions que cet article ne cherche en rien à remettre en cause les acquis de la logique ou de l’informatique théorique. Gödel a montré qu’il existe des énoncés indécidables, Turing a démontré l’existence de problèmes insolubles comme le Halting Problem, et les ingénieurs savent qu’aucune solution technique n’est dépourvue d’effets de bord. Je reconnais pleinement ces limites dans le cadre scientifique et formel.

Mon propos se situe ailleurs : dans la pratique quotidienne et professionnelle. J’y observe que beaucoup de personnes peinent à décomposer un problème complexe en sous-problèmes gérables, et qu’il est trop fréquent de chercher à contourner les problèmes plutôt qu’à les résoudre. Ce texte est donc une tentative d’offrir un point de vue alternatif et pragmatique, applicable par tous, indépendamment de toute sophistication théorique, y compris en dehors du cadre de l’informatique – dont je parle spécifiquement parce que c’est le domaine que je connais le mieux.

Problème

Le problème initial est une situation donnée parfaitement caractérisée dont les conséquences ne sont pas acceptables. Un problème potentiel est un problème dont la probabilité d’apparition est non-nulle.

Le problème initial doit être simple et irréductible, c’est-à-dire qu’il doit pouvoir être directement et absolument résolu par une solution spécifique.

Du point de vue de la logique, un problème ne peut avoir que deux états (il est binaire) : résolu ou non résolu. C’est le langage courant qui, comme souvent, intègre une notion de gradation et donne une sensation de “travail en cours”, et c’est ce point précis qui entretient l’illusion de progression — dont certains sont capables de tirer profit.

Solution

Une solution résout le problème initial. Une solution doit remplir deux critères pour être considérée comme réelle :

  • Elle supprime définitivement le problème initial.
  • Elle n’introduit aucun problème potentiel.

Toute idée incapable de répondre à ces deux critères ne peut rigoureusement pas être qualifiée de solution.

Idée

Si une idée introduit un et un seul problème potentiel, elle sera qualifiée d’étape : elle ne permet pas la résolution directe du problème initial, mais en n’introduisant qu’un seul problème potentiel, elle peut effectivement y conduire.

Une idée qui fait apparaître plus d’un nouveau problème potentiel est simplement une fausse-route.

Principes généraux

Tout problème admet au moins une solution

Cette solution peut être plus difficile à trouver que pour d’autres problèmes. Elle peut aussi nécessiter plusieurs étapes. Mais de manière générale, tout problème formulé doit admettre au moins une solution.

La difficulté d’admettre ce que je tiens pour un état de fait vient peut-être d’un problème de formulation du problème initial, voire son acceptation ontologique.

Admettons par exemple que nous considérions le réchauffement climatique comme un problème. Nous éprouvons des difficultés à le résoudre, non pas parce que nous en ignorons les causes, ou que nous en renions les conséquences, mais parce que l’on cherche un moyen de s’y soustraire. Ainsi, si nous n’y trouvons pas de solution, c’est que le problème, tel que communément exposé, n’en est pas un : ce n’est qu’une diversion.

C’est parce que le problème est mal formulé qu’il est possible, pour certains, d’exploiter une zone grise ; par exemple, en assurant qu’une solution au réchauffement climatique est d’injecter du soufre dans l’atmosphère pour cacher les rayons du soleil et donc refroidir la planète.1 Évidemment, il ne s’agit aucunement d’une “solution” au “problème” du réchauffement climatique puisque cette idée introduit des problèmes potentiels, parmi lesquels nous pourrions simplement citer que même si l’effet de refroidissement était perceptible, les conséquences sur la Vie au sens large du terme sont connues, et néfastes, et que cela ne résout aucunement l’accumulation de carbone.

Une autre manière, plus simple et plus radicale, d’éviter la recherche d’une solution à un problème est de l’esquiver, l’ignorer, voire tenter de l’éradiquer de l’histoire. C’est très exactement ce que fait le gouvernement de Donald Trump, pour rester sur le sujet climatique.

Au-delà de la condamnation de ces pratiques, le fin mot reste que tout problème correctement formulé a au moins une solution réelle. Par corolaire : si une solution ne semble pas pouvoir être trouvée à un problème donné, c’est que ce dernier est mal formulé.

Cette idée est remarquablement puissante lorsque l’on interagit avec un chatbot : si vous trouvez que ses réponses “tapent à côté”, c’est probablement dû à une mauvaise formulation de la question

Un problème est irréductible

C’est ainsi que j’ai défini plus tôt un problème : sa résolution doit être directe et spécifique. Si ce n’est pas le cas, c’est que le problème peut encore être décomposé en plusieurs “sous-problèmes”, qu’il convient alors de résoudre individuellement.

Pourquoi insister sur cette notion d’irréductibilité ? Tout simplement parce que considérer un problème complexe dans son ensemble (exclusivement) est un point de vue dangereux. Cela peut nous amener à occulter des sous-problèmes qui peuvent s’avérer importants, cela nous tend à simplifier à outrance, en cherchant une solution “rapide” ou “clés en main”.

En outre, un problème complexe, non irréductible, peut infliger un poids émotionnel difficile à porter. En ce sens, le principe de non-prolifération des problèmes se rapproche des objectifs SMART, ou, dans le domaine de l’informatique, du principe de responsabilité unique. Notons que bien que ces objectifs et principes s’appliquent initialement à des domaines spécifiques, rien n’empêche de les appliquer à la vie courante !

Rien n’empêche non plus de décomposer un problème initial incorrectement formulé en plusieurs problèmes fondamentaux irréductibles. C’est d’ailleurs le travail qu’est censé faire, par exemple, un architecte logiciel : il doit partir d’une formulation plus ou moins adroite d’une demande client, cartographier les problèmes éventuels pour aboutir au résultat final, censé résoudre le problème initial du client. C’est la création du cahier des charges, une pratique tombée en désuétude avec les conduites de projet modernes qui le remplacent par des spécifications que l’on peut voir comme une formalisation de problèmes plus simples, voire irréductibles lorsque c’est fait correctement. Mais, alors qu’un cahier des charges permet d’avoir à la fois une vision d’ensemble et une vision spécifique des sous-composants, les spécifications formulées par ces méthodes (dites “agiles”) ont tellement segmenté le travail que, parfois, plus aucune vision d’ensemble n’est possible.

Dans le cadre du travail, c’est un fonctionnement jugé acceptable, voire souhaitable. Dans la vie personnelle quotidienne, on ne peut pas déléguer certains aspects à des équipes qui ne feront rien d’autre que traiter un problème particulier. Mais nous devons admettre qu’en aucun cas, l’absence ou l’omniprésence d’une vue d’ensemble n’est souhaitable.

Par corolaire, tant qu’un problème peut être décomposé en sous-problèmes, on se doit de traiter individuellement chaque sous-problème comme s’il était un problème initial.

La résolution d’un problème est binaire

Une résolution partielle est un non-sens. C’est une locution utilisée pour entretenir l’idée de progression dans l’avancement d’une tâche. Mais, dans son sens le plus fondamental, c’est oublier qu’un problème ne peut avoir que deux états : résolu, ou non-résolu. Tout état présenté comme intermédiaire est illusoire et doit déclencher une alerte intellectuelle.

Ces états intermédiaires, qu’ils soient exprimés en pourcentage ou autre, ont un rôle disjoint de la résolution du problème en lui-même : ils veulent indiquer une progression vers cette résolution, mais leur fragilité les rend intrinsèquement inutiles.

Comme on l’a vu, une idée peut constituer une étape vers la résolution d’un problème. Mais pour pouvoir indiquer une progression, il est nécessaire de connaître l’ensemble de ces étapes, ce qui n’est pas toujours possible dès le commencement de la recherche d’une solution. En outre, ces indicateurs ne peuvent pas, fondamentalement, tenir compte de l’apparition (ou la disparition) des problèmes intermédiaires. D’où la nécessité de définir le problème initial comme irréductible : c’est bien la seule façon de savoir comment le résoudre, et donc en combien de temps.

Prenons un exemple simple : on est en charge d’un site internet gérant 7000 connexions par jour (cela représente le trafic d’un blog fréquenté ou une petite boutique en ligne). On implémente une “solution” à un problème initial qui présente toutefois un risque connu, mais jugé minimal, de 0.1% de défaillance. Cela signifie concrètement qu’il existe presque 100% de chances qu’au moins une connexion échoue par jour. Et cela, à condition que l’on ait correctement estimé la probabilité de défaillance.

Et si cette connexion était celle qui permettait à l’entreprise de vivre ? Et si, au contraire, cet échec d’une seule connexion par jour était inoffensif à l’entreprise, ne serait-ce pas là un manque flagrant de respect pour au moins un de ses clients chaque jour ?

Une “solution” qui autorise cela ne peut pas être considérée comme telle.

La résolution d’un problème est définitive

Comme il n’existe pas de problème “à moitié résolu”, il n’existe pas de problème “réglé pour l’instant”. Là encore, c’est une construction sociale visant à l’encouragement, largement capable de mener à la paresse intellectuelle et donc, au fourvoiement. Un problème ne peut être considéré comme résolu que si sa solution n’introduit aucun problème potentiel. C’est sur ce dernier mot que se base sans doute l’idée qu’un problème peut être résolu “pour l’instant”. Après tout, pourquoi se préoccuper d’un sous-problème qui n’a que 0.1% de chances d’apparaitre ?

Précisément parce qu’il a une probabilité non-nulle d’apparaitre (donc, on applique la “loi de Murphy”). Si cette probabilité était nulle, il n’y aurait pas de problème potentiel, et l’idée visant à résoudre le problème initial serait considérée comme sa solution réelle. Or, une probabilité non-nulle implique, consciemment ou non, une temporisation de la résolution du problème : s’il n’y a que 0.1% de chance que le problème se produise, on voit ça comme un délai, et non plus comme un phénomène régulier. Il y a un risque qu’il se produise, mais on finit par ignorer qu’il va se produire. On imagine simplement que plus le risque est faible, plus il va survenir “tardivement”.

La perversion de ce calcul est qu’il implique deux choses :

  • Si les mêmes acteurs sont en jeu, ils peuvent avoir oublié les causes et les conséquences du problème déclenché, ce qui réduit fortement l’efficacité de sa résolution ultérieure.
  • Si les acteurs sont différents, ils n’ont aucune connaissance des facteurs qui ont conduit à la défaillance, alors que ces facteurs pourraient être connus des acteurs initiaux.

C’est aussi une illustration du fameux transfert de responsabilité dont je parlais au début de cet article.

Par conséquent, un problème ne peut pas être considéré comme résolu s’il existe une probabilité non-nulle qu’il déclenche un sous-problème, parce que ce sous-problème se déclenchera potentiellement dans des conditions qui ne sont plus maitrisées.

Effets recherchés

Réduction de la charge mentale

Fragmenter un problème complexe en sous-problèmes irréductibles présente un intérêt particulièrement intéressant : cela permet de s’affranchir des sensibilités individuelles. Puisqu’on réduit un problème en de multiples sous-problèmes, il est raisonnable d’avancer qu’un ou même plusieurs problèmes irréductibles sont faciles à résoudre, du moment qu’ils sont formulés correctement (et c’est là, probablement, que réside la difficulté majeure, et non en la résolution elle-même).

Pour un individu donné, il est plus accessible de se demander comment réduire son empreinte carbone que de se demander comment stopper le réchauffement climatique. Le problème initial du réchauffement climatique, une fois décomposé, permet de formuler une idée abordable (par exemple, réduire son empreinte carbone) qui peut conduire à une (ou plusieurs) solution réelle, telle que minimiser les déplacements dans un véhicule thermique, refuser les vidéoconférences lorsqu’une conversation purement audio est suffisante, rationaliser son usage de l’IA, etc.

Sentiment d’accomplissement

Lorsqu’un manager ouvre un ticket pour l’implémentation d’une nouvelle fonctionnalité, son seul soucis – justifié – est de retranscrire aussi précisément que possible la demande du client, aussi imparfaite soit-elle. Dans un second temps, il se doit de diviser ce ticket en plusieurs tickets plus courts et plus spécifiques. C’est l’étape de réduction d’un problème initial complexe en sous-problèmes irréductibles.

Mais, pour la défense des managers, il est parfois difficile, comme déjà évoqué précédemment, de réaliser convenablement ce travail de réduction, soit par manque de temps, soit par manque de connaissances ou d’anticipation.

Or, on a vu aussi qu’un problème (ici, un ticket dans le cadre de la conception d’applications) mal formulé conduisait à des solutions qui n’en sont pas vraiment. C’est dans cette zone grise que l’on rencontre les problèmes de chiffrage, les difficultés à estimer le temps ou les moyens nécessaires à accomplir une tâche donnée.

De façon plus pragmatique, on peut être fortement rebuté par une tâche que l’on s’inflige à titre personnel. Si je m’impose de repeindre le salon, je formule un problème initial complexe, réductible, que je peux diviser en problèmes irréductibles :

  • Choisir si je veux une couleur unique, ou plusieurs couleurs
  • Acheter le matériel nécessaire
  • Placer la bâche et les scotchs de protection
  • Choisir une tenue adaptée
  • Peindre le premier mur
  • Peindre le deuxième mur
  • Etc.

Un gros chantier initial, pouvant paraitre intimidant, voire franchement rebutant, peut se transformer en une liste de petites choses plus accessibles. Et accomplir plusieurs petites tâches accessibles est plus valorisant que de chercher à accomplir un grand projet d’ensemble d’un seul tenant.

Non-prolifération des problèmes

C’était mon postulat initial à l’écriture de cet article. En le lisant, on pourrait se dire qu’au contraire, en réduisant des problèmes généraux à des problèmes irréductibles, on les multiplie ! Ce qu’il faut comprendre en réalité, c’est qu’en réduisant la complexité d’un problème initial, on accélère la résolution des problèmes intermédiaires, simplement par le fait qu’on en prend connaissance.

Il ne s’agit pas d’une recette miracle, mais d’acquérir une ouverture d’esprit sur un sujet spécifique : ne plus considérer tous les problèmes comme irréductibles de but en blanc.

Quand un geek se demande comment il va gérer son réseau, normalement, il décompose spontanément le problème initial complexe en plusieurs problèmes irréductibles : l’expérience lui indique les priorités, l’ordre dans lequel exécuter chaque tâche et chaque sous-tâche. Ce fonctionnement est sain, salvateur, mais semble peiner à franchir la barrière du cadre “geek”, alors qu’il permettrait potentiellement de mieux vivre les problèmes quotidiens, et pas seulement les problèmes techniques.

L’anticipation des problèmes intermédiaires et leur résolution en amont évite cette désagréable impression de ramer, de ne rien faire d’autre que “régler des problèmes”. Parce que les geeks ne sont pas non plus immunisés contre la vue d’ensemble et la volonté d’accomplir rapidement un objectif. C’est quand cette impression survient que l’on doit se dire que l’on a mal formulé le problème initial.

La prolifération des problèmes est ici évoquée dans un cadre non contrôlé, masqué, ou volontairement occulté. Mais en examinant à l’avance ces problèmes, on applique une solution avant que ces problèmes ne surviennent ; on n’applique plus une rustine qui va lâcher tôt ou tard.

Conclusion

En fin de compte, le principe de non-prolifération des problèmes que je cherche à proposer ici vise à améliorer la vie et la pensée. J’espère vous avoir incité à adopter une vision des choses un peu différente de ce qu’on nous apprend ou nous pousse à faire :

  • Résoudre un problème avant qu’il se produise pour ne pas subir l’affront de devoir le résoudre plus tard, quand l’esprit n’y sera plus.
  • Ne pas transférer la responsabilité de la résolution d’un problème vers une équipe qui ne le connait pas.
  • Chercher des sous-problèmes irréductibles, faciles à résoudre en peu de temps, au lieu de chercher à résoudre directement un problème complexe.
  • Mieux quantifier le temps nécessaire à l’exécution d’une tâche irréductible, et par extension, mieux gérer son temps.

C’est une discipline de l’esprit qui peut être coûteuse pour quelqu’un qui n’y est pas déjà habitué, mais ses bénéfices apparaissent rapidement. On ne peut pas toujours l’appliquer en toutes circonstances pour différentes raisons (pas seulement techniques, mais aussi émotionnelles). Mais on peut toutefois tenter de se souvenir de le faire.

Enfin, je ne prétends pas réinventer la roue : j’essaye de vous apporter ma vision des choses, mon interprétation de sujets connus (documentés dans l’article), parfois simplifiés pour être adaptables à la vie courante. Mais je ne prétends pas que c’est facile ni possible de s’y mettre. Je dis simplement qu’adopter ce principe m’a été bénéfique, et qu’il peut donc l’être à d’autres.


  1. Une “solution” que j’ai déjà condamné à plusieurs reprises, notamment ici↩︎