Les valeurs fondamentales qui guident chaque pratique et décision XP.
XP n'est pas qu'une collection de pratiques — c'est un système de valeurs. Les pratiques n'ont de sens que dans le contexte des valeurs. Sans les valeurs, vous obtenez du XP cargo-culte : des équipes qui suivent les mouvements sans l'esprit.
Les cinq valeurs XP sont : Communication, Simplicité, Rétroaction, Courage et Respect.
Ce ne sont pas des affiches aspirationnelles. Ce sont des outils de prise de décision. Quand vous ne savez pas quoi faire, demandez-vous quel choix incarne le mieux ces valeurs.
La communication est la première valeur parce que le développement logiciel est fondamentalement un problème de communication. Nous n'écrivons pas seulement du code — nous traduisons des besoins humains en instructions machine.
Les malentendus sont la cause première de la plupart des bogues. Le client dit « rapide », le développeur implémente la mise en cache, mais le client voulait dire « moins de clics ». Les approches traditionnelles tentent de résoudre cela avec de la documentation. XP le résout avec une communication continue.
Dans XP, la communication signifie :
L'opposé de la communication : supposer que vous savez ce qui est nécessaire, travailler en isolation, écrire du code astucieux et lancer des spécifications par-dessus le mur.
Si vous avez un doute sur une exigence, la réponse XP est toujours : parlez au client. Maintenant. Pas par courriel — parlez.
La simplicité signifie faire la chose la plus simple qui pourrait possiblement fonctionner. Pas la plus élégante, pas la plus extensible, pas la plus générale — la plus simple.
Cela se résume dans le mantra XP YAGNI : You Aren't Gonna Need It (Vous n'en aurez pas besoin). Ne construisez pas de frameworks. N'ajoutez pas de points d'extension. Ne généralisez pas. Construisez exactement ce qui est nécessaire aujourd'hui.
Pourquoi ? Parce que :
Cela ne signifie pas bâclé ou approximatif. Le code simple est souvent plus difficile à écrire que le code complexe. Il nécessite de réfléchir profondément à ce qui est réellement essentiel.
L'opposé de la simplicité : construire pour des exigences futures hypothétiques, ajouter de la flexibilité « au cas où », créer des abstractions avant d'en avoir besoin.
Une équipe a besoin d'authentification utilisateur. Elle implémente la connexion par nom d'utilisateur/mot de passe. Quand le client demande plus tard l'authentification unique, elle l'ajoute. Chaque étape est simple et apporte de la valeur.
Une équipe a besoin d'authentification utilisateur. Elle construit une interface abstraite 'AuthenticationProvider' avec des stratégies enfichables, supportant nom d'utilisateur/mot de passe, authentification unique, OAuth et biométrie. Elle n'utilise jamais que nom d'utilisateur/mot de passe.
La rétroaction est la façon dont vous apprenez si vous faites la bonne chose. XP crée des boucles de rétroaction à toutes les échelles :
Plus la rétroaction est rapide, moins la correction coûte cher. Un bogue détecté en quelques secondes ne coûte rien. Un bogue détecté en production coûte du temps, de l'argent et de la réputation.
Les pratiques XP sont conçues pour créer une rétroaction rapide et honnête. Les tests ne mentent pas. Le logiciel fonctionnel ne ment pas. Les métriques de production ne mentent pas.
L'opposé de la rétroaction : travailler en isolation pendant des semaines, attendre la fin pour tester, éviter le contact avec le client, ignorer les métriques de production.
Le courage signifie faire ce qui doit être fait, même quand c'est inconfortable. Dans XP, le courage se manifeste par :
Le courage n'est pas de l'imprudence. Il est soutenu par les autres valeurs. Vous pouvez refactoriser avec courage parce que vous avez des tests (rétroaction). Vous pouvez vous exprimer parce que vous avez des relations avec le client (communication).
L'opposé du courage : laisser des fenêtres brisées, gonfler les estimations pour être « sûr », cacher les mauvaises nouvelles, faire ce qui a toujours été fait.
Le courage nécessite la sécurité
Le courage sans sécurité psychologique n'est que du stress. Les équipes doivent savoir que s'exprimer ne sera pas puni.
Le respect a été ajouté dans la deuxième édition du livre de Kent Beck, reconnaissant ce qui était toujours implicite : XP ne fonctionne que lorsque les membres de l'équipe se respectent mutuellement.
Le respect signifie :
En programmation en binôme, le respect signifie écouter les idées de votre partenaire. En planification, le respect signifie donner des estimations honnêtes. En revue de code, le respect signifie critiquer le code, pas les personnes.
L'opposé du respect : rejeter des idées sans considération, attribuer des blâmes, traiter certains rôles comme moins importants, se soucier plus d'avoir raison que d'être efficace.