L’Extreme Programming s’appuie sur une communication disciplinée et des tests
unitaires afin de surmonter la résistance au remaniement substantiel (modification
ou réécriture) du code que l’on trouve dans les projets de développement de logiciels traditionnels.
Les projets XP ont généralement peu ou pas de travail de conception en amont, et se
concentrent plutôt sur le développement de la fonctionnalité la plus importante du système en une itération rapide, suivie par la deuxième plus importante, puis la troisième et ainsi de suite.
Au fur et à mesure que le système progresse et que de nouveaux problèmes
apparaissent, le code est impitoyablement remanié pour en tenir compte, même si cela implique de le réécrire complètement à chaque itération. Un vaste ensemble de tests unitaires est étendu et conservé à chaque itération ultérieure afin de soutenir ce processus et de mettre rapidement en évidence les problèmes du code remanié.
Bien qu’elle ne fasse pas spécifiquement partie du processus, la programmation en
binôme est souvent utilisée en conjonction avec XP afin d’améliorer encore les capacités de test, de fournir une caisse de résonance et de prévenir les erreurs évidentes des programmeurs lorsqu’elles se produisent (un développeur repère l’erreur de l’autre au moment où elle est commise).
Le processus d’Extreme Programming, de par sa nature même, exige une interaction
profonde et constante avec le client pour le logiciel développé à chaque itération, et a des frais généraux relativement élevés. Le retour sur investissement est que les projets ont quelque chose à montrer beaucoup plus rapidement que ce n’est le cas avec la plupart des méthodologies de développement traditionnelles.