Editorial

Les gaspillages de l’informatique de gestion

Gaspillage DSI

Il est admirable de pouvoir contempler un métier optimisé: quand on le découvre, on est en admiration devant la sagesse qui a été incorporée aux méthodes de travail. Les experts peuvent vous expliquer la raison du moindre geste. Regardez un pilote d’avion ou un pompier travailler et vous serez certainement en admiration. Même un restaurant bien tenu est impressionnant. Quand on découvre l’informatique de gestion, la première impression est très différente. Vous avez souvent le sentiment de perdre des journées ou des semaines. Cette impression sera confirmée en regardant les budgets qui donneront l’impression d’un immense gâchis. Et cette situation regrettable n’est pas le résultat d’une incompétence pathologique: de nombreux acteurs de l’informatique d’entreprise sont des professionnels motivés. Ils font de leur mieux avec les stratégies et les technologies choisies.

Coût et embarras des licences

Augmentation de prix pour clients captifs

En 2019, le premier sujet qu’un DSI abordera autour d’un verre sera peut-être celui des licences logicielles. Des indices concordants montrent un mouvement généralisé d’augmentation des coûts de licence pour les clients existants. Il y a plusieurs astuces pour cela: passer de jetons à licences nommées (un jeton ne peut-plus être partagé); mais aussi passer de l’achat à une location par an aux tarifs en fin de compte plus onéreux. On demande aussi souvent de payer des licences pour des environnements de développement ou de test, ce qui n’était pas le cas avant.

Coût sans lien avec la complexité et l’innovation

Il serait naturel que le coût d’un logiciel dépend de sa complexité et de la nouveauté des innovations. Les innovations commencent comme des produits de luxe, et deviennent de plus en plus abordable avec le temps. Une voiture populaire de 2019 est ainsi mieux équipée qu’un modèle de luxe 20 ans avant. Pour le logiciel, l’état final naturel est d’avoir une solution open-source sur un sujet qui est devenu une commodité.

Cette démocratisation n’existe souvent pas en informatique de gestion. De nombreuses entreprises paient toujours des sommes très importantes pour utiliser une vieille solution stable. On paie à prix d’or un assemblage de technologies banales emballées dans un joli discours marketing. C’est encore plus le cas pour les solutions Cloud. Les coûts des serveurs sont alors mélangés de façon opaque avec les coûts du logiciel, et tout ceci est arrondi au prochain multiple de 10€/mois/utilisateur.

Le coût d’un logiciel est parfois lié aux économies réalisées. Le logiciel est cher, mais permets des économies, et il ne semble pas choquant que l’éditeur du logiciel capture une partie de cette valeur. Ce mécanisme est souhaitable au début, et c’est ainsi que les pionniers d’un sujet contribueront à financer le logiciel qui les sert. A long terme, cette situation n’est pas acceptable, et, dans un marché transparent, on s’attend à ce que le prix converge vers le coût de production et une marge raisonnable. Plus vite cette transition a lieu, plus l’économie progresse. Malheureusement, le marché du logiciel d’entreprise n’est pas transparent, et un vendeur doué peut maintenir un prix scandaleux très longtemps.

Serveurs de licence

Vous êtes heureux, vous avez enfin acquis la licence hors de prix pour ce logiciel magique, et vous êtes prêt à l’essayer. pas si vite, vous devez d’abord installer un serveur de licences pour partager les jetons. Très souvent, ce serveur de licence sera le composant le plus souvent en panne de votre infrastructure.

Opérations et interfaces bancales

Je suis un client heureux d’un jeu vidéo en ligne pour lequel j’ai payé 60€ au total ces 5 dernières années. La petite entreprise qui gère ce jeu a des millions de clients, et maintient des milliers de serveurs pour supporter le jeu en ligne. Autant que je sache, de nombreux processus sont automatisés, et, en particulier, le programme installé sur mon ordinateur est mis à jour automatiquement. Faire la même chose en entreprise est un casse tête.

