Aller au contenu principal
· REELIANT

Quand un système devient difficile à faire évoluer : les signaux qui ne trompent pas

Un système fragile n'est pas toujours spectaculaire. Il se reconnaît souvent à des signaux plus ordinaires : zones qu'on n'ose plus toucher, estimations floues, dépendances mal comprises, sécurité et conformité de plus en plus coûteuses.

Un système ne devient pas difficile à faire évoluer en une nuit. La dégradation est progressive, et comme elle est progressive, elle est tolérée plus longtemps qu’elle ne devrait. L’équipe s’adapte. Les estimations s’allongent, mais personne ne sait exactement depuis quand. Les contournements se multiplient, mais chacun pris isolément semble raisonnable. Le système tourne encore, donc le sujet n’est jamais assez urgent pour remonter à la direction.

Le problème, c’est que quand il remonte enfin, il est souvent trop tard pour une correction douce. La question n’est donc pas “est-ce qu’on a de la dette technique” (la réponse est toujours oui), mais : à quel point cette dette freine-t-elle concrètement la capacité à livrer, à sécuriser et à faire évoluer le système ?

Certaines zones deviennent intouchables

Quand une équipe commence à dire “on préfère éviter ce module”, le signal est déjà là. Pas forcément parce que le composant est très complexe en soi, mais parce qu’il cumule des propriétés qui rendent chaque intervention risquée : faible couverture de tests, couplage fort avec d’autres modules, logique historique que plus personne ne maîtrise entièrement.

Ce phénomène est souvent mesurable. En croisant la complexité du code avec sa fréquence de modification dans l’historique Git, on identifie les hotspots : ces fichiers à la fois complexes et fréquemment touchés qui concentrent le risque de régression. Un fichier de 2 000 lignes qui n’a pas bougé depuis deux ans n’est pas prioritaire. Le même fichier modifié 30 fois en six mois est un problème structurel.

Quand trois ou quatre fichiers concentrent à la fois la complexité et le taux de changement, ce n’est plus un problème de code. C’est un problème d’architecture.

L’estimation devient floue

Un système fragile se reconnaît aussi à la qualité des estimations. Quand une équipe a du mal à dire si un changement prendra deux jours ou trois semaines, ce n’est pas un problème de pilotage. C’est un problème de lisibilité du système.

Un délai de livraison stable et prévisible signifie que l’équipe comprend le système et peut anticiper l’impact d’un changement. Un délai erratique, où des tâches apparemment similaires prennent tantôt un jour tantôt deux semaines, signale que le système a des zones opaques dont l’impact est imprévisible.

Ce flou ne reste jamais purement technique. Il remonte au métier d’abord, sous forme de frustration sur les délais. Puis au planning, quand les engagements de roadmap deviennent impossibles à tenir. Puis à la direction, quand le budget IT augmente sans que la capacité de livraison suive. Le symptôme visible est politique, mais la cause racine est architecturale.

La connaissance se concentre

Un autre indice fiable est la dépendance à quelques personnes. Si une ou deux personnes savent encore “comment ça marche vraiment”, le système tient. Mais il tient sur une base fragile.

Concrètement : quand la majorité des modifications sur un module critique proviennent d’un seul développeur, un arrêt maladie, un départ ou des vacances suffisent à bloquer l’équipe. La difficulté ne vient pas seulement du code. Elle vient du fait que la compréhension du système n’est plus suffisamment partageable.

Un module qu’une seule personne comprend est souvent un module que l’organisation n’a jamais eu besoin de rendre partageable. Cette dette n’est pas seulement technique, elle est aussi organisationnelle, et elle se paie un jour.

Sécurité et conformité deviennent disproportionnées

Sur un système bien structuré, intégrer une authentification forte prend quelques jours. Renforcer la journalisation, une semaine. Corriger une exposition de données, quelques heures. Sur un système mal lisible, les mêmes opérations prennent des semaines, parfois des mois, parce que l’existant n’offre plus de prise claire.

Quand l’équipe sécurité demande d’ajouter un contrôle d’accès sur un endpoint et que l’estimation revient à “trois semaines minimum, et on n’est pas sûrs de l’impact sur les autres flux”, le sujet n’est plus la sécurité. C’est l’architecture. Un système sain remédie une vulnérabilité critique en quelques jours. Quand ce délai passe à plusieurs semaines, voire quand certaines corrections sont classées “trop risquées”, le système est en situation de dette de sécurité active.

Pour un audit de conformité, la capacité à documenter un flux de données de bout en bout est un bon test de lisibilité. Si cette documentation nécessite d’interroger quatre personnes différentes et de lire des scripts de déploiement pour reconstituer le chemin, le système n’est plus auditable efficacement.

Les contournements se multiplient

Les équipes compétentes trouvent toujours des moyens de continuer à livrer. C’est à la fois une force et un masque. Le problème n’est pas le contournement ponctuel, c’est le moment où le contournement devient le mode de fonctionnement normal.

Export CSV manuel avant retraitement dans un tableur. Double saisie entre deux sous-systèmes qui ne communiquent plus. Script local sur le poste d’un développeur, jamais industrialisé, qui réconcilie des données chaque matin. Correctif appliqué directement en base de production parce que le déploiement applicatif est trop risqué. Règle métier implémentée dans un fichier Excel plutôt que dans le système, parce que “c’est plus rapide comme ça”.

Chacun de ces contournements, pris isolément, est une solution pragmatique à un problème réel. Mais leur accumulation est un signal fort : le système ne porte plus correctement l’activité. Et cette divergence est rarement visible dans les dashboards de monitoring, elle ne se découvre qu’en parlant aux opérationnels.

Y répondre tôt

Quand plusieurs de ces signaux s’additionnent, le premier réflexe n’est pas de réécrire. Le premier réflexe est de nommer le problème et de le rendre lisible.

Cartographier les flux et les dépendances. Identifier les zones de fragilité. Repérer les modules qui concentrent les risques. Comprendre où se logent les contournements. Estimer ce que coûte réellement le maintien de l’état actuel : temps de développement supplémentaire, coût des incidents, coût d’opportunité des fonctionnalités non livrées.

C’est cette estimation qui permet de défendre un budget de modernisation auprès de la direction, sur la base de données concrètes plutôt que d’un sentiment d’inconfort technique.

L’étape de diagnostic est rarement spectaculaire. Elle est presque toujours décisive.

Conclusion

Un système difficile à faire évoluer se reconnaît moins à sa taille qu’à ses symptômes. Zones intouchables, estimations fragiles, connaissance trop locale, sécurité coûteuse, contournements récurrents : quand plusieurs de ces signaux s’additionnent, il est temps de reprendre la lecture du système avant de prétendre le transformer.


Identifier ce qui bloque l’évolution avant de prétendre transformer : ces lectures structurent nos missions. Modernisation et maintien en condition de confiance.