XP (Programmation extrême) est une méthodologie agile de développement logiciel, créée par Kent Beck dans les années 1990, qui pousse à leur maximum certaines bonnes pratiques d’ingénierie logicielle pour répondre efficacement à des exigences changeantes et garantir une qualité de code élevée.
Contrairement à Scrum (centré sur la gestion de projet), XP se concentre avant tout sur les pratiques techniques d’équipe de développement. Il est particulièrement adapté aux projets à forte incertitude fonctionnelle ou à rythme de livraison soutenu.
Valeurs fondamentales (selon le Manifeste XP)
- Communication – entre développeurs, clients et parties prenantes
- Simplicité – écrire le code le plus simple possible qui fonctionne
- Feedback – obtenir des retours rapides via tests, démos, intégration continue
- Courage – refactoriser, supprimer du code inutile, admettre les erreurs
- Respect – entre membres de l’équipe, pour le code et les utilisateurs
Pratiques clés (les plus emblématiques)
- Développement piloté par les tests (TDD) : écrire les tests avant le code
- Intégration continue : fusionner le code plusieurs fois par jour, avec builds automatisés
- Refactorisation continue : améliorer la structure du code sans en changer le comportement
- Programmation en binôme (Pair programming) : deux développeurs sur une même tâche (un code, l’autre observe/corrige)
- Propriété collective du code : tout le monde peut modifier n’importe quelle partie du système
- Semaines de travail durables : éviter le crunch pour préserver la qualité et la santé de l’équipe
- Métaphore système : une histoire simple partagée pour expliquer l’architecture (ancêtre des user stories)
Limites
- Exige une forte discipline technique et une culture d’équipe mature
- Peut sembler « extrême » (d’où le nom) pour les organisations peu habituées à l’agilité technique
- Moins adapté aux équipes très distribuées ou aux projets où le code n’est pas le cœur (ex. : pure stratégie marketing)
Synonymes / termes associés
- Programmation extrême
- Méthode XP
- Agile technique
- Ingénierie agile