Lit de Procuste
Sortir des ronces #6
[tech-debt]
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 !