YAGNI, ou comment utiliser ce concept geek afin de mieux gérer vos ressources

YAGNI : You Aren’t Gonna Need It !* Si cet acronyme vous est familier, c’est certainement que vous avez croisé des développeurs sur votre chemin… Il s’agit d’un principe simple qui peut aller contre notre intuition première qui nous incite à avoir une longueur d’avance pour gérer au mieux les ressources sur un projet. Explications.
 

L’absolue nécessité

Appliquons le principe du 0 déchet au code : avant de de produire quoi que ce soit, il faut s’assurer qu’on en a réellement besoin maintenant. Cela semble a priori logique quand on est accro aux méthodes agiles et notamment au Lean. Mais cela peut entrer en conflit avec la gestion des ressources disponibles à un instant T et la volonté de livrer rapidement un produit fini avec toutes ses fonctionnalités.
 

Eviter de gaspiller ses ressources

Imaginons que vous construisiez une voiture de toute pièce, vous commencez par travailler sur le moteur, mais vous prenez du retard et l’équipe qui travaille sur la boite de vitesse est bloquée. Elle propose alors de s’occuper du système de freinage. Mais le jour où le moteur est prêt, on se rend compte que le moteur est plus puissant que prévu et que la conception des freins ne correspond pas à ce dont on a besoin… Moralité, il faut retravailler et adapter le système, voire lancer une nouvelle conception : le temps que l’on pensait gagner est en réalité doublement perdu.

Il en va de même avec les développements informatiques : le jour où vous espérez déployer votre fonctionnalité toute prête, les paramètres ont changé, le code a évolué et vous risquez fort de devoir mettre votre code tout prêt à la poubelle : YAGNI !

Pour autant, YAGNI ne saurait être appliqué naïvement à la lettre : anticiper un minimum l’ajout d’une fonctionnalité structurante peut limiter les coûts et la complexité ultérieure.
 

Chaque chose en son temps

Que l’on souhaite livrer un produit minimum viable ou faire évoluer un produit, il y a un ensemble de fonctionnalités à développer en parallèle. Or il arrive que des dépendances techniques ou fonctionnelles viennent perturber l’organisation mise en place. Si une partie de vos équipes techniques est bloquée, vous aurez la tentation de lui confier le développement d’un élément qui sera utile plus tard. C’est là qu’il faut vous poser la question de l’utilité réelle et du coût de ce travail.

Ce principe, qui nous vient de l’extreme Programming, XP pour les intimes, met en exergue le fait d’apporter une réponse simple au problème posé d’aujourd’hui (notez que « simple » ne signifie pas simpliste mais efficace). YAGNI est une sorte d’auto-limite que les développeurs peuvent appliquer pour éviter d’ajouter la complexité alors que ça n’est pas nécessaire.

Cette forme de sagesse appliquée à la programmation peut l’être à l’ensemble des tâches que l’on effectue quel que soit le domaine : optimisez vos efforts en adoptant YAGNI !

*Vous n’en aurez pas besoin