La distinction entre problèmes ouverts et problèmes fermés
Lorsque l’on cherche à catégoriser les problèmes rencontrés, il peut être utile de distinguer deux types de problèmes :
- Les problèmes ouverts
- Les problèmes fermés
Éléments de définition
Les problèmes fermés
Cette distinction vient à l’origine des mathématiques, une discipline dans laquelle certains problèmes ont une solution connue et démontrée. On parle alors de problème fermé.
En entreprise, ce type de problème peut être résolu assez facilement dans le cadre d’un projet IT, dès lors que :
- Le problème a été identifié.
- Une solution existe.
- Il y a suffisamment de ressources et de volonté pour mettre en œuvre cette solution.
Ces trois points sont cruciaux et, parfois, l’incapacité à identifier qu’un problème est effectivement un problème devient… un problème en soi.
Les problèmes ouverts
À l’inverse, les problèmes ouverts sont ceux pour lesquels aucune solution n’est connue. Pour certains, il est même prouvé qu’aucune solution n’est possible.
Utilité de la distinction dans les projets IT en entreprise
La plupart des projets IT aujourd’hui font face à des problèmes fermés, pour lesquels les solutions techniques sont déjà inventées. Bien souvent, ces solutions ne sont pas toujours connues de tous les membres de l’équipe. La méconnaissance des solutions devient un problème en soi.
Quelques exemples de problèmes fermés :
- Recréer entièrement et automatiquement un environnement, du développement à la production, sur l’infrastructure d’un cloud provider. La solution consiste à utiliser des outils d’infrastructure as code, tels que Terraform ou Pulumi.
- Empêcher le déploiement en production d’une application qui présente des anomalies explicitement décrites. La solution consiste à automatiser la détection de ces anomalies, stopper l’intégration du code, et donc le déploiement à terme, selon une logique d’arrêt au défaut (build pipelines, dans une démarche CI/CD).
- Éviter le développement d’applications sur plusieurs années qui risquent de ne pas être en mesure d’apporter suffisamment de valeur à leurs utilisateurs finaux. La solution consiste à adopter une démarche de développement logiciel agile, dans laquelle on cherche à présenter fréquemment de nouvelles versions du logiciel aux utilisateurs afin de valider ou invalider certaines hypothèses, et d’ajuster les développements lors des prochaines itérations.
Certains problèmes sont ouverts, et il n’est pas encore démontré qu’il soit possible de trouver une solution. Le développement de l’intelligence artificielle générale (AGI), par exemple, est un problème ouvert.