TTM #4 - Achat d'un éditeur logiciel, mesurez la qualité de votre investissement

Quentin MARC
Ingénieur & Fondateur Loop Crew

Introduction

Si vous envisagez l’achat d’une société dont une partie significative des actifs est constituée de codes sources, vous devez être en capacité d’estimer leurs valeurs. L'évaluation de ces actifs peut vous aider à identifier les risques potentiels induits par l’existant technique et à mesurer la valeur réelle de l'entreprise.

Cet article vise à introduire les risques principaux lors de l’achat d’un SaaS. Nous apprendrons aussi à détecter les indices qui peuvent vous mettre la puce à l’oreille.

Cependant, si votre intention d’achat est réelle et que vous n’êtes pas développeur confirmé, vous devrez réaliser un audit des solutions techniques par un professionnel.

Cet article s’appuie sur notre méthodologie d’audit. Pour plus d’informations, voici une étude de cas sur le sujet.

Bonne lecture !

Dette technique : quésako

L’objectif d’un audit technique est de mesurer la dette technique accumulée par l’entreprise sur les solutions développées. Mais de quoi s’agit-il ?

Définition : La dette technique est une dette financière contractée en échange de vélocité ou à cause de mauvais choix techniques. Tout comme pour une dette financière classique, l’entreprise ayant contractée une dette technique devra payer des intérêts et finira inévitablement par rembourser sa dette.

Plus concrètement, il est fréquent qu’un développeur “laisse du bazar” derrière lui soit parce qu’il souhaite accélérer un développement, soit parce qu’il ne se rend pas compte qu’il ne procède pas de la bonne façon.

Ce “bazar”, s’il n’est pas vite corrigé, ralentira les prochains développements. Au début, la gêne sera à peine perceptible. Plus tard, la dette risque de s’accumuler de manière exponentielle jusqu’à rendre l’équipe de développement presque immobile. Voici un schéma qui illustre parfaitement ce phénomène.

Impact de la dette technique sur un projet de développement.

Comment estimer le coût des intérêts et du remboursement ?

Intérêts : Durée de développement supplémentaire nécessaire pour développer une fonctionnalité par rapport à un scénario de développement idéal.

Remboursement : Durée de réusinage nécessaire pour revenir à un scénario de développement idéal.

Il n’est pas rare de découvrir des entreprises n’ayant jamais remboursé leur dette technique. Attention, leurs codes sources sont de véritables bombes à retardement…

Les 4 piliers de la dette technique

Voici une rapide description des 4 sources possibles de dette technique, classées par ordre d’importance.

1. Choix des technologies

Le choix des technologies est le premier élément à considérer lors d'un développement. Les technologies choisies peuvent avoir un impact significatif sur la vitesse de développement, la performance et l’évolutivité d’une application.

En règle générale, plus une technologie est adoptée par une large communauté de développeurs, et si possible avec une courbe d’adoption en croissance, plus elle est pertinente.

Si le choix d’une technologie est source de dette technique, vous devrez la remplacer par une technologie plus adaptée et réécrire tout le code lié de près ou de loin à cette technologie. C’est un travail terriblement long.

Comment savoir si le SaaS que j’achète est basé sur de bonnes technologies ?

Demandez la liste des technologies utilisées à l’équipe technique. Plus il y en a dans la première liste, plus c’est bon signe. Et inversement avec la seconde liste. Attention, ces technologies n’est pas exhaustive.

Technologies “adoptées”

  • Front : Next.js, Vue.js, React
  • API : Nest.js, Express, Django, Spring
  • Communication : GraphQL, REST
  • Stockage : PostgreSQL, MongoDB, S3
  • CI/CD : Docker, Kubernetes

Technologies “dépréciées”

  • Front : HTML + CSS + Javascript (sans framework)
  • API : PHP, Java EE, .NET
  • Communication : SOAP, XML-RPC
  • Stockage : MySQL, Oracle Database

2. Conception des architectures

