Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
| eadl:bloc3:xp:chap1 [2025/11/23 12:28] – [Tableau des Principes XP] jcheron | eadl:bloc3:xp:chap1 [2025/11/23 14:48] (Version actuelle) – [Principes XP] jcheron | ||
|---|---|---|---|
| Ligne 55: | Ligne 55: | ||
| - | ===== Principes XP – Fondations pour les Pratiques Agiles ===== | + | ==== Principes XP ==== |
| Les **principes XP** servent de **pont entre les valeurs et les pratiques**. Ils expliquent **pourquoi** certaines pratiques (comme le TDD ou le pair programming) sont efficaces, et comment les adapter à différents contextes techniques. | Les **principes XP** servent de **pont entre les valeurs et les pratiques**. Ils expliquent **pourquoi** certaines pratiques (comme le TDD ou le pair programming) sont efficaces, et comment les adapter à différents contextes techniques. | ||
| - | --- | + | ---- |
| - | ==== Tableau | + | |
| + | === 1. Humanity | ||
| + | **Pourquoi ?** Des développeurs épanouis = code de meilleure qualité. | ||
| + | |||
| + | |< 100% 10% 30% 30% - >| | ||
| + | ^ **Aspect** | ||
| + | | **Sécurité psychologique** | Environnement où on ose poser des questions sans jugement. | ||
| + | | **Autonomie** | ||
| + | | **Reconnaissance** | ||
| + | |||
| + | === 2. Economics === | ||
| + | **Pourquoi ?** Toute décision technique doit se justifier par sa **valeur business**. | ||
| + | |||
| + | |< 100% 10% 30% 30% - >| | ||
| + | ^ **Critère** | ||
| + | | **Coût vs. Valeur** | ||
| + | | **Dette Technique** | ||
| + | | **Priorisation** | ||
| + | |||
| + | === 3. Mutual Benefit === | ||
| + | **Pourquoi ?** Les pratiques | ||
| + | |||
| + | |< 100% 10% 30% 30% - >| | ||
| + | ^ **Pratique** | ||
| + | | **TDD** | ||
| + | | **CI/ | ||
| + | | **Clean Code** | ||
| + | |||
| + | === 4. Self-Similarity | ||
| + | **Pourquoi ?** Réutiliser des solutions éprouvées, | ||
| + | |||
| + | |< 100% 10% 30% 30% - >| | ||
| + | ^ **Contexte** | ||
| + | | **Microservices** | ||
| + | | **Tests** | ||
| + | | **Code Reviews** | ||
| + | |||
| + | === 5. Improvement (Kaizen) === | ||
| + | **Pourquoi ?** L' | ||
| + | |||
| + | |< 100% 10% 30% 30% - >| | ||
| + | ^ **Niveau** | ||
| + | | **Code** | ||
| + | | **Processus** | ||
| + | | **Équipe** | ||
| + | |||
| + | === 6. Diversity === | ||
| + | **Pourquoi ?** Des équipes diversifiées = **meilleures solutions techniques**. | ||
| + | |||
| + | |< 100% 10% 30% 30% - >| | ||
| + | ^ **Type de Diversité** ^ **Exemple** | ||
| + | | **Compétences** | ||
| + | | **Expérience** | ||
| + | | **Perspectives** | ||
| + | |||
| + | === 7. Reflection === | ||
| + | **Pourquoi ?** Apprendre de chaque action pour **s' | ||
| + | |||
| + | |< 100% 10% 30% 30% - >| | ||
| + | ^ **Type** | ||
| + | | **Rétrospective** | ||
| + | | **Postmortem** | ||
| + | | **Code Review** | ||
| + | |||
| + | === 8. Flow === | ||
| + | **Pourquoi ?** Un flux de travail fluide = **livraisons plus rapides**. | ||
| + | |||
| + | |< 100% 10% 30% 30% - >| | ||
| + | ^ **Obstacle** | ||
| + | | **Blocages** | ||
| + | | **Dépendances** | ||
| + | | **Feedback Lent** | ||
| + | |||
| + | === 9. Opportunity === | ||
| + | **Pourquoi ?** Transformer les problèmes en **opportunités d' | ||
| + | |||
| + | |< 100% 10% 30% 30% - >| | ||
| + | ^ **Problème** | ||
| + | | **Bug Critique** | ||
| + | | **Dette Technique** | ||
| + | | **Conflit d' | ||
| + | |||
| + | === 10. Redundancy === | ||
| + | **Pourquoi ?** Certaines redondances sont **utiles**, pas du *waste*. | ||
| + | |||
| + | |< 100% 10% 30% 30% - >| | ||
| + | ^ **Type** | ||
| + | | **Tests** | ||
| + | | **Documentation** | ||
| + | | **Reviews** | ||
| + | |||
| + | === 11. Failure === | ||
| + | **Pourquoi ?** L' | ||
| + | |||
| + | |< 100% 10% 30% 30% - >| | ||
| + | ^ **Type d' | ||
| + | | **Déploiement Raté** | ||
| + | | **Bug en Prod** | ||
| + | | **Estimation Fausse** | User story mal découpée. | ||
| + | |||
| + | === 12. Quality === | ||
| + | **Pourquoi ?** La qualité n'est **pas négociable** - c'est un multiplicateur. | ||
| + | |||
| + | |< 100% 10% 30% 30% - >| | ||
| + | ^ **Pratique** | ||
| + | | **Clean Code** | ||
| + | | **TDD** | ||
| + | | **Definition of Done**| Checklist stricte (tests, docs, reviews). | ||
| + | |||
| + | === 13. Baby Steps === | ||
| + | **Pourquoi ?** Des petites étapes = **moins de risques**, plus de succès. | ||
| + | |||
| + | |< 100% 10% 30% 30% - >| | ||
| + | ^ **Contexte** | ||
| + | | **Legacy Code** | ||
| + | | **Nouvelle Feature** | ||
| + | | **Apprentissage** | ||
| + | |||
| + | === 14. Accepted Responsibility === | ||
| + | **Pourquoi ?** La responsabilité **se prend**, ne s' | ||
| + | |||
| + | |< 100% 10% 30% 30% - >| | ||
| + | ^ **Pratique** | ||
| + | | **TDD** | ||
| + | | **On-Call** | ||
| + | | **Code Ownership** | ||
| - | ^ **Principe** | ||
| - | | **Humanity** | ||
| - | | ::: |- Sécurité psychologique (*psychological safety*) pour oser poser des questions. | ||
| - | | ::: |- Satisfaction via l’autonomie et l’impact visible du travail. | ||
| - | | **Economics** | ||
| - | | ::: |- Toute décision technique doit être évaluée en termes de **coût vs. valeur business**. | ||
| - | | ::: |- Exemple : *"Ce refactor vaut-il 2 sprints si le gain métier est nul ?" | ||
| - | | **Mutual Benefit** | ||
| - | | ::: |- Exemples : | ➔ **Livraisons plus fréquentes** = feedback client plus rapide. | ||
| - | | ::: |- *Tests automatisés* : gain temps pour les devs **et** qualité pour le client. | ||
| - | | ::: |- *Code simple et lisible* : maintenabilité **et** onboarding facilité. | ||
| - | | **Self-similarity** | ||
| - | | ::: |- Un pattern qui marche dans un micro-service peut inspirer une solution dans un autre. | ||
| - | | ::: |- **Mais** : chaque contexte est unique (ex : *legacy code* vs. *greenfield*). | ||
| - | | **Improvement** | ||
| - | | ::: |- Pas de perfectionnisme, | ||
| - | | ::: |- Exemple : refactoring de 10% du code à chaque PR. | ➔ **Culture d’apprentissage** (ex : *blameless postmortems*). | ||
| - | | **Diversity** | ||
| - | | ::: |- Compétences complémentaires (ex : *backend* + *DevOps*). | ||
| - | | ::: |- Respect des opinions divergentes (ex : *" | ||
| - | | **Reflection** | ||
| - | | ::: |- Exemples : | ➔ **Améliore les processus** (ex : ajustement des *DoD*). | ||
| - | | ::: |- *Rétrospectives* : " | ||
| - | | ::: |- *Code reviews* : " | ||
| - | | **Flow** | ||
| - | | ::: |- Exemples : | ➔ **Limite le *multitasking*** (moins de *context switching*). | ||
| - | | ::: |- *Intégration continue* : feedback en minutes. | ||
| - | | ::: |- *Petites user stories* : évite les blocages longs. | ||
| - | | **Opportunity** | ||
| - | | ::: |- Exemples : | ➔ **Amélioration des compétences** (ex : formation sur un nouveau tool). | ||
| - | | ::: |- Un *bug critique* → opportunité pour améliorer les tests. | ||
| - | | ::: |- Une *dette technique* → occasion de refactor. | ||
| - | | **Redundancy** | ||
| - | | ::: |- Exemples : | ➔ **Sécurité** (ex : double vérification des PRs). |- **Linters/ | ||
| - | | ::: |- *Tests redondants* : couverture multi-niveaux (unitaires + intégration). | ||
| - | | ::: |- *Pair programming* : 2 paires d’yeux sur le même code. | ||
| - | | **Failure** | ||
| - | | ::: |- Exemples : | ➔ **Solutions plus robustes** (ex : *chaos engineering*). | ||
| - | | ::: |- Un *déploiement raté* → amélioration du pipeline CI/ | ||
| - | | ::: |- Un *bug en prod* → renforcement des tests E2E. | ||
| - | | **Quality** | ||
| - | | ::: |- Exemples : | ➔ **Meilleure vélocité à long terme** (moins de régressions). | ||
| - | | ::: |- *Clean Code* : noms de variables explicites, fonctions courtes. | ||
| - | | ::: |- *Tests automatisés* : 100% de couverture pour le code critique. | ||
| - | | **Baby Steps** | ||
| - | | ::: |- Exemples : | ➔ **Livraisons plus fréquentes** (ex : *trunk-based development*). | ||
| - | | ::: |- *Test-First Programming* : écrire un test avant le code. | ➔ **Feedback immédiat** (ex : *red-green-refactor*). | ||
| - | | ::: |- *Petites PRs* : max 200 lignes de code. | ||
| - | | **Accepted Responsibility** | **Responsabilité active** (vs. assignée) : | ➔ **Ownership accru** (ex : un dev *possède* une feature de bout en bout). | ||
| - | | ::: |- Exemples : | ➔ **Qualité accrue** (ex : *"Si je code la feature, je teste aussi ses edge cases" | ||
| - | | ::: |- *TDD* : le dev qui écrit le code écrit aussi les tests. | ||
| - | | ::: |- *On-call* : rotation volontaire pour la prod. | ||