Chères DSI, vous qui cherchez à ce que tout action entreprise ait un retour sur investissement positif, je me permets de vous présenter celle à laquelle vous ne pensez jamais mais qui trotte dans la tête de tout développeur compétent : l’optimisation de code.
Vaste programme. L’optimisation de code peut porter sur plusieurs aspects: le coût de traitement, la quantité de mémoire utilisée, la taille des entrées/sorties et la lisibilité. Cela ne vous parle peut être pas et vous préfèreriez que l’on avance sur les fonctionnalités attendues par l’utilisateur, mais ces 4 points peuvent alourdir la facture.
Le coût du traitement
Examinons le premier point. Consacreriez-vous 1 jour pour gagner 0,01 seconde dans une fonction ? Non. Et si la fonction est appelée 1000 fois par jour dans l’usage normal de votre logiciel ? 10 s par jour, soit 33 minutes par an, c’est négligeable. Et si l’application est utilisée par 1000 personnes dans l’entreprise ?
Cela représente alors ⅓ d’etp. Cela devient rentable. Ce type d’optimisation ne manque pas. Entre les données qui auraient pu être mises en cache, les algorithmes mal choisis (tris, récursivité, …), les composants complexes alors que l’utilisateur n’attend pas autant de sophistication, … les petits ruisseaux font les grandes rivières.
L’utilisateur attend et si vous louez des serveurs, vous paierez des machines plus puissantes pour éviter un service trop dégradé. Si l’utilisateur n’est pas un employé mais un client, vous présenterez un mauvais service à cause des temps de réponse. Et devant la multiplication des erreurs, oui, même gagner 10 ms est rentable.
L’espace mémoire
Le deuxième point est lié au premier. Le problème technique est classique. Le programme crée des objets et lorsqu’ils ne sont plus utilisés, on les oublie. Un traitement viendra les supprimer. Et la taille des mémoires a tellement augmenté, est-ce encore un problème ? Complètement.
L’impact est moins visible sur l’ordinateur du client, mais lorsque les programmes tournent sur un serveur qui gère des centaines de sessions, cela peut coûter très cher pour obtenir un service décent alors qu’un peu d’hygiène numérique aurait évité le problème.
La taille des données échangées
Mais parlons de la taille des entrées et des sorties. J’ai audité des applications où pour afficher un titre, le développeur récupérait toutes les propriétés de l’objet. L’identifiant et le titre auraient suffit. L’application cliente devant gérer en arrière plan des milliers d’autres objets avec leurs titres, le temps de réponse était catastrophique.
Le temps d’accès à la donnée n’est pas négligeable lorsque cette dernière est sur un serveur distant. Mais l’optimisation ne s’arrête pas à la quantité de données métier échangées. Il existe des algorithmes de compression. Oubliez le Zip qui n’est plus adapté aux fichiers actuels. 7-zip sera plus efficace pour stocker ou transférer du texte.
La maintenabilité
Dernier écueil du code, sa lisibilité. Reprendre la maintenance de logiciels écrits par des générations de développeurs est une épreuve qui ferait même reculer Hercules. Les guidelines non respectées aboutissent à un code où la moindre modification fera perdre du temps. Imaginez une immense chambre non rangée et vous devez trouver un objet.
Les développeurs perdront leur temps dans ce musée des horreurs. Et vous perdrez votre argent en attendant que les fonctionnalités soient réalisées. Les risques de régression seront importants. Pour éviter cela, une relecture croisée par pair peut éviter bien des difficultés.
—
Si mes conseils vous semblent erronés, observez les services des GAFAM. Ce ne sont pas les plus complets mais les plus efficaces. Le temps c’est de l’argent même s’il s’agit d’une milliseconde. Alors, ils n’hésitent pas à investir dans ces problématiques. Ils ont construit leur fortune sur le code et en connaissent son importance.
Alors oui, chères DSI, je parle encore du legacy code. Et le coût est réel. Permettez-moi de prendre des initiatives pour ne plus subir les conséquences des erreurs de mes prédécesseurs. Ces quick wins, vous seront toujours rentables. Et bonus, les IA, même installées localement, excellent dans cet exercice.