Bien que ce soit très facile à développer, la plupart des logiciels d’entreprise ne comprennent pas de mise à jour automatique des clients. C’est la raison principale pour laquelle les clients lourds ont mauvaise réputation, et des applications web médiocres sont maintenant devenues la norme. Côté serveur, le tableau n’est pas plus brillant. Certaines mises à jour peuvent mettre plusieurs jours pour être déployées sur un serveur. C’est la conséquence de procédures manuelles, et aussi de mauvaises performances.

Les interfaces sont toujours un cauchemar. Un gros problème est l’utilisation de technologies d’interface obscures. Et très souvent, les interfaces ne sont pas suffisamment robustes, nécessitant de les enrober dans une coque logicielle qui compensent leurs défauts, par exemple en implémentant une gestion d’erreur de qualité industrielle. Il arrive aussi que certaines fonctions d’un logiciel ne soient pas accessibles par les interfaces fournies, les procédures de contournement ne sont jamais élégantes.

Faible productivité des utilisateurs

L’informatique peut gaspiller de l’argent dans ses développements, mais le plus gros pouvoir de nuisance est sans aucun doute la faible productivité des utilisateurs. En effet, les salaires des employés d’une entreprise sont très souvent beaucoup plus importants que le budget informatique. D’autant que les outils sont aussi utilisés par les sous-traitants. Un mauvais outil informatique peut facilement faire perdre 10 à 15% de temps aux employés. Ce gâchis est dû à une mauvaise ergonomie, de mauvaises performances, et les contournements.

Ergonomie catastrophique

La perte de temps induite par la plupart des applications métiers est très visible quand on compare le temps passé dans un tableur par rapport à une application web. Dans un tableur, on peut utiliser les nombreux raccourcis et les multi-sélections pour effectuer plusieurs opérations à la fois. Une action qui se fait en un filtre et une mise à jour massive de cellules multiples peut se transformer en une séance de 30 minutes:

  • Recherche avec un critère
  • Sélectionne un élement et ouvrir la page de détail
  • Ouvrir la page de modification
  • effectuer la modification sur un objet
  • Effectuer encore une foois la recherche et continuer avec la prochaine ligne.

Du côté de l’application web, mettre à jour 50 objets est une séquence de 250 actions, alors qu’il y en a seulement deux dans le tableur.

Performance

Les mauvaises performances des applications rendent la mauvaise ergonomie encore plus douloureuse. Il y a deux niveaux.

  • Un problème de performance aigu va faire durer certaines actions plusieurs minutes, ou plusieurs dizaines de secondes. C’est souvent dû à des erreurs d’algorithme. Ces problèmes aigus sont très dommageables, mais sont souvent résolus assez rapidement, car ils rendent le travail invivable.
  • Une performance médiocre veut dire que les actions durent plusieurs secondes. Typiquement, un développeur web est content quand l’affichage d’une page prend de 3 à 7 secondes. Cela ralentit tout le travail, et contribue insidieusement à des pertes de productivité.

Contournements

De nombreuses applications métier ne sont jamais réellement terminées. Des actions métiers nécessitent des contournements et bricolages. Par exemple, un champ ‘commentaire’ est rempli de codes cryptiques qui remplacent les fonctions manquantes. Parfois, une seule action métier nécessite une succession d’actions dans l’outil. Ainsi, comme développeur, je dois souvent fermer un bug, et ouvrir un nouveau bug lié pour de nouvelles complications qui sont apparues, et seront réparées plus tard. Le nouveau bug faite partie du même projet et du même composant que le bug d’origine. J’ai été très énervé que l’outil de gestion de bugs que j’utilise ne propose pas cette fonction en 1 clic.

Obsolescence

Remplacement d’une application historique

Un scénario courant: votre entreprise dispose d’une vieille application développée dans les années 70. Cette application a des écrans de type minitel, mais elle est très stable, et souvent ne coûte pas grand chose. Vous pourriez aussi avoir une vieille application web des années 2000 qui n’est pas très belle mais rapide. Vous devrez à un moment vous en séparer. C’est souvent quand vous ne pouvez plus acheter de serveurs, ou mettre à jour le logiciel. D’autres fois, les entreprises choisissent de s’auto-infliger la punition d’une migration.

