Eh oui cela existe ... et depuis des dizaines d'années ! Cependant je trouve intéressant de rappeler en quoi cela consiste.

Il s'agit d'une méthode de programmation permettant de fiabiliser les projets de développements à risque. Cette méthode impose de la rigueur et permet de diminuer les temps de debbugage finaux qui sont souvent coûteux.

Le principe est assez simple. Le projet doit d'abord définir des besoins utilisateurs et les faire valider avec une estimation des temps de développements et des coûts de production comme une gestion de projets classique. Ensuite le développement sera découpé en itérations visant à sortir plusieurs versions fonctionnelles du logiciel. Le but est la réalisation d'un logiciel léger répondant aux principaux besoins du client. A chaque itération, des jeux de tests automatiques valident la version avant de passer à une itération suivante. Le diagramme suivant illustre ce principe :

Au niveau de la méthode de programmation, elle consiste à programmer à deux sur le même écran. Le premier codeur sera actif et le deuxième validera au fur et à mesure les développements. De plus la méthode de programmation la plus simple et la plus compréhensible sera toujours privilégiée. Le code sera ainsi facilement adaptable et réutilisable. Chaque binôme travaillera sur un morceau de code. Une fois réalisé, un jeu de test sera effectué et si tous les tests définis s'effectuent avec succès, la portion de code sera validée. Après chaque modification du code, le jeu de test devra être effectué pour valider les modifications.

Cette méthode nécessite de mettre en place une réelle communication au niveau des développeurs afin que tout le monde ait une vue globale sur le projet. Cela s'oppose à la traditionnelle méthode où chaque personnne se verra attribuer le développement d'un module indépendant pour le projet avec au final une phase d'assemblage des modules souvent assée sportive.

Bien qu'à première vue la méthode semble plutôt générer une perte de temps, le fait est que programmer à deux sur un même poste s'avère, au final, un gain de temps notamment en réduisant les bugs. Cela n'est pas sans rappeler nos années fac quand on réalisait les travaux pratiques à deux sur une même machine.

Dans tous les cas, l'extrême programming, bien qu'utilisant des principes simples à mettre en oeuvre, reste une méthode de programmation très intéressante et puissante. Malgré cela, je m'interroge sur sa mise en place pour des projets de développements de sites car cette méthode semble plutôt destinée à des projets complexes et à long terme.

Pour ceux qui voudraient en savoir plus voici mes références :

 - http://fr.wikipedia.org/wiki/Extreme_programming
 - http://www.xprogramming.com/
 - http://www.design-up.com/articles/extreme-programming/dossierxp/index.html