Je viens de lire avec beaucoup d’intérêt le post d’Anthony Cyrille qui commence par cette malicieuse accroche :

“Mon développeur est très compétent, il a développé tout le projet en une semaine.”

👀

Qualité, Coûts, Délais…

tout le monde a fait (ou devrait avoir fait) l’expérience au moins une fois de

○●● livrer rapidement une appli qui ne marche pas

●○● faire de la surqualité (je traduis : lorsque vous livrez rapidement du code fiable et maintenable, quelqu’un va vous dire: “c’est bien mais attention à la surqualité”. Surqualité = c’est trop cher).

●●○ livrer enfin le bon produit, et du code maintenable, mais avec des mois de retard.

Quand j’étais jeune, il y a longtemps, dès que ça parlait budget ou délai, quelqu’un sortait le triangle de fer :

🔺 GOOD, FAST, CHEAP: PICK TWO 🔻

Et à l’époque, je me disais : c’est sagesse !

Mais depuis, j’ai eu quelques occasions de rencontrer et de contribuer moi-même à des projets dans lesquels on croyait dur comme fer à l’hypothèse de Crosby :

Quality is free. It’s not a gift, but it’s free. The ‘unquality’ things are what cost money.

et je me rappelle aussi Brian Foote (coautheur de l’excellent papier Big Ball of Mud) :

Si vous trouvez qu’une bonne architecture coûte cher, essayez une mauvaise.

Clairement ces deux propositions nous invitent à démonter le triangle de fer, plier en deux chacun de ses côtés, et le jeter dans la première benne disponible.

Nous revoilà avec d’un côté la Dette Technique :

  • Dette Technique : procédé consistant à dégrader votre conception temporairement afin de satisfaire un objectif intermédiaire

qui nous permettra, utilisé sciemment, de faire moins bien mais plus vite → 🔻 Iron Triangle FTW! 🔺

et de l’autre côté la dette technique :

  • dette technique : terme utilisé pour caractériser la qualité interne d’une solution dont l’état de l’art (procédés, objectifs, contraintes) n’est plus cohérent

qui comme on le sait bien peut entraîner une équipe, voire une entreprise, dans la spirale infernale de la non-qualité :

😡 les problèmes de qualité mettent le projet en retard et les clients en colère

🤷 on est en retard ⇒ on sacrifie les activités superflues (tests, documentation, revues)

💣 moins de prévention des défauts ⇒ plus de défauts; c’est mécanique, personne n’y échappe à moins d’être un∙e Ninja du Code (well are you, punk ?)

🔁 rinse & repeat…

On a tous connu une équipe qui dégradait en continu son état de l’art et obtenait en contrepartie 0 résultat : seulement des bugs, du code inhabitable, et des délais explosés.

L’envers de la dette technique, c’est l’excellence : adapter continuellement son état de l’art afin de résoudre au mieux, dans les meilleurs délais, un problème complexe dans un contexte incertain.

Vous savez, quand vous vous dites : on pourrait faire moins bien, mais ça reviendrait plus cher…

Stay Tuned !