La seconde source de dette technique la plus impactante est la conception des architectures, c’est à dire la façon dont le code a été structuré et organisé. Moins l’organisation est claire, plus le code s’apparente à un sac de noeud et plus il sera difficile de réaliser des modifications ou des ajouts. Dans les cas les plus extrêmes, nous parlons de code spaghetti.

Nous ne nous étendrons pas sur cette partie car seul un développeur est en capacité d’apprécier la qualité de l’architecture d’un code. Vous ne pourrez pas le faire vous même.

Retenez simplement que démêler un sac de noeud de sorte à passer d’un code sans réelle architecture à un code à l’architecture rigoureuse demande à minima des semaines de travail.

3. Qualité du code

La troisième source de dette technique provient de la qualité du code en lui-même, c’est à dire à quel point le “langage est maitrisé par le développeur”. L’outil SonarQube permet de réaliser un scan de votre code source afin d’en estimer la qualité. Il mesure plusieurs critères et impose, par défaut, les standards suivants :

  • failles et alertes de sécurités : 0
  • sources de bugs potentiels : 0
  • code déprécié ou écris d’une façon étrange : 0
  • code dupliqué ≤ 3%
  • couverture de tests ≥ 80%

Voici 2 analyses illustrant des situations aux opposés en terme de dette technique. Pour information, SonarQube estime à 200 jours de travail le temps nécessaire pour régler la dette technique associée à la qualité du code.

Situation 1 : Qualité de code optimale
Situation 2 : Ancien projet personnel (avant études d’ingénierie informatique), qualité de code douteuse...

Avant de mandater un auditeur, vous pouvez demander aux équipes de développement de la société que vous souhaitez racheter de réaliser un scan SonarQube. Vérifiez bien qu’ils vous envoient la vue “Overall Code” et non “New Code”, autrement SonarQube analysera uniquement la qualité du dernier ajout dans le code et non le code dans sa globalité. Demandez leur également la vue mesurant la quantité de travail nécessaire pour résoudre les problèmes détectés.

Ps: si l’équipe de développement ne sait pas comment réaliser le scan, c’est mauvais signe 😉

4. Documentation du code

Pour terminer, il reste une dernière source de dette technique : la qualité de la documentation technique fournie avec le code.

Contrairement aux idées reçues, un développeur ne lit pas du code comme un traducteur lirait une langue étrangère. Il doit comprendre les logiques développées, c’est à dire le rôle de chaque algorithme, les données qu’il prend en entrée et celles qu’il génère en sortie. Pour cela, il peut s’appuyer sur plusieurs documents :

  • un Readme : il s’agit du manuel d’utilisation du projet. Il décrit l’installation, l’utilisation, les préconisations et les prérequis associés à l’utilisation du code source. Il se trouve directement dans le projet.
  • des commentaires : il s’agit de textes explicatifs écrits juste au dessus de lignes de code complexes ou importantes.
  • des tests : il s’agit de scripts dont le rôle est de vérifier le bon fonctionnement des codes sources développées. Ces tests décrivent par design le comportement attendu des algorithmes.
  • documentations auto-générées : il s’agit de documentations générées automatiquement par certaines briques techniques. Par exemple, Apollo GraphQL est une technologie permettant la bonne communication entre le front et l’API. GraphQL génère automatiquement le “mode d’emploi” de l’API sur laquelle il est installé.

L’absence de documentation peut avoir un impact important. Un nouveau développeur devra réaliser beaucoup de retro engineering sans elle. Toutefois, cette source de dette technique peut être réglée rapidement (quelques jours maximum) par les concepteurs du code source.

5. Autres sources de dette technique

