Dans ce chapitre :
« Le talent permet de gagner des parties. Mais c’est le travail d’équipe et l’intelligence qui permettent de gagner les championnats. »
Michael Jordan
L’équipe de développement est au cœur des projets Scrum. Le propriétaire du produit et le Scrum Master orbitent autour pour veiller à ce que l’environnement soit aussi idéal que possible afin que l’équipe de développement maximise sa productivité. Dans ce chapitre, vous allez découvrir comment l’équipe de développement doit s’organiser.
Une fois que vous avez défini les rôles dans l’équipe, la vision et la feuille de route, l’étape suivante consiste à commencer l’estimation du travail à fournir pour chaque exigence. L’équipe de développement commence par estimer l’effort requis pour les exigences prioritaires. Vous définissez ainsi un point de référence pour la suite. Vous faites le rapport numérateur (total du backlog du produit) / dénominateur (vitesse moyenne), ce qui vous donne une estimation du nombre de sprints nécessaires pour réaliser tout ou partie des éléments du backlog du produit. Je vais vous montrer comment produire rapidement et finement des estimations à ce niveau de généralité.
À Hollywood, on désigne les acteurs et les chanteurs en parlant de « talents ». C’est eux qui vont sur scène et qui font le boulot. Tout le monde facilite ce processus, car lorsque le talent réussit, tout le monde réussit. Pensez donc à l’équipe de développement comme à un talent.
L’équipe de développement est un talent responsable de la création et du développement du produit. Elle détermine le comment et le combien. Autrement dit, elle peut déterminer comment elle va développer les exigences et combien elle peut en réaliser lors de chaque sprint. Elle est dédiée à un unique projet à la fois ; elle est polyvalente, auto-organisée et autogérée.
L’équipe de développement est intentionnellement limitée à sept membres, plus ou moins deux. Cette taille permet de créer un groupe autosuffisant et auto-organisé comprenant une diversité de compétences. Souvenez-vous, chaque fois que vous rajoutez un nouveau membre, le nombre de canaux de communication à établir croît géométriquement. S’il y a plus de neuf membres dans votre équipe de développement, elle ne sera plus en mesure de s’auto-organiser. Dans le modèle en cascade, ce problème est masqué à l’aide d’un chef de projet à qui il incombe de coordonner toute la communication. Scrum fait l’économie de trop de canaux de communication, ainsi que d’un chef de projet.
Si sept personnes, plus ou moins deux, est une taille gérable et efficicace, le facteur clé reste l’autonomie. L’équipe est-elle capable d’élaborer des exigences, d’en concevoir la réalisation, de les développer, de les tester, de les intégrer, de les documenter et de les faire approuver ? Les points de fragilité ont-ils été éliminés (autrement dit, une compétence est bien toujours partagée par au moins deux personnes) ? La taille totale est-elle bien de neuf personnes au plus ? Si les réponses à ces trois questions sont « oui », vous disposez d’une équipe de développement bien dimensionnée, polyvalente. Si un propriétaire du produit doit savoir décider et si un Scrum Master doit pouvoir influencer, le membre d’une équipe de développement doit être versatile et curieux, et être prédisposé au partage. Les premiers de la classe ne sont pas bienvenus.
Sur bien des points, l’équipe de développement Scrum s’oppose à une équipe classique. Dans Scrum, tout membre de l’équipe de développement va développer sa polyvalence. De plus, tous les membres de l’équipe sont impliqués dans le processus de fixation des objectifs, et ils contrôlent totalement la manière dont ils vont développer. Enfin, ils sont récompensés en tant qu’équipe.
Le psychologue d’Harvard Dan Gilbert a conduit une recherche dont les résultats ont montré que les personnes qui gagnent 5 millions de dollars par an ne sont pas plus heureuses que celles qui en gagnent 50 000.
Daniel Pink écrit sur la motivation dans son excellent livre Drive : The Surprising Truth About What Motivates Us (La surprenante vérité sur ce qui nous motive, publié par Riverhead Books). Pink dénonce le mythe selon lequel il est possible de motiver les gens avec toujours plus d’argent. De manière surprenante, Pink a découvert que plus l’incitation monétaire est grande, moindres sont les résultats. L’argent est un facteur, mais seulement pour ne plus avoir ensuite à en parler.
En creusant le sujet, Pink a découvert trois facteurs spécifiques qui contribuent à créer un environnement propice aux meilleurs résultats, que ce soit chez vous comme à votre travail : l’autonomie, la maîtrise et l’utilité. Laissez ceux que vous encadrez déterminer comment faire leur travail, donnez-leur de l’espace et du temps pour développer leurs compétences et en acquérir de nouvelles, et donnez du sens à ce qu’ils font.
Le cadre de Scrum peut permettre de créer le type d’environnement évoqué par Pink. L’équipe de développement est conçue pour être auto-organisée et autonome dans son travail. La polyvalence et le développement de nouvelles compétences sont essentiels. La déclaration visionnaire et la communication directe avec le propriétaire du produit et les parties prenantes permettent à l’équipe de développement de comprendre ce qu’elle fait et pourquoi elle le fait.
Reportez-vous au livre de Pink ou à ses interventions sur TED pour plus d’informations sur ses recherches.
Comme mentionné précédemment, les membres de l’équipe de développement sont dédiés à un projet à la fois. Vous souhaitez qu’ils puissent se focaliser chaque jour sur l’objectif du sprint. Que ce soit le management fonctionnel ou quelqu’un d’autre qui choisisse les membres de l’équipe, il faut chercher à ce qu’elle réunisse une diversité de compétences. Ce qui nous amène au point suivant : la polyvalence.
Les gens ne sont généralement pas polyvalents par nature ; ils le deviennent. Commencez par une équipe composée de talents divers et construisez-la pour qu’elle devienne polyvalente. Dans l’idéal, vous voudrez que chaque développeur soit capable de tout faire. Ce n’est pas toujours possible, mais vous voudrez au moins que tout développeur soit capable de faire plus d’une chose. Devenir polyvalent est un processus.
Quelle que soit votre entreprise ou votre organisation, une vérité demeure : les gens partent en vacances, ils tombent malades, ils prennent de nouvelles fonctions, ils changent de travail. Un jour, ils sont à vos côtés, et le suivant, ils sont ailleurs. Dans les projets traditionnels, lorsqu’un développeur clé part en vacances, c’est tout le projet qui va en congés. Il souffre de délais, soit parce qu’il faut attendre que la personne revienne, soit parce qu’il faut en recruter et en mobiliser une autre.
Dans Scrum, vous luttez pour que votre équipe de développement soit polyvalente. De cette manière, vous éliminez un risque de défaillance. Si un membre de l’équipe de développement attrape la grippe, quelqu’un d’autre peut prendre sa place et faire le travail. La polyvalence présente aussi d’autres intérêts, comme :
Il existe plusieurs manières de développer la polyvalence d’une équipe ou d’une personne :
L’effet Hawthorne (ou effet de l’observateur) est basé sur des études qui montrent que la productivité d’un travailleur augmente quand quelqu’un le regarde faire. Le nom vient de Hawthorne Works, un fournisseur d’électricité de la banlieue de Chicago où la célèbre expérience s’est déroulée.
La résolution du problème du canard en plastique ou test du canard en plastique sont des termes qui font référence à un phénomène observé souvent en ingénierie logicielle. Les développeurs doivent expliquer leur problème de programmation à haute voix et en détail à un canard en plastique. Je l’ai vu faire. La plupart du temps, avant que le développeur ait terminé d’expliquer, la réponse lui vient à l’esprit. Un phénomène similaire peut être observé lorsqu’un ami vient vous parler d’un problème. Le seul fait de verbaliser le problème stimule une partie différente du cerveau si bien que des réponses peuvent venir à l’esprit.
La structure organisationnelle d’une équipe Scrum permet de prévenir les goulots d’étranglement dans le flux du travail. Grâce à la polyvalence, à la programmation en binôme, à la colocation et à l’accès direct entre celui qui formule une exigence et celui qui la développe, les lignes de communication sont clarifiées et la diversité des compétences est assurée. Tout cela fluidifie le travail.
Le mot-clé est ici l’appropriation. Les équipes auto-organisées et autogérées s’approprient ce qu’elles font. Dans une équipe de développement Scrum, c’est en partie ce qui garantit l’efficacité et le succès.
Mes clients me demandent parfois comment je peux leur garantir qu’ils obtiendront le maximum de leur équipe de développement. En réponse, je leur demande comment ils pourraient me garantir qu’une équipe de sport professionnelle donnera le maximum, sachant qu’ils perdront s’ils ne se donnent pas à fond. Rendre visibles leurs performances permet de renforcer l’implication.
Quoique la programmation en binôme puisse de prime abord paraître onéreuse – employer deux développeurs pour faire le même travail – c’est une pratique qui, dans l’ensemble, permet de réduire les coûts. Les coûts de développement augmentent, mais ceux de l’assurance qualité chutent complètement.
Il est moins onéreux d’éviter d’introduire des défauts dans un système que de devoir les supprimer une fois ce système déployé, pour les raisons suivantes :
Pour chaque défaut, l’équipe de développement doit trouver le bogue, développer le code pour le corriger, et espérer que la correction n’engendrera pas de nouveau défaut. Souvenez-vous, chaque fois que deux défauts sont corrigés, un nouveau défaut est généré lors du processus.
La visibilité et la performance sont étroitement corrélées. Améliorez la performance en augmentant la visibilité.
Une technique parfois utilisée consiste à disposer de deux équipes de développement (voire plus). Synchronisez leurs sprints de sorte que les revues des sprints se déroulent en parallèle. Invitez un responsable à assister à une revue choisie au hasard durant quelques minutes et demandez-lui de poser au moins une question avant de partir. Chaque équipe de développement sait que sa performance sera observée par le responsable, et elle voudra se faire bien voir. Par le passé, elles n’ont peut-être même jamais été reconnues pour le travail qu’elles ont fourni. Maintenant, elles peuvent produire un résultat dont elles sont fières. Elles s’exposent et sont reconnues. C’est extrêmement motivant, et cela favorise l’implication.
L’appropriation, et donc la responsabilisation, peuvent être renforcées dans une équipe Scrum des manières suivantes :
L’équipe de développement est d’autant plus performante qu’elle est stable. Nourrissez-la de projets, et donnez-lui ce dont elle a besoin pour faire le meilleur travail possible. Chaque fois que vous devez changer des membres de votre équipe, il faut du temps pour que la situation se stabilise. Protégez votre équipe de développement pour entretenir sa dynamique.
La théorie de la dissonance cognitive décrit notre tendance à nous en remettre à des informations, des croyances et des stimuli qui sont cohérents avec nos croyances et nos comportements. Dans Scrum, si l’équipe de développement a voix au chapitre, et qu’elle a le contrôle, elle se donnera plus de mal pour atteindre les objectifs prescrits. Elle essaiera de faire en sorte que ce qu’elle délivre soit cohérent avec ce à quoi elle s’est engagée.
La plupart des gens ont oublié ce que c’est que de travailler au même endroit et de faire l’expérience de l’amélioration de la productivité qui en résulte. Les gens apprécient l’idée, mais ne comprennent pas toujours les principes sous-jacents. Voici quelques avantages que procure une équipe colocalisée :
Les équipes de développement adorent Scrum pour tout un tas de raisons, notamment parce qu’elles se retrouvent dans un environnement qui leur procure de l’autonomie et qui les motive. Lorsque vous permettez à des gens de contribuer, ils deviennent partie du processus et s’approprient les résultats. L’effet fait boule de neige :
Lorsque vous pratiquez la colocalisation, votre propriétaire du produit et votre équipe de développement ont accès l’un à l’autre toute la journée. Toutes sortes de banalités peuvent être échangées, et il est tentant de penser que cela pourrait constituer du gaspillage. Toutefois, j’ai constaté que c’est alors que le vrai bon travail se fait. Les petites choses ne sont finalement pas si petites – ce sont des choses qui comptent, car elles font la différence. La qualité a besoin d’un retour, et le retour a besoin d’écoute. Lorsque l’écoute est bonne, de grandes choses deviennent possibles.
Parfois, sous-traiter est l’unique solution viable pour votre entreprise ou votre organisation. Dans ce cas, faites-le dans les règles de l’art. Colocalisez toute votre équipe Scrum. Votre équipe de développement a besoin d’un propriétaire du produit disponible, alors envoyez-en un, travailler directement avec l’équipe Scrum distante. Ou alors, créez un propriétaire du produit local, même s’il doit commencer à travailler comme un délégué du propriétaire du produit (voir Chapitre 2). Le gain en qualité et en efficacité dépassera de loin le coût du propriétaire du produit.
Lors de l’élaboration de la feuille de route du produit (voir Chapitre 1), l’équipe de développement produit une estimation générale de la quantité de travail que le projet représente. La valeur pratique de cette estimation n’apparaît pas avant que les sprints démarrent (voir Chapitre 5), mais elle permet de disposer d’un point de référence à partir duquel calculer d’autres estimations. C’est l’équipe de développement qui réalise l’estimation, car c’est aux gens qui font le boulot qu’il revient d’estimer l’effort qu’ils devront fournir.
Les techniques d’estimation du backlog ne sont pas exigées par Scrum. Ce sont des bonnes pratiques que les praticiens de Scrum ont dégagées et trouvées utiles sur le terrain.
La feuille de route du produit constitue l’amorce du backlog. Ce qui figure sur votre feuille de route, c’est ce que vous devez développer. Alors comment placer tous ces éléments dans votre backlog, et sur la base de quelle estimation du volume de travail ? Quelques bonnes pratiques peuvent être utilisées selon la situation. Avant de passer chacune en revue, il est important que vous compreniez ce que vous cherchez à faire en les mobilisant.
Si vous demandez à chaque membre de l’équipe Scrum ce qu’il entend par une exigence « terminée », vous obtiendrez autant de réponses que de membres de l’équipe. Avant de démarrer un projet, l’équipe Scrum doit définir ce que « terminé » signifie. Tant que vous ne serez pas parvenu à un consensus, les estimations seront basées sur des données erronées.
Comme expliqué au Chapitre 3, pour chaque exigence d’un sprint, vous devez parcourir les étapes suivantes du développement :
Cette définition de « terminé » doit être spécifique, précise, et bien décrire ce que cela signifie de mener des choses à leur terme pour obtenir le niveau de qualité que vous visez pour le projet. Considérez dans quel environnement le produit ou le service doit fonctionner et quel niveau d’intégration dans ce dernier peut être considéré suffisant. Par exemple, « Fonctionne dans l’environnement de développement », est probablement une mauvaise définition de « terminé ».
Tenez compte de ces quatre facteurs dans votre définition de « terminé » :
Lorsque vous êtes parvenu à une définition de « terminé », écrivez-la sur un poster que vous collerez sur le mur. Faites en sorte qu’elle soit en permanence devant le nez de l’équipe de développement et du propriétaire du produit. C’est ce que j’appelle de la documentation en face à face. Pas de couverture, pas de table des matières. Je rédige la documentation dans cet esprit : comment faire passer le message avec le minimum de mots.
Timebox (littéralement, la fenêtre temporelle) est le terme utilisé pour désigner le temps alloué à un évènement ou une activité. Si votre sprint prend deux semaines, sa timebox est de deux semaines.
Dans votre définition de « terminé », tenez compte du développement, mais aussi de la profondeur du test et de la documentation dont vous aurez besoin. Par exemple, vous pourriez considérer les tests suivants :
Considérez aussi les documentations suivantes :
Chacun de ces tests et chacune de ces documentations peut être plus ou moins opportun selon qu’on se place au niveau du sprint ou de la livraison – même si j’aurais tendance à dire que votre définition au niveau du sprint devrait englober tout ce qui est nécessaire pour la livraison. Vous pourriez aussi souhaiter inclure des éléments organisationnels. C’est votre choix ; tout ce qui compte, c’est d’avoir une définition claire de « terminé », élaborée par l’équipe Scrum pour tout le projet.
Une livraison correspond au moment où un ensemble de fonctionnalités est fourni par l’équipe Scrum. Cela peut survenir plusieurs fois durant un sprint, à la fin de chaque sprint, ou après une série de sprints. Ces fonctionnalités sont livrées à des utilisateurs finaux ou à des parties prenantes externes, qui vont les utiliser pour de vrai et faire un retour.
Un sprint régulier implique de terminer le développement, le test, la documentation et d’approuver les éléments figurant dans le backlog du sprint. Toutefois, avant de procéder à une livraison du produit, il peut être nécessaire de réaliser d’autres activités (comme des tests de performance ou de charge) qui sont hors de portée de l’équipe de développement durant le sprint. C’est pourquoi l’équipe Scrum procède à un sprint de livraison avant la livraison elle-même, pour procéder à ces tests supplémentaires. La clé, c’est qu’au terme de chaque sprint, les exigences doivent fonctionner et que cela doit pouvoir être démontré. Vous pouvez tester les exigences pour les ajuster durant le sprint de livraison, mais elles doivent fonctionner à la base.
Il est nécessaire d’estimer l’effort que le développement des exigences du backlog du produit requiert (au Chapitre 3, je traite de l’affinage du backlog du produit). Par exemple, vous pouvez passer 30 minutes sur des estimations chaque jour, à 17h00, avant que les membres de l’équipe ne quittent les lieux. De cette manière, à la fin de la semaine, vous aurez couvert le sujet, et vous serez prêt pour démarrer le sprint. Quelques équipes n’aiment pas développer le vendredi après-midi, et affinent plutôt alors le backlog. À vous de voir – seul le résultat compte.
Les équipes affinent généralement leurs estimations à trois niveaux. Cela fait partie du processus de décomposition des exigences pour être prêt à démarrer le prochain sprint. Vous pourriez prévoir plus de niveaux, selon votre produit. Généralement, vous affinerez dans cet ordre :
L’équipe de développement est responsable de l’estimation de l’effort requis pour réaliser toutes les exigences. Le Scrum Master peut faciliter ce processus, et le propriétaire du produit peut apporter des clarifications, mais la décision finale appartient aux développeurs qui font le boulot.
J’utilise des estimations relatives au lieu d’estimations précises (absolues), car dans nombre de situations, c’est beaucoup plus praticable. Par exemple, si je vous demande de regarder par la fenêtre et de me dire quelle hauteur fait le bâtiment voisin, quelle sera la précision de votre réponse ? Bonne – il fait 40 mètres. Quelle sera la justesse de votre réponse ? Faible. Pourquoi ? Parce que franchement, vous n’en avez aucune idée ; vous jouez aux devinettes. Mais si je vous demande de regarder deux bâtiments voisins et de m’indiquer lequel est le plus haut, je peux vous garantir que vous me donnerez la réponse juste à moins que vous n’ayez des problèmes de vue. Je mets cette précision à profit.
Les nombres de Fibonacci sont une excellente technique pour procéder à une estimation relative.
Avec Fibonacci, si quelque chose est plus grand, vous pouvez vous faire une idée de combien c’est plus grand. Les deux derniers nombres dans la séquence sont ajoutés pour créer le nombre suivant. Voici à quoi cela ressemble :
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, et ainsi de suite.
Tandis que l’énumération progresse, la distance entre les nombres augmente. Nous utilisons cette propriété pour admettre qu’une évaluation est d’autant moins précise qu’elle concerne un gros travail.
Un point d’histoire est le nombre de Fibonacci attribué à une exigence individuelle (autrement dit, une histoire utilisateur).
Les exigences prioritaires sont estimées au niveau de la feuille de route du produit :
Leonardo Pisano Bigollo, aussi connu sous le nom de Fibonacci, a vécu près de Pise, en Italie, entre approximativement 1170 et 1250. Reconnu largement comme un brillant mathématicien, il a non seulement inventé la célèbre suite de Fibonacci, mais aussi importé le système numérique indo-arabe en Europe. De nos jours, c’est la représentation symbolique des nombres utilisée dans le monde.
Les exigences de plus de 144 doivent être décomposées avant que l’équipe de développement puisse produire un semblant d’estimation qui tienne la route, alors n’estimez pas au-delà de 144. Il s’agit généralement des thèmes les plus généraux.
Quel que soit le nombre de Fibonacci, seules les cartes prioritaires doivent être décomposées en exigences adaptées à un sprint (dont je recommande de limiter le nombre à 8). Si vous avez assigné le nombre de Fibonacci 21 à une exigence prioritaire, elle doit être décomposée en exigences plus petites avant de pouvoir être intégrée à un sprint.
Les tailles étant établies, je peux appliquer quelques techniques pour estimer les exigences :
Dans le processus d’estimation des plus petits projets, l’équipe de développement commence comme suit : je les fais asseoir avec leur pile d’exigences écrites sur des cartes de 8 x 13. Je leur demande de prendre une exigence sur laquelle ils peuvent s’entendre sur un niveau d’effort de 5. Cela crée un point de référence.
Je leur demande de prendre une autre carte, et en se basant sur la première qui est à 5, je leur demande quel nombre affecter à la carte. S’il est plus grand que 5, serait-ce un 8 ? Un 13 ? Un 21 ? Le processus continue jusqu’à ce que quelques tailles soient établies. Je peux alors me lancer dans le planning poker.
Le planning poker
Une technique pour estimer l’effort repose sur une variante du poker.
Figure 4-1 : Des cartes de planning poker pour estimer l’effort requis par chaque exigence.
Vous aurez besoin d’un tas de cartes de planning poker, comme représenté sur la Figure 4-1 (vous pourrez en trouver sur le site https://plantinumedge.com/store/estimation-poker-cards). Vous pouvez aussi télécharger notre application de planning poker pour iPhone et/ou Android en recherchant « Platinum Edge Estimation Poker »). Vous pouvez même constituer votre propre jeu de cartes à l’aide de fiches cartonnées et d’un marqueur.
Comme seule l’équipe de développement décide de l’effort requis pour développer une exigence, seuls ses membres jouent. Le Scrum Master facilite et le propriétaire du produit lit les exigences et fournit des détails à leur sujet, mais aucun des deux ne donne d’estimation. Les choses se déroulent ainsi :
Je réalise généralement jusqu’à trois tours de planning poker pour chaque exigence afin que les principales inconnues soient révélées et découvertes, puis je fais ensuite estimer sur la base d’un nombre plus réduit de possibilités.
Si tous les développeurs sont d’accord sur un nombre au bout de trois tours, je peux passer à l’exigence suivante. Toutefois, il n’est pas obligatoire que tous les développeurs s’accordent sur un même nombre alors. Parvenu à ce point, j’utilise une technique d’élaboration du consensus nommée les cinq doigts.
Les cinq doigts
Méthode rapide et efficiente pour parvenir à un consensus, la méthode des cinq doigts peut être utilisée seule ou en complément du planning poker. L’idée est de parvenir rapidement à une estimation sur laquelle tous les membres de l’équipe peuvent s’entendre.
Figure 4-2 : Les cinq doigts, une méthode efficiente pour parvenir à un consensus dans bien des situations.
Peut-être que certains membres de l’équipe ont produit une estimation de 5, et d’autres une estimation de 8 pour la même exigence.
Le Scrum Master prend la carte de l’exigence et demande, par exemple, « Jusqu’à quel point un 8 pourrait vous convenir ? ». Chaque membre de l’équipe montre alors sa main, le nombre de doigts non repliés exprimant son niveau de confiance. Si tout le monde montre trois, quatre ou cinq doigts, l’affaire est entendue.
Si certains développeurs ne montrent qu’un ou deux doigts, tout comme lors du planning poker, la minorité doit s’expliquer et plus d’informations doivent être fournies si nécessaire. Le jeu des cinq doigts est alors répété, jusqu’à ce que tous les membres de l’équipe montrent au moins trois doigts (au moins « Oui, ça pourrait m’aller »).
Quand les cinq premières exigences ont été estimées, je peux passer à la planification de la livraison ou du sprint. J’en traite au Chapitre 5.
L’estimation par affinité
Le planning poker et les cinq doigts sont des méthodes efficaces pour parvenir à un consensus sur de petits projets. Mais que faire si le backlog du produit comprend plusieurs centaines d’exigences ? Il faudrait des jours pour estimer tout cela. C’est ici que l’estimation par affinité entre en jeu.
Au lieu de commencer par les nombres de Fibonacci, vous commencez par un concept plus familier – les tailles de t-shirt (par exemple, XS, S, M, L et XL).
Avec l’estimation par affinité, vous créez autant d’emplacements que de tailles, puis vous placez chaque exigence dans un des emplacements. Le déroulement est le suivant :
Figure 4-3 : L’estimation par affinité utilise des tailles de t-shirt pour les tailles des histoires utilisateur et affecte à chacune le nombre correspondant de la suite de Fibonacci.
En peu de temps, vous serez en mesure d’évaluer l’effort de centaines d’exigences. Vous pourrez alors planifier votre première livraison et/ou premier sprint.
Une fois que vous avez attribué des nombres de Fibonacci à vos exigences, vous disposez de points d’histoire avec lesquels travailler.
Le Chapitre 5 vous montre comment planifier les livraisons et les sprints. En gros, pour planifier votre premier sprint, l’équipe Scrum détermine un petit nombre d’exigences sur lesquelles travailler parmi les exigences de 1 à 8 points d’histoire. À la fin du sprint, l’équipe Scrum additionne les points des exigences terminées. Cela peut donner 15, 25 ou 35 points d’histoire. C’est la mesure de la vélocité de l’équipe sur le premier sprint, un premier retour qui permet à l’équipe de savoir ce qu’elle serait en mesure de réaliser lors du prochain sprint.
La vélocité est la somme des points d’histoire des exigences que votre équipe a terminées dans un seul sprint. C’est une donnée post-sprint utilisée pour affiner le prochain sprint, et non un objectif à se fixer pour ce dernier.
Pour déterminer précisément la vélocité, vous aurez besoin de plus d’un sprint pour parvenir à une moyenne. La vélocité suit la loi des grands nombres – plus vous avez de points de mesure, mieux c’est. Au minimum, il vous faudra trois points pour établir une extrapolation optimiste, une autre pessimiste, et enfin une probable du nombre d’exigences qui seront réalisées durant le projet. Une fois que vous disposez de ces mesures, vous pourrez annoncer aux parties prenantes un nombre optimiste, un nombre pessimiste et un nombre probable d’exigences prioritaires du backlog du produit qui pourront être réalisées à l’occasion du projet. Ce genre de plage d’estimation permet de fournir aux parties prenantes ce qu’elles recherchent, tout en permettant de concéder à l’équipe de développement une certaine flexibilité le temps qu’elle trouve son rythme de développement.
Lors des premiers sprints, la vélocité de l’équipe varie grandement. Elle se stabilise tandis que l’équipe adopte un rythme de développement. Bien entendu, les changements survenant dans l’équipe ou la durée des sprints font varier la vélocité de l’équipe.
La vélocité n’est pas un objectif ; c’est un fait utilisé pour des extrapolations. Un grand nombre ne vaut pas forcément mieux qu’un petit.
Lorsque les points d’histoire sont utilisés, on observe que certaines équipes font des estimations pessimistes. Elles accumulent plus de points d’histoire que prévu. À l’inverse, d’autres équipes pèchent par optimisme ; elles sont moins rapides qu’on pouvait l’attendre. Elles accumulent moins de points d’histoire que prévu.
Si la vélocité d’une équipe optimiste est de 15 et que les estimations sont de 150 points, il faudra dix sprints pour tout produire.
Si la vélocité d’une équipe pessimiste est de 30 et que les estimations sont de 300 points, il leur faudra aussi dix sprints.
Optimiste ou pessimiste, cela n’est guère important, car une équipe reste généralement cohérente avec elle-même, si bien que tout s’équilibre à la fin.
C’est pourquoi vous évaluez toujours la vélocité d’une équipe par rapport à elle-même, et jamais par rapport à celle d’autres équipes.
En fait, ne communiquez la vélocité d’une équipe à personne. Considérez sa mesure comme contribuant à un système d’extrapolation, et non à un système de performance.
Lorsque vous disposez d’une méthode pour estimer l’effort requis pour réaliser chaque exigence, et que vous disposez d’une mesure de la vélocité moyenne de l’équipe de développement, vous pouvez prédire précisément la quantité de produits qui pourront être créés dans des contraintes de temps et de financement déterminées. Vous domestiquez vos variables.
Voici ce que pourrait donner un exemple de points d’histoire et de vélocité dans le monde réel.
Supposons les choses suivantes :
En quelques minutes, vous pouvez produire une estimation solide de ce qu’il en coûtera de produire le projet. Avec ces données, votre projet prendra 25 sprints, et il vous faudra donc 25 semaines pour le terminer. Le coût sera de 336 550 €, et vous aurez terminé le vendredi 26 juin 2015.
Qu’arrive-t-il si votre équipe de développement fait monter sa vélocité à 25 points d’histoire par sprint au lieu de 20 ? Reprenez votre calculatrice. Le coût va chuter à 269 240 € (vous économisez 67 310 €), et vous livrerez le vendredi 22 mai 2015. C’est l’avantage de disposer d’un Scrum Master qui peut lever les obstacles et lutter contre l’inertie organisationnelle qui pourrait s’opposer à l’équipe.