Toutes les fois où un Tech Lead m’a annoncé “cette application, c’est la vache à lait de l’entreprise” il m’a ensuite montré du code legacy.

☕️🥐🗞

Un système contenant de la technologie croît de manière non-linéaire. C’est même sa raison d’être.

Un éditeur logiciel investit dans un système relativement simple basé sur une idée innovante, et vend quelques licences.

🦻 Ses premiers clients sont agréablement surpris, et de bouche à oreille, lui amènent de nouveaux clients.

💶 Cela permet à l’éditeur non seulement de rembourser ses prêts mais aussi d’investir : faire plus de logiciel, vendre plus de logiciel !

Qu’est-ce exactement que cette croissance non-linéaire ?

On peut choisir de la définir ainsi : le nombre d’interactions concrètes possibles entre les éléments de ce système. Ce nombre croît comme le produit du nombre d’utilisateurs par le nombre de chemins d’interactions possibles avec le programme.

⏰ Par exemple un logiciel très simple, appelons-le 𝗗𝗲𝗯𝗼𝗼!, contient 6 fonctionnalités :

  • afficher l’heure
  • définir l’heure d’alarme
  • modifier l’heure d’alarme
  • annuler le mode alarme
  • restaurer le mode alarme
  • stopper l’alarme déclenchée

et son éditeur l’a distribué à 250 clients.

Nous pourrions convenir que la complexité du système 𝗗𝗲𝗯𝗼𝗼! = 250 x 6

Notre éditeur ajoute 4 features :

  • réglage du volume de l’alarme
  • définir une alarme exceptionnelle
  • annuler une alarme exceptionnelle
  • définir la sonnerie d’alarme (parmi 28 possibilités!)

ce qui lui amène 200 nouveaux clients.

𝗗𝗲𝗯𝗼𝗼! croît en complexité : 550 x 10

Certains clients demandent : est-ce que vous pouvez aussi reporter une alarme à dans 9 minutes ?

Des prospects : est-ce que vous sauriez diffuser de la musique au lieu de la sonnerie ? 🛒

Nouvelles features → nouveaux clients → nouvelles features 🔄

Le logiciel s’enrichit, l’éditeur s’enrichit, le code se complexifie.

📈🤑🤖

Côté Technique, “tout est prioritaire” :

  • coder de nouvelles fonctionnalités
  • répondre aux utilisateurs réveillés à des heures non programmées à cause d’un bug (voir tickets 4807 à 4822 – le même défaut à causé plusieurs incidents similaires).
  • gérer les demandes du marketing, de la vente, du help-desk, des intégrateurs partenaires…

🥀 Le temps où on avait le temps de prendre le temps de bien faire les choses est révolu. Sous pression, l’équipe commence à sacrifier quelques procédés de son état de l’art :

✂️ est-ce qu’on a vraiment besoin de relire le code ? SVP moins de réunions !

🗑 j’ai arrêté de mettre à jour la doc (en plus j’aimais pas ça)

🪚 ces tests, là, sont cassés depuis 1 an. Je propose qu’on les débranche

Et notre éditeur se retrouve avec ce paradoxe :

🤔 un business florissant, soutenu par une base de code “legacy”

🚪 Conclusion 🚪

Notre solution croît : utilisateurs: ↗️ features: ↗️ complexité: ↗️ ↗️

Est-ce maintenant le moment de RETIRER des procédés de notre état de l’art ?

🪜🪜🪜 Réfléchissons 🪜🪜🪜

#etatdelart #dettetechnique