La programmation extrême (XP) est une méthodologie agile de développement logiciel. Comme d’autres méthodologies agiles, XP possède ses outils, processus et rôles uniques. Le créateur de XP, le développeur américain Kent Beck, n’a rien inventé de totalement nouveau, mais a pris les meilleures pratiques du développement agile et les a amplifiées à l’extrême, d’où le nom de programmation extrême.
L’auteur de la méthodologie, Kent Beck, a dirigé le projet Chrysler Comprehensive Compensation System à la fin des années 90, où il a d’abord appliqué les pratiques de XP. Il a documenté son expérience et le concept créé dans le livre “Extreme Programming Explained,” publié en 1999. Ce livre a été suivi par d’autres détaillant les pratiques de XP. Les contributeurs au développement de la méthodologie incluent Ward Cunningham, Martin Fowler, et d’autres.
Contrairement à d’autres méthodologies agiles, XP est exclusivement utilisé dans le développement logiciel. Il né peut pas être appliqué à d’autres entreprises ou à la vie quotidienne comme Scrum, Kanban ou Lean.
L’objectif de XP est de faire face à des exigences de plus en plus changeantes pour le produit logiciel et d’améliorer la qualité du développement. Par conséquent, XP est adapté aux projets complexes et incertains.
XP tourne autour de quatre activités clés : le codage, les tests, la conception et l’écoute. De plus, la programmation extrême a des valeurs fondamentales : la simplicité, la communication, le retour d’information, le courage et le respect.
13 Pratiques de la Programmation Extrême

