Contextes où les pratiques XP font face à de véritables défis ou nécessitent une adaptation importante.
De nombreux projets logiciels ont des contrats qui fixent la portée, la date et le prix. L'approche itérative d'XP entre en conflit avec cela.
La position XP : Vous ne pouvez pas fixer les trois (portée, date, ressources). Quelque chose doit être flexible. XP préfère une portée flexible avec une qualité fixe.
La réalité contractuelle : Les clients veulent savoir exactement ce qu'ils obtiendront, quand et pour combien. Les contrats traditionnels promettent cela.
Tensions :
Options :
XP dans des environnements contractuels n'est pas impossible, mais cela nécessite l'éducation du client et la négociation du contrat.
Le piège du contrat
Les contrats traditionnels supposent que vous pouvez tout savoir à l'avance. Vous ne le pouvez pas. Quelqu'un assume le risque de cette incertitude — soit le client (ordres de modification) soit le fournisseur (dépassements). XP tente de le partager par la collaboration.
XP a été conçu pour des équipes colocalisées. Cela peut fonctionner à distance, mais seulement avec de bons outils et une bonne culture de communication.
Défis :
Si votre équipe distribuée a :
...les pratiques XP auront du mal.
Pour que cela fonctionne, il faut :
Certaines équipes distribuées font très bien XP. D'autres ne peuvent pas le faire fonctionner. La différence est généralement la culture de communication, pas la géographie.
Les industries comme la santé, la finance et l'aviation ont des exigences réglementaires qui peuvent entrer en conflit avec les pratiques XP.
Tensions :
Cependant : XP n'est pas impossible dans les environnements réglementés. De nombreuses équipes réglementées utilisent XP avec succès.
Adaptations :
L'idée clé : Les pratiques de qualité d'XP dépassent souvent les minimums réglementaires. Des tests complets, la révision de code (binôme) et la traçabilité sont des choses que les régulateurs veulent.
Ce à quoi XP résiste, c'est le gaspillage : documentation pour elle-même, longs cycles d'approbation, cérémonie qui n'améliore pas la qualité.
Une équipe de dispositifs médicaux utilise le TDD (les tests sont des preuves de validation), la programmation en binôme (révision à deux personnes) et l'IC (traçabilité). Ils déploient moins fréquemment mais travaillent toujours de manière itérative. Les audits se déroulent bien parce que les preuves sont intégrées.
Une équipe produit des volumes de documents de conception avant le codage (jamais mis à jour), effectue des tests manuels à la fin (trouvant des bogues tard) et évite le changement (parce que le changement nécessite une re-documentation). La qualité est médiocre ; la conformité est nominale.
Les pratiques d'ingénierie d'XP ne sont pas négociables. Si l'équipe refuse de les adopter, XP ne fonctionne pas.
Résistance courante :
Si la résistance vient des développeurs :
Si la résistance vient de la direction :
XP nécessite l'adhésion. Vous pouvez introduire les pratiques progressivement, mais si l'équipe ou l'organisation refuse de s'engager dans l'excellence technique, XP ne prendra pas racine.
La résistance vient souvent de la peur. Peur d'être exposé comme ne sachant pas quelque chose. Peur de ralentir. Peur du changement. Adressez la peur, pas seulement l'objection.
Certains domaines rendent le TDD beaucoup plus difficile :
Applications à forte composante UI : Tester l'apparence visuelle et l'interaction peut être délicat. (Bien que les outils modernes comme React Testing Library aient amélioré cela.)
Modèles d'apprentissage automatique : Tester des résultats probabilistes ne correspond pas au modèle assert-equals.
Systèmes dépendants du matériel : Le comportement des dispositifs physiques est difficile à simuler.
Systèmes hautement concurrents : Le comportement dépendant du timing est difficile à tester de manière déterministe.
Pour ces domaines :
N'utilisez pas cela comme excuse pour sauter complètement les tests. Chaque système a des parties testables. Poussez le TDD aussi loin qu'il peut aller ; adaptez-vous là où vous le devez.