dimanche 2 mars 2014

Principe YAGNI : N'anticipez pas le futur.

"You ain't gonna need it" ou principe YAGNI est sans doute l'un des principes les moins bien compris des développeurs. 






Rempli de bonnes intentions, nous sommes tous enclin à faire des développements informatiques supplémentaires; ces développements ne servent à rien pour l'application sur le moment mais peuvent éventuellement faciliter l'intégration de futures évolutions. De bonnes intentions certes, mais qui est à même de prédire l'avenir ? Dans 99% des cas, le futur nous donne tort ; tout ce que nous imaginons ne se produit jamais. Arrêtons donc de jouer aux astrologues du virtuel et arrêtons de nous prendre pour la "Madame Irma du bit" !

Un exemple concret pour illustrer ce fait : vous venez de refaire votre salle de bain et vous souhaitez voir raccorder votre nouveau lavabo à la canalisation d'eau. N'y connaissant rien en plomberie, vous faites alors appel à un professionnel. Une heure de travail devrait être largement suffisante pour réaliser cette tâche.

Imaginez que le plombier ne suive pas le principe YAGNI, voici un scénario possible : au bout d'une journée, votre "professionnel de la plomberie" vous annonce fièrement que le travail a été plus long que prévu ; votre lavabo est maintenant utilisable et, cerise sur le gâteau, un tuyau a été mis en place entre la canalisation et la chambre d'à côté. Surpris et énervé, vous lui demandez des explications ; il vous répond alors : "Si un jour vous échangez votre chambre avec votre salle de bain, le tuyau sera déjà en place et vous gagnerez du temps". Bilan de l'opération : vous payez 1 journée de travail au lieu d'une heure, le mur de séparation entre votre salle de bain et votre chambre a été percé et un tuyau pointe son nez dans votre chambre ! Imaginez votre tête !

Cet exemple, volontairement fantaisiste, est pourtant celui que nous proposons régulièrement à notre chef de projet. Les conséquences sont pourtant les suivantes :

- un surcoût de développement
- un surcoût dans l'écriture des tests
- un code rendu souvent plus compliqué
- des portions de code qui ne répondent à aucune spécification.

Conclusion : comme l'écrit Horace dans l'un de ces poèmes: "Carpe Diem" : Cueille le jour présent sans te soucier du lendemain