Connaissez-vous l’eXtreme Programming, ses principes et ses avantages ?

Par Nathalie Pouillard
Le 02/02/2021
definition backgroundConnaissez-vous l’eXtreme Programming, ses principes et ses avantages ?

Avez-vous déjà entendu parler de l’eXtreme Programming (XP) ? Que savez-vous de cette méthode de développement logiciel ?

Issue de l’univers agile, cette méthodologie a pris de l’importance au tournant des années 1990 et 2000. Mais en quoi consiste-t-elle exactement ?

Dans cet article, nous nous concentrons sur les principes qui la régissent, les avantages et les inconvénients qu’elle offre et les techniques à suivre pour y parvenir.

Qu’est-ce que l’eXtreme Programming ? 

Définition

L’eXtreme Programming, en français, programmation extrême, est une méthodologie agile et sa mise en œuvre la plus poussée dans le cadre du développement de logiciels, d’où sa qualification d’« extrême ».

Partant d’une approche centrée sur le client, cette méthode offre un cadre qui vise à produire une écriture de code simple mais de haute qualité, pour toute l’équipe impliquée dans le projet.

Développée par Kent Beck, un informaticien américain également connu pour la conception du développement piloté par les tests (Test-Driven Development), l’eXtreme Programming a joué un rôle important dans le succès des méthodes agiles.

eXtreme Programming vs Scrum

La méthode Scrum fait également partie de la famille agile. D’ailleurs, les deux peuvent être combinées, car elles sont complémentaires :

  • la méthode Scrum est un framework qui a trait à la gestion et l’organisation du projet ;
  • l’eXtreme Programming se concentre sur les activités de développement, notamment sur la systématisation du test automatisé.

Quelles sont les caractéristiques de l’eXtreme Programming ?

Les 5 valeurs clés

Conçue initialement pour le domaine informatique, la méthode est aujourd’hui très appréciée à travers le monde, car elle est fonctionnelle pour tous types de projets, de toutes tailles et dans tous les secteurs. 

Cette méthodologie offrirait même de meilleurs résultats au sein d’équipes petites à moyennes, qui ne dépassent pas une vingtaine de personnes.

Les caractéristiques principales de l’eXtreme Programming sont celles de l’univers agile : réactivité aux changements, flexibilité, collaboration, qualité du travail, qualité des tests, etc.

☝️ La différence réside dans le fait que ces fonctionnalités sont poussées à l’extrême.

Regardons maintenant ses valeurs fondamentales :

  1. Communication : il est essentiel que chaque membre de l’équipe communique quotidiennement en interne et avec le client. Le contact est un moyen essentiel de résoudre les problèmes.

  2. Simplicité : souvent, le moyen le plus simple d’obtenir un résultat est aussi le plus efficace. Il faut donc privilégier le simple et l’essentiel. En conséquence, l’équipe de développement doit se concentrer exclusivement sur les tâches strictement nécessaires. Les améliorations peuvent être apportées ultérieurement.

  3. Feedback (rétroaction) : l’échange d’informations entre l’équipe projet et le client est essentiel. Chaque évolution du projet doit être communiquée au client aussi rapidement et fréquemment que possible. Toute demande de changement doit être prise en considération immédiatement.

  4. Respect : le respect du travail des personnes concernées est une condition sine qua non. La direction, l’équipe de projet et le client doivent se respecter.

  5. Courage : le changement demande du courage pour sortir d’une situation complexe, qu’il s’agisse d’apprendre à maîtriser une nouvelle technique, de redémarrer une itération non validée ou de revoir l’organisation d’un projet.

Les 12 règles fondamentales

Concrètement, les 5 valeurs clés vues ci-dessus donnent naissance à 12 règles fondamentales. Celles-ci peuvent être regroupées en 4 domaines.