Ces projets sont toujours plus coûteux et complexes que prévus. Dans la plupart des cas, le résultat final est une application pire que celle qu’elle remplace. La première erreur est toujours de sous-estimer la complexité. Les jeunes travaillant sur le projet penseront toujours que la complexité de l’ancien système est due à des choix idiots faits par leurs anciens. Dans la réalité, la plupart des fonctions de logiciels anciens ont de bonnes raisons pour exister. Les informaticiens d’il y a 30 ans n’étaient pas plus idiots que nous. Souvent, ils devaient d’ailleurs faire preuve de plus de rigueur pour fournir une application fonctionnelle avec les technologies de l’époque. Si vous remplacez votre vieille application par un développement spécifique, vous trouverez rapidement les manques pendant les tests, et vous serez capables de rajouter les fonctions manquantes. Le surcoût sera raisonnable, souvent de 15 à 30% du budget prévu à l’origine. Si vous remplacer votre application obsolète par un outil sur étagère, il sera peut-être complètement impossible de rajouter les fonctions manquantes. Vous pouvez ainsi facilement doubler le coût prévu à l’origine, avec une solution pire que votre existant.

Les fameuses mises à jour

Vous avez une belle solution sur étagère en place. Vous l’avez probablement déployé il y a une dizaine d’années, et vous espérez vous en servir encore pendant 10 ans. Par contre, une version du logiciel n’est typiquement supportée que 3 ans. Vous en êtes peut-être à votre troisième projet de mise à jour. Vous ne serez probablement pas capable de déployer une nouvelle version tout de suite, et vous n’aurez souvent qu’un à deux ans de support restant le jour où vous installez la nouvelle version. Vous garderez une version non supportée quelques temps avant de faire les mises à jour. Ces projets sont de complexité variable suivant le niveau de développement spécifique et les changements apportés par les vendeurs de logiciel. A la fin, vous pourriez investir près de la moitié de votre budget sur un sujet à ces mises à jour qui, la plupart du temps, n’apportent pas grand chose d’un point de vue métier.

Développements inefficaces

J’ai vu la scène des centaines de fois dans ma carrière: un responsable métier demande une nouvelle fonction qui peut se résumer en deux phrases, et ces phrases n’ont même pas de pièges à la “y’a qu’à faut qu’on”. Pourtant, l’effort pour effectuer le développement sera souvent significatif, et le responsable métier sera toujours choqué par le prix final. On entend souvent des petites remarques de type ‘chaque mot prononcé vous coûtera 2000€ ‘. Parfois, cette inefficacité est due au manque d’expérience de l’équipe de développement, mais pas toujours.

Logiciel sur étagère

Pour étendre les fonctions d’un progiciel, vous avez besoin d’interfaces de développement (API) pour

  • Rajouter des actions dans les pages de l’application
  • Effectuer les actions nécessaires sur les objets métier

Les deux types d’interfaces peuvent être manquantes, ou incroyablement peu pratiques. Une majorité de l’énergie est souvent dépensée à comprendre comment ‘attaquer’ le progiciel. Dans le meilleur des cas, une interface maladroite et manquant de rapidité existe, mais dans certaines situations, il n’y a pas d’autre moyen que de modifier des composants du standard. Cela nécessite souvent des pratiques illégales, comme la décompilation, et rendra la prochaine mise à jour un enfer.

L’infrastructure pour les développements spécifiques

