Lit de Procuste

Il y a environ 25 ans, une de mes toutes premières missions de conseil a consisté à auditer la conception d'une application Visual Basic installée dans des agences, et qui permettait entre autre d'imprimer l'organigramme de l'agence : une simple arborescence de rectangles contenant chacun un nom de service et un nom de responsable.

Toutes les agences n'avaient pas la même organisation. Détail curieux : pour certaines d'entre elles le programme traçait juste en dessous de la position la plus élevée, un rectangle anonyme contenant la mention :

Responsable Fictif —

J'enquêtai auprès du Maître d'Ouvrage :

— Ça consiste en quoi, le travail d'un Responsable Fictif ?
— Oh ça n'existe pas. Ce n'est pas un vrai poste.
— Ah ?
— Oui : on a deux types d'agences dans le groupe : les grandes, qui ont 5 niveaux hiérarchiques, et les petites qui en ont seulement 4.
— Je vois… (Je ne voyais pas).
— Au début l'appli n'en tenait pas compte. Quand on l'a signalé en recette, le prestataire a pris acte de l'information, puis après quelques jours nous a dit que pour des raisons techniques il était préférable que toutes les agences comportent 5 niveaux, et que le modèle serait trop complexe s'il fallait gérer un nombre variable de niveaux.
— Je vois.
— Par trop complexe, ils voulaient dire "qui coûte plus cher à réaliser", tu vois ce que veux dire.
— Je vois.
— On a donc décidé de suivre leur suggestion et de créer un niveau intermédiaire exprès pour les petites agences. On l'a appelé Responsable Fictif, et on a émis une note d'instruction à ce sujet.

Après un examen du code et du modèle de données, j'élucidai l'origine du Responsable Fictif : les concepteurs de l'application ne savaient pas ou ne voulaient pas représenter des liens hiérarchiques au moyens de relations. Ils avaient donc opté pour une simple table :

IdtAgc : CHAR(10)
Niv : Numeric(5)
NomSce : CHAR(50)
NomRspSce : CHAR(50)

Une requête simple également ramenait pour une agence identifiée l'ensemble de ses responsables, ordonné par niveau. Le nombre de niveaux distincts n'était jamais inférieur ni supérieur à 5 : toutes les "petites" agences comportaient une ligne comme celle-ci :

"CHARENTON",2,"Responsable Fictif","-"

Fort de cette simplicité, et dans la plus pure tradition du lit de Procuste, le programme VB imprimait benoîtement 5 niveaux quelque soit l'agence.

Cette décision de conception représente t'elle un cas d'endettement technique ? Oui et Non.

❌ elle concerne la qualité externe et non la qualité interne

❌ elle impacte le système et l'organisation présents, non l'évolution future

✅ elle dégrade l'état de l'art de l'application, notamment sous l'aspect du Sens Partagé

✅ elle a été prise parce qu'il n'y avait plus le temps de bien faire

✅ une solution à la fois plus élégante et plus adaptée au problème existe

❌ cette solution n'est pas vraiment à la portée de l'équipe

Stay Tuned !