🔁   Feedback détaillé

  • Programmation en binôme (pair programming) : ce mécanisme vise à contrôler la qualité du travail. Vous travaillez en binôme : pendant qu’un collègue écrit le code, l’autre le vérifie. Pour collaborer sur un poste de travail commun, il est très important de s’assurer que le duo a un niveau d’expérience similaire.

  • Planning poker : le planning se fait en collaboration avec le client. Ce dernier exprime la fonctionnalité dont il souhaite bénéficier. L’équipe évalue le temps nécessaire à sa mise en œuvre. Enfin, les différentes tâches sont hiérarchisées. Cette réunion a généralement lieu sur une base hebdomadaire.

  • Développement piloté par les tests : l’écriture de l’environnement de test (à la fois unitaire et d’acceptation) a lieu avant même de démarrer le développement de la partie fonctionnelle et la création du code source. Cette technique vous permet d’identifier à l’avance les éventuelles erreurs.

  • Client sur site : idéalement, au moins un représentant du client doit faire partie intégrante de l’équipe, pour avoir une vision globale du résultat souhaité et être en mesure de répondre aux questions.

        🧘‍♂️  Bien-être des programmeurs

        • Rythme durable : les heures supplémentaires sont interdites. Si elles sont nécessaires, la programmation en amont doit être revue. Un employé fatigué travaille mal et fait plus d’erreurs. Il est bon de ne jamais dépasser 40 heures par semaine !

        ∞  Processus continu

        • Refactoring (ou amélioration de la conception) : le projet est constamment amélioré. L’objectif est de travailler sur des bases solides et d’avoir des conditions de travail optimales. Le code supprime donc constamment les répétitions et les éléments inutiles.

        • Petites livraisons (small releases) : elles doivent être aussi fréquentes que possible, pour donner au client la possibilité d’exprimer en permanence des critiques et des propositions. Ainsi, les erreurs sont détectées et corrigées plus rapidement.

        • Intégration continue : dès qu’une tâche est terminée, elle est immédiatement intégrée au produit. Ainsi, le travail supplémentaire requis pour intégrer tous les éléments avant la livraison finale est évité. Les tests facilitent cette intégration : lorsque tous les tests sont positifs, l’itération est terminée.

        💡  Compréhension commune (ou partagée)

        • Appropriation collective du code : la responsabilité du projet est collective. Cela implique que chaque membre peut intervenir sur toutes les sections du projet, y compris celles sur lesquelles il n’a pas travaillé. L’objectif ? Efficacité et rapidité maximales.

        • Normes de codage (coding standards) : puisqu’elles fonctionnent toutes ensemble, il est essentiel de faciliter le travail de chacun en utilisant les mêmes termes, le même style, et des modes de communication bien définis.

        • Conception simple (Simple Design) : elle vous permet d’avoir un code que tout le monde peut comprendre et d’éviter les doublons. L’attention est portée sur les besoins du client.

        • Métaphores du système (System Metaphor) : pour décrire le projet de la manière la plus simple possible, des métaphores sont utilisées. L’objectif est que les nouveaux collaborateurs puissent comprendre et intégrer le projet rapidement.

          Avantages et inconvénients de l’eXtreme Programming

          Si toutes les conditions sont réunies, l’eXtreme Programming peut offrir des résultats surprenants.

          ✚  Voici quelques points forts :

          • un code propre et linéaire,
          • un logiciel stable grâce à un développement itératif continu,
          • la capacité d’apporter constamment des améliorations.

          ⊖  Les faiblesses sont les suivantes :

          • un budget moyen plus élevé,
          • la nécessité d’une forte implication du client,
          • un besoin élevé d’autodiscipline et de planification.

          eXtreme Programming : la méthode qui va droit au but

          Grâce à cette méthode, managers, développeurs et clients travaillent ensemble. Cette approche collaborative pousse la simplicité et la réactivité au maximum et assure un contrôle continu des versions.

          Dans la pratique, c’est une méthode complexe à mettre en œuvre car elle nécessite beaucoup d’autodiscipline et une bonne communication interne. Cependant, si les conditions sont remplies, cette méthode peut conduire à d’excellents résultats.

          Et vous, avez-vous déjà vu cette méthode agile ? Quelles sont vos impressions ?

          La transparence est une valeur essentielle pour Appvizer. En tant que média, nous avons pour objectif d'offrir à nos lecteurs des contenus utiles et de qualité tout en permettant à Appvizer de vivre de ces contenus. C'est pourquoi, nous vous invitons à découvrir notre système de rémunération.   En savoir plus
          Définition backgroundZoom sur la méthode classique de gestion de projet
          Définition
          il y a 8 mois
          Zoom sur la méthode classique de gestion de projet
          Devez-vous privilégier la méthode classique ou la méthode agile pour votre gestion de projet ? Découvrez les spécificités des méthodes Waterfall et Cycle en V, ainsi que les différences avec Scrum.