1. L’Équipe Entière
Tous les participants au projet utilisant XP travaillent comme une seule équipe. Cette équipe doit inclure un représentant du client, de préférence un véritable utilisateur final connaissant l’entreprise. Le client définit les exigences du produit et priorise la fonctionnalité. Les analystes commerciaux peuvent assister le client. Du côté des exécutants, l’équipe comprend des développeurs, des testeurs, parfois un coach guidant l’équipe et un manager fournissant des ressources.
2. Jeu de Planification
La planification dans XP se déroule en deux étapes : la planification de la version et la planification des itérations.
- Planification de la Version : L’équipe de programmation se réunit avec le client pour déterminer la fonctionnalité souhaitée pour la prochaine version, généralement dans 2 à 6 mois. Comme les exigences du client sont souvent vagues, les développeurs clarifient et les décomposent en tâches pouvant être complétées en une journée ou moins. Le client doit comprendre l’environnement opérationnel dans lequel le produit fonctionnera.
Les tâches sont enregistrées sur des cartes, et le client les priorise. Les développeurs estiment ensuite le temps requis pour chaque tâche. Une fois que les tâches sont décrites et estimées, le client passé en revue la documentation et approuve le début des travaux. Pour le succès du projet, il est crucial que le client et l’équipe de programmation jouent sur le même terrain : le client choisit la fonctionnalité réellement nécessaire dans le budget, et les programmeurs alignent correctement les exigences du client avec leurs capacités. - Planification des Itérations : Conduite toutes les deux semaines, parfois plus ou moins fréquemment. Le client est présent pour définir la fonctionnalité pour la prochaine itération et apporter des modifications aux exigences du produit.
3. Petites Versions
Les versions de XP sont fréquentes mais avec une fonctionnalité limitée. Cette approche facilite les tests et la maintenance de l’opérabilité du système et fournit au client une fonctionnalité à valeur ajoutée à chaque itération.
4. Tests du Client
Le client spécifie des tests d’acceptation automatisés pour vérifier la fonctionnalité du produit. L’équipe rédige ces tests et les utilise pour tester le code.
5. Propriété Collective du Code
Dans XP, tout développeur peut modifier n’importe quelle partie du code, car le code n’appartient pas à son auteur mais à toute l’équipe.
6. Intégration Continue
Les nouvelles parties de code sont intégrées dans le système immédiatement — les équipes XP publient un nouveau build toutes les quelques heures ou plus fréquemment. Cette pratique garantit que l’impact des modifications récentes sur le système est visible immédiatement. Si une nouvelle partie de code casse quelque chose, il est beaucoup plus facile de l’identifier et de corriger l’erreur.
7. Standards de Codage
Avec la propriété collective du code, l’adoption de normes de codage communes est cruciale pour que le code ressemble à celui écrit par un seul professionnel. Les équipes peuvent développer leurs propres normes ou adopter celles existantes.
8. Métaphore du Système
La métaphore du système est une comparaison avec quelque chose de familier pour créer une vision partagée au sein de l’équipe. Typiquement, la personne développant l’architecture et voyant le système dans son ensemble conçoit la métaphore.
9. Rythme Durable
Les équipes XP travaillent à une productivité maximale tout en maintenant un rythme durable. La programmation extrême décourage les heures supplémentaires et promeut une semaine de travail de 40 heures.
10. Développement Orienté Test (TDD)
Une des pratiques les plus difficiles dans XP. Les programmeurs écrivent des tests avant d’écrire le code à tester. Cette approche garantit que chaque morceau de fonctionnalité est entièrement couvert par des tests. Lorsque les développeurs engagent du code, des tests unitaires sont exécutés immédiatement, et tous les tests doivent passer, garantissant que l’équipe avance dans la bonne direction.
11. Programmation en Binôme
Imaginez deux développeurs travaillant sur un seul ordinateur sur un seul morceau de fonctionnalité. Cette pratique est la programmation en binôme, la pratique la plus controversée dans XP. Le proverbe “deux têtes valent mieux qu’une” illustre bien son essence. Parmi deux solutions à un problème, la meilleure est choisie, le code est optimisé immédiatement, et les erreurs sont détectées avant qu’elles né se produisent, ce qui entraîne un code propre compris par les deux développeurs.
12. Conception Simple
La conception simple dans XP signifie faire uniquement ce qui est nécessaire maintenant, sans essayer de prédire les fonctionnalités futures. La conception simple et le refactoring continu créent un effet synergique — lorsque le code est simple, il est plus facile à optimiser.
13. Refactoring
Le refactoring est le processus continu d’amélioration de la conception du système pour répondre aux nouvelles exigences. Il inclut la suppression des duplications de code, l’augmentation de la cohésion et la réduction du couplage. XP impose un refactoring constant, de sorte que la conception du code reste toujours simple.
Avantages et Inconvénients de XP
XP est controversé et souvent critiqué par ceux qui n’ont pas réussi à l’implémenter. Cependant, ses avantages sont évidents lorsque l’équipe utilise pleinement au moins une pratique de XP.
Les avantages de s’efforcer d’appliquer XP incluent :
- Satisfaction du Client : Les clients obtiennent le produit dont ils ont besoin, même s’ils n’ont pas d’idée claire au début.
- Flexibilité : L’équipe effectue rapidement des changements de code et ajoute de nouvelles fonctionnalités grâce à une conception de code simple, une planification et des versions fréquentes.
- Fiabilité : Le code fonctionne toujours grâce à des tests constants et une intégration continue.
- Maintenabilité : L’équipe peut facilement maintenir le code car il est écrit selon un standard unique et constamment refactorisé.
- Productivité: Taux de développement rapide grâce à la programmation en binôme, sans heures supplémentaires, et l’implication du client.
- Code de Haute Qualité
- Atténuation du Risqué : Les risques de développement sont réduits car la responsabilité est uniformément répartie, et le projet n’est pas compromis par le départ ou l’arrivée des membres de l’équipe.
- Rentabilité : Les coûts de développement sont plus bas car l’équipe se concentre sur le code plutôt que sur la documentation et les réunions.
Bien qu’il présente des avantages, XP né fonctionne pas toujours et a plusieurs faiblesses :
- Implication du Client : Le succès dépend de l’implication du client, ce qui peut être difficile à réaliser.
- Lignes de Temps Imprévisibles : Il est difficile de prédire les coûts de temps du projet car la liste complète des exigences est inconnue au début.
- Dépendance au Niveau de Compétence : XP dépend fortement du niveau de compétence des programmeurs et fonctionne mieux avec des professionnels seniors.
- Résistance de la Direction : La direction s’oppose souvent à la programmation en binôme, questionnant la nécessité de payer deux programmeurs au lieu d’un.
- Coût : Les réunions fréquentes avec les programmeurs peuvent être coûteuses pour les clients.
- Changements Culturels: L’implémentation de XP nécessite des changements culturels significatifs.
- Manqué de Structure : Le manqué de structure et de documentation de XP le rend inapproprié pour les grands projets.
- Exigences Non Fonctionnelles : Les exigences fonctionnelles sont difficiles à décrire sous forme d’histoires utilisateur dans les méthodologies agiles.
Principes de XP
Dans son premier livre, Kent Beck a décrit les principes suivants de XP : simplicité, communication, retour d’information et courage. Dans une édition ultérieure, il a ajouté un cinquième principe : le respect.1. Simplicité
Le développement XP commence par la solution la plus simple qui répond au besoin fonctionnel actuel. Les membres de l’équipe né considèrent que ce qui doit être fait maintenant et n’incorporent pas de fonctionnalités qui pourraient être nécessaires à l’avenir.
2. Communication
La communication dans XP se fait en direct plutôt que par documentation. L’équipe communiqué activement entre elle et avec le client.
3. Retour d’Information
Le retour d’information dans XP se fait de trois manières :
- Retour du Système : Par le biais de tests constants des modules.
- Retour du Client : Le client fait partie de l’équipe et participe à la rédaction des tests d’acceptation.
- Retour de l’Équipe : Lors de la planification, concernant les estimations des temps de développement.
4. Courage
Certaines pratiques de XP sont si non conventionnelles qu’elles nécessitent du courage et un contrôle de soi constant.5. Respect
Le respect dans XP signifie respecter l’équipe et se respecter soi-même. Les membres de l’équipe né devraient pas apporter de changements qui cassent la compilation, les tests de module, ou ralentissent le travail de leurs collègues. Chaque membre s’efforce d’atteindre la plus haute qualité de code et de conception.
Mise en Œuvre de XP et Flux de Travail
Kent Beck recommande de mettre en œuvre XP pour résoudre les problèmes de projet. L’équipe sélectionne le problème le plus urgent et le résout en utilisant l’une des pratiques de XP. Ensuite, elle passé au problème suivant, en utilisant une autre pratique. Cette approche garantit que les problèmes motivent l’adoption de XP, et l’équipe maîtrise progressivement tous les outils de la méthodologie.
Pour mettre en œuvre XP dans un projet existant, adoptez progressivement ses pratiques dans les domaines suivants :
- Tests : L’équipe crée des tests avant d’écrire du nouveau code et refactorise progressivement le code ancien.
- Conception : L’équipe refactorise continuellement le code ancien, généralement avant d’ajouter de nouvelles fonctionnalités.
- Planification : L’équipe doit interagir étroitement avec le client.
- Gestion : Les managers veillent à ce que tous les membres de l’équipe respectent les nouvelles règles.
- Développement : Commencez par organiser des postes de travail pour la programmation en binôme et encouragez les binômes à programmer la majeure partie du temps.
Exemple d’un Flux de Travail Utilisant XP

