Extreme Programming Le projet social Angèle Batanero Thierry Cros 1
Qui sommes-nous? Angèle Batanero Développeur Thierry Cros C++ Java Coach depuis 10 ans 2
Agenda XP, qu'es aco? Valeurs, principes Pratiques XP, au cœur de l'agile Planification Équipe Développement L'Intention des Anarchistes Organisationnels XP (Agile) : le projet social «Insurrection des consciences» 3
XP, cet inconnu célèbre Idées reçues... XP, c'est pour les Développeurs «geeks» XP, cela ne fonctionne que sur des petits projets sans enjeux XP c'est juste un complément technique à Scrum 4
XP : un nom pas vraiment marketing......mais qui annonce la couleur Extreme Ce sont donc des extrémistes.. Des révolutionnaires! Programming Ah bon... On ne conçoit pas, on n'analyse pas... 5
«programming» Quelles activités apportent vraiment une Valeur Ajoutée? Programming «Coder» (Java...) Paramétrer Programming = Fabriquer le produit Remettre en cause, réduire voire éliminer les activités «non V.A.» 6
«extreme» Une fois les activités «non VA» réduites, quelles activités conserver et dans quelle proportion? Dialogues Tests Conception Relecture Extreme Programming = «Pousser à fond» activité à Valeur Ajoutée 7
Extreme Programming = centré activités à Valeur Ajoutée 8
XP : «la» synthèse L'originalité d'xp réside Dans la synthèse faite de principes et pratiques Dans l'apport de pratiques spécifiques (stories, TDD...) 9
La «constitution» XP Valeurs Principes Pratiques Rôles Cycle de Vie 10
Rôles essentiels Une équipe, plusieurs rôles Client (Product Manager) Spécifie les demandes et les tests-client, planifie en tenant compte de la VA des demandes Développeur Estime les demandes, réalise Un point focal pour tous : l'importance Métier offerte par le produit 11
Cycle de Vie XP 1 Exploration 2 2 mois max. Engagement 3 4 1 semaine 5... Pilotage par feedback Des années! n Mort de l'appli 12
Agenda XP, qu'es aco? Valeurs, principes Pratiques XP, au cœur de l'agile Planification Équipe Développement L'Intention des Anarchistes Organisationnels XP (Agile) : le projet social «Insurrection des consciences» 13
Valeurs de l' Extreme Programming Communication Combien d'exemples... et de contre-exemples! Feedback (concret et rapide) Pour piloter à partir d'éléments les plus objectifs Simplicité Le pari de l'extreme Programming, pour tous, tout le temps Courage De changer de rôle, de vision du produit Respect Respecter et être respecté en tant que personne Principe Lean 14
Valeur? Valeur : norme de conduite personnelle et/ou sociale* * http://fr.wikipedia.org/wiki/valeur 15
XP : les principes Humanisme Flot continu Économie Opportunité Bénéfices mutuels Redondance Autosimilarité Échecs Qualité Petites étapes Amélioration continue Diversité Réflexion Responsabilité choisie 16
Pourquoi des principes Entre valeurs et pratiques, les principes - guident l'adaptation d'xp - sont autant d'axes d'amélioration d'un existant 17
Humanisme «Le propos d'xp est le changement social» K. Beck Revaloriser le métier du développement Prendre en compte la dimension humaine dans les activités liées au logiciel Exprimer les besoins Développer Avoir le droit de bien faire, s'accomplir dans son travail, être fier de son travail Pouvoir influencer la façon dont on travaille Être responsable, s'auto-gérer 18
Humanisme : hédonisme et responsabilité Le plaisir de coder, de participer au développement du produit La responsabilité de la fabrication D'un monde centré «pouvoir»... À un collectif coresponsable Pas facile... Ni pour le Manager, ni pour le Développeur 19
Diversité La diversité engendre l'efficacité... Pourvu que les différences soient vues comme des opportunités Jeunes et Vieux Écoles et Universités... 20
Réflexion La vie en métaphores Comment telle pratique... Association Sport peut aider à améliorer mon travail Amélioration continue Le 12ème principe agile Comment et pourquoi je travaille 21
Agenda XP, qu'es aco? Valeurs, principes Pratiques XP, au cœur de l'agile Planification Équipe Développement L'Intention des Anarchistes Organisationnels XP (Agile) : le projet social «Insurrection des consciences» 22
Pratiques de l'extreme Programming 13 pratiques de base 1. Expression de besoins et planification 2. Le facteur humain 3. Conception 4. Coder et livrer 23
Histoires et Planification 1/4 Demandes? Les besoins sont décrits sous forme d'histoires d'utilisation*. Le cycle est itératif incrémental, la durée par défaut d'une itération est d'une semaine. La vision globale est planifiée à l'échelle du trimestre. Une marge de sécurité permet d'absorber les imprévus (slack). * Ce sont les User Stories : «En tant que... je peux... pour telle V.A...» 24
Facteur humain, équipe 2/4 Un plateau-projet, où nous sommes assis ensemble Équipe complète : esprit d'équipe, entr'aide, y compris le Client Espace d'information : les infos sont affichées, disponibles directement (radiateur d'information, transparence) Un rythme viable pour tous les membres de l'équipe : Développeurs, Client... Nous codons en binôme. 25
Conception 3/4 Conception émergente une règle d'or, pas de duplication de code Attention aux couplages Test Driven Development : d'abord écrire le test, puis coder, puis mettre au point, période de ½ heure. Le refactoring est une conséquence de «conception émergente» 26
Conception émergente Itération 1 Histoires d'utilisation A320 Itération n Histoires du A380 Avion A320 A320 A380 YAGNI! 27
TDD User story «en tant qu'élève je peux calculer une division» Des classes : Calculateur, Afficheur... TDD - ½ heure : 1) Écrire les tests 2) Coder 3) Passer les tests 28
Concrètement : écrire un test... package Calculateur; public class Calc { public int additionner(int a, int b){ return a + b; } public int soustraire(int a, int b){ return a - b; } // Un test simple pour commencer... Conception @Test public void testdivisionsimple() { Calc ma_calculette = new Calc(); int quotient = ma_calculette.diviser(10,2); Assert.assertEquals(5, quotient); } 29
Puis le code Les anciens tests passent... Le nouveau ne passe pas, on écrit donc le code pour faire passer le test public int diviser(int dividende, int diviseur) { return dividende / diviseur; } Tous les tests passent (nouveau et anciens) 30
Et un autre test «erreur» @Test public void testdivisionsimple() { Calc ma_calculette = new Calc(); int quotient = ma_calculette.diviser(10,2); Assert.assertEquals(5, quotient); } @Test(expected=ArithmeticException.class) public void testdivisionparzero() { Calc ma_calculette = new Calc(); int quotient = ma_calculette.diviser(11,0); } 31
Enfin... On vérifie que tous les tests passent Les test fournissent le «how to» de la méthode Ils ont permis au passage de concevoir la méthode Et permettent de s'assurer que la méthode se comporte comme on le souhaite 32
La barre verte, toujours! 33
Coder et livrer 4/4 Intégration continue, plusieurs fois par jour Nous testons et intégrons très souvent, le build dure 10 minutes maximum. (Ten Minutes Building) Le code-source et les tests sont des documents obligatoires Le code est partagé entre tous Gestion de configuration : une seule version officielle (qui évolue en permanence) Déploiement au plus tôt : chaque nuit... chaque deux semaines ou au maximum chaque trimestre 34
Intégration continue Plusieurs «niveaux» Chaque nuit À la demande Systématiquement (chaque «commit») : 10' Building Ressources Serveur dédié Gestion type Hudson Associer Gestion de conf Intégration continue et Tests 35
Agenda XP, qu'es aco? Valeurs, principes Pratiques XP, au cœur de l'agile Planification Équipe Développement L'Intention des Anarchistes Organisationnels XP (Agile) : le projet social «Insurrection des consciences» 36
XP, au cœur de l'agile Manifeste agile (2001) Valeurs Principes Histoire du manifeste Les Anarchistes organisationnels 37
Dilbert? Non, merci. «l'extreme Programming a connu un développement dans son utilisation et son intérêt, non pas grâce à la programmation en binôme ou au refactoring, mais parce que, pris dans leur ensemble, ses pratiques définissent une communauté de développeurs libérée des poids des sociétés "Dilbertesques".» Histoire du Manifeste agile, Jim Highsmith Traduction de Fabrice Aimetti http://www.fabrice-aimetti.fr 38
Vous avez aimé Peter? Vous adorerez Dilbert! Le principe de Dilbert est une version aggravée du principe de Peter. Dans le livre Le Principe de Dilbert, Scott Adams rappelle le principe de Peter : Tout employé tend à s'élever à son niveau d'incompétence. Le nouveau principe, principe de Dilbert, s'énonce ainsi : «Les gens les moins compétents sont systématiquement affectés aux postes où ils risquent de causer le moins de dégâts : ceux de managers.» Source : wikipedia 39
l'agilité au bulldozer Lundi, vous passez à l'agilité. 40
Agile, Lean : attention danger? Améliorer la productivité, Agile ou Lean sont faits pour ça! Finance Adaptateur «Notre premier objectif est de livrer au plus tôt et régulièrement...» 1er principe agile «Livrer rapidement» principe Lean Agile Donc Agile ou Lean sont une méthode pour faire plus de profit! 41
Ne nous trompons pas d'objectif Changer le système plus que condamner des personnes. 42
Agile, Lean : à la source 2 piliers Économie : la sobriété heureuse «l'activité humaine qui consiste en la production, la distribution, l'échange et la consommation de biens et de services.» Humanisme «Respecter les personnes» principe Lean «Rythme viable» «auto-organisation» «auto-amélioration» principes agiles 43
Agile : l'intention «À la base, je crois que les Méthodologistes Agiles sont vraiment des "sentimentaux" en parlant de livrer les bons produits aux clients et en travaillant dans un environnement qui fait plus que parler des "gens comme nos ressources les plus importantes" mais en réalité agit comme si les gens étaient les plus importants» Source : histoire du Manifeste Les Anarchistes organisationnels 44
Anarchie? «L'anarchie, c'est l'ordre sans le pouvoir.» Léo Ferré 45
Une métaphore : solutions locales... De la grosse industrie agricole "Ceux qui sont en villeguerre peuvent parfaitement se solidariser avec ceux qui sont à la campagne, Chimie et ainsi on fait un pont dessus par Agriculture industrielle toute la sphère affairiste. Quels résultats? Et l'autonomie, c'est Aux le maître AMAPsmot aujourd'hui." http://terre-humanisme.org Rôle du trésorier dans une AMAP? Pierre Rabhi 46
AMAP et Plateau Projet agile AMAP Plateau agile Des Consommateurs Un Product Owner Un Paysan Des Développeurs Collaborent Production Ramasser les légumes Responsabilités simples Collaborent Production Tester Responsabilités simples Le Product Owner est solidaire des Développeurs 47
Pré-requis... Motivation Changer ses habitudes Question de valeurs et de prise de conscience «j'achète plus que des légumes» Faire confiance Capacité à jouer son rôle Si le Paysan ne sait pas communiquer? Si les Consommateurs ne voulaient plus payer? Le bon «staffing» : adéquation du nombre 48
XP : l'humanisme en projet social «Le propos d'xp est le changement social» K. Beck Revaloriser le métier du développement Et des Utilisateurs! Prendre en compte la dimension humaine dans les activités liées au logiciel Exprimer les besoins Développer Avoir le droit de bien faire S'accomplir dans son travail - Être fier de son travail Pouvoir influencer la façon dont on travaille Être responsable, auto-géré 49
Autrement dit... D'un monde, piloté par l'argent, où l'on travaille pour «gagner» sa vie... à un monde où l'on participe à l'inter-dépendance dans un rôle de - Développeur - Utilisateur l'argent étant un moyen. 50
«Insurrection des consciences» 51
Utopie? «L'utopie est simplement ce qui n'a pas encore été essayé!» Théodore Monod 52
Quelques pistes S'informer, parler, échanger Métaphores Solutions locales... Je, Équipe, projet, organisation Les Utilisateurs solidaires des Développeurs AMAP Managez votre manager Plan Do Check Act, Go & See Se forger sa propre opinion, concrètement Être so-li-dai-re : asso, syndicat 53
«Imagine an Agile World» Localement agile! Agile Tour 2010 - Toulouse. 54