Les développements spécifiques vous permettent d’obtenir exactement la logique dont vous avez besoin. Mais il est aussi nécessaire de réinventer à chaque fois des fonctions basiques comme la sécurité, la gestion des transaction, les traces d’audit, et la présentation des informations sur les écrans. Dans le meilleur des cas, votre équipe de développement locale a créée sa propre bibliothèque pour cela, mais les fonctions sont probablement limitées et incomplètes, car l’encadrement poussera toujours à limiter l’effort sur ces briques qui n’apportent pas de valeur visible. En résultat, un développeur pourra passer 5% de son temps à implémenter la logique métier demandée, et 95% de son temps à compléter l’infrastructure manquante, souvent de façon non répétable.

L’embarras des tests

Un développeur passe 50% de son temps à écrire une fonction, et la seconde moitié à tester et corriger. Il y a typiquement une dizaine de modifications à faire avant qu’un développement soit suffisamment stable pour atteindre la prochaine étape. Pour tester une fonction, vous avez besoin d’un serveur de test. Cela peut être aussi simple que de déployer un fichier sur un serveur installé sur votre propre PC. Mais dans le pire des cas, vous devez déployer votre logique sur un serveur distant, et cela peut prendre jusqu’à 30 minutes juste pour lancer les tests. C’est parfois encore plus lent quand il est nécessaire de créer des données.

Orgies de matériel

La loi de Moore prévoit que la puissance de l’électronique double tous les 18 mois. C’est probablement une des causes principales de la non-chalande du monde de l’informatique sur le sujet des performances. Quelles que soient les erreurs commises, elles seront rattrapées par la nouvelle génération de microprocesseurs. Cette tendance est dangereuse, même s’il ne faut pas partir dans l’extrême inverse: développer en langage machine en 2019 n’a pas de sens. D’une façon générale, on doit probablement adopter les technologies qui apportent un vrai plus pour un surcoût de performance raisonnable (+20%) : le confort d’une vrai base de données ou de la gestion mémoire de java sont des choix sages.

Mais l’informatique d’entreprise, et surtout l’internet grand public sont allés trop loin: de nombreux standards de l’industrie sont 10 à 100 fois plus lents que des alternatives offrant une productivité comparable. Ainsi, l’utilisation massive de langages interprétés comme PHP ou javascript est le plus choquant. Ces langages ne sont pas beaucoup plus pratiques que des langages compilés comme C++ ou java, et les langages compilés seront beaucoup plus rapides, souvent par un facteur de plus de 10. En résumant, avec une bonne technologie, vous divisez vos factures de cloud par 10.

Gestion de plus grosses équipes

Comme nous l’avons vu, la maintenance d’une application en entreprise est faite de nombreuses tâches redondantes. Vous devez aussi gérer toutes ces activités, et cela augmente encore le coût. L’augmentation est pire que linéaire. En effet, une petite équipe de 5 à 7 personnes peut généralement presque autogérée avec très peu de procédures. Si votre équipe passe à 15 ou 20 personnes, vous devrez ajouter de nombreux rituels, et vous aurez de nombreux problèmes de communication. Ces pertes peuvent facilement atteindre 30 à 50% de l’effort initial. Donc, vous ne serez pas seulement 3 fois plus inefficaces en utilisant de mauvaises technologies, mais probablement 5 fois plus inefficaces.

Solutions

Nous n’avons pas évoqué ici d’autres causes d’inefficacités majeurs, comme les conflits entre organisations. Le manque de formation et de compétences de l’équipe projet peut aussi avoir des conséquences importantes. Les gros choix stratégiques irréparables semblent tout le temps liés au choix d’une mauvaise approche et d’une technologie inadaptée. Dans certains cas, des solutions cloud sur étagère sont certainement la bonne solution. Il faut juste s’assurer que l’on saura changer de fournisseur. Dans les autres cas, la bonne solution est probablement une plateforme lowcode. Open Lowcode fournit une plateforme open-source, sans coût de licences. la solution est basée sur des technologies répandues, qui éviteront l’obsolescence dans les 20 ans qui viennent. Et l’équipe Open Lowcode a une seule priorité: fournir des outils robustes permettant des développement faciles, et une bonne ergonomie pour les utilisateurs. Les résultats actuels sont très encourageant, et les possibilités d’amélioration sont infinies.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *