Chères DSI, comme dans toute histoire, cela commence dans la joie. Un projet attendu de longue date arrive enfin. Basé sur la dernière technologie à la mode, il se promet de répondre à tous les besoins métiers de ces utilisateurs. Et la promesse est tenue. Après tant d’efforts, les fonctions principales de l’entreprise ont été informatisées.
Cette version 1.0.0 sera la base d’un système d’information performant, moderne et évolutif. Alors les versions s’enchaînent, acquérant toujours plus de fonctionnalités nécessaires au développement de l’entreprise. La base est saine, le cadre de travail est moderne, les équipes sont motivées … en avant pour 1000 ans.
Le métier se réinvente, ses besoins aussi. Alors, à la demande des donneurs d’ordres, les développeurs mettent à jour le logiciel phare. Nul n’est parfait. Et les équipes de validations interviennent pour prévenir les erreurs qui bloqueraient l’activité. Le code grandit, grandit, grandit …
Et le temps passe. 2 ans, 3 ans. Le cadre de travail est passé en version 2.0. Les apports sont négligeables pour les architectes logiciels. Inutile de dépenser son énergie pour des évolutions mineures. Continuons à implémenter le métier. Les développeurs identifient du code à ‘refactorer’. Ils corrigeront à l’occasion.
Cela fait 5 ans que l’application sur le métier des utilisateurs. Les utilisateurs en sont ravis et en demandent toujours plus. Et le métier change, évolue. Et les contraintes juridiques doivent être prises en compte. Et il faut intégrer les échanges avec les SI des partenaires.
En parallèle de cette boulimie métier, les architectes prennent conscience que le domaine technique aussi a évolué. Serveurs, systèmes d’exploitation, logiciels supports, cadre de travail, … tout cela a évolué. Pour autant, depuis la version 1.0.0, le petit prodige n’a pas évolué.
Et les développeurs se sont lassés. Travailler sur un même projet, toute sa vie, sans considération autre qu’être un développeur parmi d’autres … alors la connaissance s’est progressivement perdue. Nul n’est irremplaçable. Les responsables n’ont cure de cette situation. Il faut rénover.
Un grand chantier se lance en parallèle des évolutions métiers, les évolutions techniques et d’architecture. Sauf que les effectifs ne sont pas extensibles. Même si la prestation externe est disponible, le coût en est élevé. Coût, évolution, délai, voici le dilemme de tout responsable.
Alors, il priorise. Et les évolutions techniques seront repoussées à la prochaine version. Ou à la version suivante. En réalité, un module sera réalisé mais jamais généralisé. 10 ans plus tard, le petit prodige est devenu un mastodonte. Un mammouth qu’il faut maintenir en vie pour le bien de la boîte.
Et le coût explose. La maintenance devient difficile. Quel informaticien voudrait s’embarquer dans une technologie ancienne dont les responsables souhaitent minimiser les coûts ? Et les éditeurs des bases techniques sur lesquelles il repose (système d’exploitation, bases de données, navigateur, …) menacent de ne plus maintenir.
Les informaticiens s’efforcent de proposer des solutions techniques (machines virtualisées, mise à jour, …). Même si le coût est élevé, il est minime par rapport à un défaut du logiciel. Alors on s’adapte dans un cercle vicieux toujours plus contraignant. Les architectes de la première heure sont partis vers d’autres projets. Seuls les futurs retraités restent motivés.
Un nouveau projet plus moderne, plus performant est alors mis en projet. Et le cycle reprendra … sans effacer les ancêtres auprès de l’utilisateur final.
Chères DSI, cette histoire vous la connaissez très bien. De génération d’informaticiens, tout le monde la connaît. Et tout le monde sait comment éviter le drame. Mais les décideurs ne font rien. Alors pour la prochaine fois :
- les évolutions techniques doivent être prises en compte régulièrement
- il faut reconnaître ses erreurs au lieu de s’entêter
- et le code, cela se refactorise et s’épure de temps en temps. Et tant pis si cela fait plus de travail de validation.
Sinon, la malédiction du legacy code se perpétura sur les futures générations de développeurs.