Voici une liste non exhaustive d’autres problèmes, faciles à détecter, qui vous permettront d’apprécier la qualité des solutions techniques que vous envisagez d’acheter. Ces problèmes appartiennent aux 4 catégories précédentes mais nous préférons les lister ici pour une meilleure compréhension :

  • Hébergement non cloud : à part cas très spécifiques d’optimisation des coûts ou de sécurité des données, traduit des méthodes de travail “à l’ancienne”.
  • Mauvais dimensionnement des infrastructures : en cas de pic de traffic, les applications risquent de “ramer” ou de “tomber”. À l’inverse cela peut coûter plus cher que nécessaire.
  • Failles de sécurité : les actifs n’ont pas une protection proportionnelle à leur sensibilité.
  • Codes et commentaires en français (ou franglais) : seul un développeur français peut les manipuler, ce qui représente une contrainte en cas d’embauche ou de revente à l’internationale.
  • Fichiers de code trop longs (> 500 lignes) : Code spaghetti.
  • Absence de tests : pertinent pour un prototype, pas pour une longue exploitation en production. C’est une sécurité qui vise à éviter l’introduction de bugs face aux utilisateurs en cas de modification du code existant.
  • Absence d’environnement de staging ou de pré-production : les nouveaux développements ne sont pas testés sur une infrastructure bac à sable (les tests en local ne sont pas suffisants). Cette sécurité vise à éviter l’introduction de bugs face aux utilisateurs en cas de modification du code.

Les actifs à auditer

L’expert que vous mandatez devra auditer les actifs suivants :

  • chaque code source développé par l’entreprise
  • les bases de données de l’entreprise
  • les infrastructures sur lesquelles sont déployées les codes sources
  • les solutions auto-hébergées par l’entreprise (situation fréquente dans la communauté des développeurs)

Pour chaque actif audité, votre expert devra vous remettre une grille d’évaluation de l’actif afin que vous ayez une sorte de photographie de l’existant technique que vous achetez.

Est-ce grave docteur ?

A l’issue d’un audit technique, 3 conclusions sont possibles :

  1. Pas de dette technique, les développements peuvent continuer à partir de l’existant.
  2. Une dette technique modérée, quelques travaux sont recommandés avant la poursuite de nouveaux développements.
  3. Une dette technique endémique, une réécriture complète des codes sources est préconisée.

Le scénario 3 semble catastrophique et pourtant, il ne l’est pas forcément. C’est une mauvaise nouvelle certes, mais pas au point de bloquer le rachat. La réécriture d’un code source est un passage obligatoire pour certaines entreprises. Par exemple, Uber explique dans son blog tech avoir réécrit chaque partie de son code source, entre 2014 et 2017.

La valeur d’une entreprise commercialisant un SaaS réside dans l’ordre :

  • Dans sa base clients : évaluation du churn, du panier moyen et de la possibilité de réaliser des ventes croisées.
  • Dans ses ressources humaines : les équipes et processus sont-ils opérationnels ?
  • Dans son existant technique : codes sources et infrastructures.

Une réécriture totale n’impacte pas les 2 premiers points. De plus, une réécriture basée sur des technologies modernes et ne nécessitant pas d’exploration des besoins utilisateurs (l’entreprise connait ses clients et sait précisément ce dont ils ont besoin) est assez rapide. Il est possible de réécrire 10 ans de développement en 1 ou 2 ans.

La réécriture totale des codes sources a certes un coût financier important, mais vous êtes loin de “tout jeter à la poubelle”. A l’inverse, ne pas racheter l’entreprise et “reprendre le développement de 0”, n’est pas une si bonne idée car vous vous privez des 2 premiers points ci-dessus.

Conclusion

En conclusion, si l’entreprise possède des codes sources développés sur mesure, vous devez les faire auditer.

L’audit réalisé doit vous permettre de comprendre :

  • la qualité de l’existant technique que vous achetez
  • la responsabilité induite par l’exploitation de cet existant technique (hébergez-vous des données sensibles telles que des données de santé ?)
  • les possibilités techniques à portée pour rentabiliser votre achat
  • en cas de négociation, une synthèse compréhensible pour vous donner les bons arguments

Rappelez-vous que vous n’achetez pas qu’un existant technique : vous achetez avant tout une base clients et des équipes.

Besoin d'auditer un code source ? Contactez-nous, nous pouvons-vous aider.

Recevez les nouveaux articles par mail

2 articles par mois sur l'innovation au coeur de votre entreprise : Tech, IA, Automatisation.

En vous inscrivant, vous confirmez être d'accord avec nos CGU.
Merci, votre inscription a été enregistrée.
Oops! Une erreur est survenue, veuillez réessayer.