YAGNI : développer juste ce qu’on a besoin

Ecrit par << Paquet Judicaël >>

L’Extreme Programming propose une philosophie de développement appelée YAGNI. Celle-ci 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 » ; en français, on le traduira par « 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 sur le moment. 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. Cela a pour but 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 non prévu à la base mais qu’on ne pourra pas dédier à des choses essentielles.
  • Lorsqu’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 et de la documenter.
  • Lorsqu’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.
  • Lorsqu’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. Ces fonctionnalités ne seront peut-être d’ailleurs jamais utilisées à l’avenir.

YAGNI est proche du KISS

Le Yagni est proche de la philosophie KISS très répandue dans le monde de l’agilité. 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 Yagni

Chers développeurs, pensez YAGNI permettra à l’entreprise où vous agissez, 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 *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.