Qui Utilise XP
Selon une enquête VersionOne de 2016, seulement 1 % des entreprises agiles utilisent XP dans sa forme pure. Un autre 10 % utilise un hybride de Scrum et de XP.Bien que XP né soit pas la méthodologie la plus courante, ses pratiques sont utilisées par la plupart des entreprises employant des méthodologies agiles. Par exemple, Pivotal Software, Inc. attribue son succès à XP.
Pivotal Software, Inc.
Pivotal Software, Inc. développe des analyses commerciales basées sur de grandes données et fournit des services de conseil. Leurs produits sont utilisés par des entreprises telles que Ford, Mercedes, BMW, GAP, Humana, de grandes banques, des agences gouvernementales et des compagnies d’assurance.
Pivotal plaide pour les méthodologies agiles comme essentielles pour le développement moderne. Parmi les variantes agiles, ils ont choisi XP, une approche gagnant-gagnant pour les clients et les équipes de programmation. Leur journée de travail commence par des réunions debout et se termine à 18h00 — sans heures supplémentaires. Pivotal utilise des jeux de planification, la programmation en binôme, des tests constants, une intégration continue et d’autres pratiques XP.
Que Lire pour Comprendre XP
- “Extreme Programming Explained,”, “Planning Extreme Programming,”, “Test-Driven Development” par Kent Beck : Ces livres du créateur de XP fournissent une compréhension approfondie de la méthodologie et de ses avantages.
- “Refactoring: Improving the Design of Existing Code” par Martin Fowler : Un livre d’un co-auteur de XP expliquant les principes et techniques du refactoring.
- “Extreme Programming Applied: Playing to Win” par Ken Auer et Roy Miller : Un guide pratique des pratiques de XP avec des exemples.
Outils pour Mettre en Œuvre XP dans les Équipes
Redmine

Un gestionnaire de tâches gratuit et open source avec des fonctionnalités telles que le support de plusieurs projets, la gestion flexible des tâches, des diagrammes de Gantt, le suivi du temps, la gestion de la documentation et la création de tâches par email.
Basecamp

Un service simple et convivial pour le travail collaboratif sur des projets, comprenant un gestionnaire de tâches, des tableaux de messages, un chat intégré, un stockage de fichiers et un calendrier.
Jira

Un service robust conçu pour les développeurs de projets agiles, combinant un suivi des bugs et un outil de gestion de projet avec de nombreuses fonctionnalités et options de synchronisation.
Worksection

Un service sécurisé pour le travail sur les projets, permettant la définition de tâches et le contrôle des processus, le suivi de la correspondance, la personnalisation des filtres, le suivi du temps et des finances, et la gestion des fichiers.
Conclusion
La programmation extrême est une méthodologie agile axée sur la production de code fonctionnel de haute qualité avec une architecture simple. Son objectif est de réduire l’incertitude dans les projets et de répondre de manière flexible aux exigences changeantes du produit.
XP est exclusivement destiné au développement logiciel et né peut pas être adapté à d’autres entreprises.
C’est l’une des méthodologies les plus difficiles à mettre en œuvre en raison de ses treize pratiques. Cependant, ses pratiques sont largement utilisées dans des projets agiles, prouvant leur efficacité.
Les auteurs conseillent de maîtriser progressivement les pratiques de XP tout en résolvant les problèmes de projet. Si vous en voyez les avantages, continuez dans le même esprit. Il n’est pas obligatoire de mettre en œuvre XP sur une base de tout ou rien. Après tout, les méthodologies agiles devraient être flexibles dans leur application — s’adaptant aux besoins de l’équipe de projet spécifique.