YAGNI : développer ce qu’on a besoin mais pas plus !

Ecrit par << Paquet Judicaël >>

L’Extreme Programming propose une philosophie de développement appelée YAGNI qui impose aux développeurs de ne pas développer des fonctionnalités qu’on n’a pas besoin d’avoir.

Définition de YAGNI

YAGNI est un acronyme qui signifie « you ain’t gonna need it » soit si on traduit en français, signifie « vous n’en aurez pas besoin ». Les développeurs qui lisent ces lignes comprendront vite l’idée générale qui se cache derrière cet acronyme.

On ne prévoit pas des fonctionnalités, on ne développe que les fonctionnalités qu’on a besoin maintenant. C’est très important car beaucoup de développeurs aiment prévoir des fonctionnalités sans même que la demande soit d’actualité.

Cependant avec la popularisation de l’agilité, ce phénomène semble disparaitre doucement.

YAGNI est très agile

Aujourd’hui dans le monde de l’agilité, on privilégie fortement de ne développer que ce qui est nécessaire afin de maximiser la productivité.

L’Extreme Programming va même plus loin en expliquant qu’il est préférable de faire du refactoring du code (ou modèle de données) quand on ajoute une fonctionnalité que de prévoir la future mise en place de fonctionnalités.

Comme le dit le Lean, on ne fait que le nécessaire et on éloigne au maximum la perte de temps (le waste). Ne sachant pas si la fonctionnalité future va vraiment sortir, on ne risque pas de perdre du temps à la préparer.

Oui comme vous le voyez, c’est une notion très philosophique mais qui a beaucoup de sens. Combien de fois, j’ai vu dans le passé des développeurs prévoir le double de fonctionnalité par rapport au besoin exprimé ? Je ne pourrais même plus compter aujourd’hui.

Pourquoi adopter la philosophie YAGNI ?

La philosophie YAGNI permet d’éviter un grand nombre d’inconvénients qu’on oublie quand on réalise des fonctionnalités supplémentaires sans en avoir eu la demande :

  • Quand on développe une fonctionnalité non demandée, on prend du temps qui n’était pas prévu à la base.
  • Quand on développe une fonctionnalité non demandée, on devra prendre du temps pour la tester avant chaque livraison.
  • Quand on livre cette nouvelle fonctionnalité, on sera tenu de la maintenir, de la débugguer voire de la documenter (temps complémentaire de perdu).
  • Quand on livre une nouvelle fonctionnalité non demandée, on peut être contraint de prendre du temps complémentaire à la suite pour gérer d’éventuelles dépendances avec celle-ci.
  • Quand on développe une fonctionnalité non demandée, on ajoute des lignes de code non nécessaires mais qui complexifieront par défaut le code source.
  • Quand on développe une fonctionnalité non demandée et que cela n’a posé de soucis à personne, l’envie de faire d’autres fonctionnalités non demandées est encore plus forte.

Vous l’aurez compris, ajouter de nouvelles fonctionnalités non prévues, impose de prendre beaucoup de temps sur le moment voire dans le futur inutilement et au détriment des demandes attendues.

YAGNI est proche du KISS

Le Yagni est proche d’une autre philosophie très répandue dans le monde de l’agilité qui est le KISS. Cette philosophie KISS dit qu’il faut faire au plus simple dans les développements. Voici un article qui en parle si cette autre philosophie vous intéresse :

Article : Le principe KISS pour les développeurs

Conclusion

Chers développeurs, pensez YAGNI permettra à l’entreprise d’optimiser ses processus de développement ; elle vous remerciera d’avoir conscience que la valeur business est devenue de plus en plus importante dans ce monde où tout bouge très vite voire trop vite.

Laisser un commentaire

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