Les fondements de l’Agilité
En tant qu’équipe qui passe à l’agilité, nous sommes appelés à un changement d’état d’esprit. Nous vivons un changement qui affecte nos façons de faire, notre conception de livrer le travail, notre vision sur la qualité, notre engagement à travailler en équipe etc. Il est tout à fait naturel que nous vivions une résistance envers ce changement, à des degrés différents. Ce changement peut s’avérer très douloureux a l’échelle personnelle et celle de l’équipe, qui peut être vouée a l’échec.
Personnellement, je pense qu’il est fondamental pour chaque membre de l’équipe de comprendre l’idée derrière l’agilité. La promesse de l’agilité ne sera atteinte que si chaque membre joue son rôle dans l’équipe. En étant imprégné des valeurs de l’agilité et en vivant ces valeurs chaque jour, chaque membre contribue alors à la réussite de soi-même. Il en résulte que l’équipe formée par de telles personnes est une équipe performante, et qui ramène de la valeur aux utilisateurs de leur produit et à l’entreprise.
Les fondements de l’agilité couvrent plusieurs axes. Je vais essayer de résumer ces fondements dans ce Post. vous aurez du détail sur chaque fondement dans presque chaque livre qui touche de près ou de loin à l’agilité.
Sommaire
Les individus
Le premier fondement de l’agilité sont les personnes. En agilité, nous entendons parler beaucoup de “l’équipe” en tant qu’unité, ceci peut donner l’impression que l’individu n’est pas concernée. Je pense que c’est tout à fait le contraire.
- L’agilité reconnaît l’authenticité de chaque individu au lieu de considérer que c’est une “ressource”.
- La valeur la plus importante de chaque individu est dans ses interactions et sa collaboration. Pour cette raison, les équipes agiles sont formées de différents “rôles” (développeurs, designers, testeurs, etc.) qui proviennent de diverses unités fonctionnelles.
- Les individus travaillent à une même place (idéalement dans la même pièce).
- L’agilité habilite les équipes a s’auto-organiser et ne leur impose aucune méthode ou processus.
- L’agilité fait confiance à l’équipe pour livrer le travail par les moyens qu’ils pensent le meilleur, en assumant qu’ils savent comment faire cela.
- L’équipe est responsable de son résultat.
Le fonctionnel
- Les meilleurs produits sont créés en impliquant directement le client avec l’équipe qui les crée.
- L’équipe collabore avec le client ou un représentant du client pour maintenir et reprioriser un backlog de fonctionnalités en changement constant.
- Ces fonctionnalités sont décrites dans un format concis, l’aspect le plus important étant la conversation et non la documentation.
- L’exploration commence uniquement lors de la sélection des fonctionnalités pour une implémentation immédiate.
- La simplicité est la clé pour la conception de chaque fonctionnalité.
- L’utilité de la fonctionnalité développée est immédiatement vérifiée par le client suite a l’implémentation.
La qualité
- Pour qu’un produit soit un succès, le focus sur la qualité est crucial.
- Tout le monde est concerné par la qualité. Il n’y a aucune exception à cette règle.
- il y’a un revirement complet du concept de “contrôle de qualité” vers la “livraison de qualité”
- Et donc, l’excellence technique se trouve au coeur de l’Agilité. Contrairement a ce que certains peuvent comprendre du point sur la simplicité de conception dans la section précédente.
- La qualité est achevée en considérant le :
- “Test via le code” : favoriser l’automatisation des tests.
- “Test avant le code” : Si quelque chose est important, le considérer au début (TDD, ATDD etc.)
- revues de code et pair programming.
- Définition du “done” (DOD)
- Développement itératif (accepter de faire des changement sur le code beaucoup plus fréquemment.)
- Refactoring (Améliorer le code même si il n’y a pas de nouvelles fonctionnalités)
- Les bonnes architectures ne sont pas définies a l’avance mais émergent au fur et a mesure que le développement avance.
Les outils
En agile, les outils font partie des derniers contributeurs a la réussite d’un projet, même si plusieurs outils sont favorisées et présentées dans la littérature. Les équipes expérimentées préfèrent les outils pour les builds journaliers, l’intégration continue et les tests automatisées. L’emphase est mise sur l’automatisation de tous les taches répétitives. Quelque soit l’outil que vous utilisez, il est meilleur quand il enforce la motivation, la communication et la collaboration dans l’équipe.
Le temps
Contrairement à ce qui peut paraitre, L’agilité a une relation spéciale avec le temps. Les dates de livraison,les “deadlines” et les budgets peuvent être choisies “arbitrairement”. L’explication de ceci est que le logiciel est produit en intervalles courts (sprints) et livrées en releases incrémentales ou chaque release est une version potentiellement livrable du produit. Ceci permet aux décideurs d’avoir le contrôle sur les dates auxquelles ils voudront rendre disponibles le release, et aussi de décider quelle fonctionnalité ils voudront rendre disponible. Entre temps, l’équipe de développement travaille à un rythme soutenu pour garder constante leur vitesse de développement indéfiniment.
La valeur
L’agilité se veut la méthode la plus adéquate pour un projet complexe. Le besoin étant de répondre au changement le plus rapidement possible. De nos jours, de plus en plus, le rythme de l’innovation et les marchés ne sont plus statiques, les fonctionnalités qui avaient de la valeur hier en sont dépourvues aujourd’hui. Avoir des releases plus fréquentes a pour objectif d’inviter au retour d’information (feedback) du client afin de servir au processus du développement, mais aussi de livrer des nouvelles fonctionnalités aux utilisateurs le plutôt que le besoin est détecté, ce qui représente la valeur du logiciel.
Le processus
Le fait que l’Agile encourage “les individus plutôt que les processus”, ceci ne veut pas dire que le processus est sans aucune valeur. Il y’a un minimum de processus en Agile: un planning minimal juste avant l’implémentation immédiate, un meeting journalier pour renforcer la collaboration et la communication, et une mesure de progrès en évaluant un logiciel qui marche. Les cérémonies d’inspection et d’adaptation (rétrospectives entre autres) font aussi partie d’un processus minimal nécessaire pour s’améliorer continuellement.
Le conflit
Quand l’Agile met l’emphase sur les interactions entre les individus dans l’équipe, c’est qu’il assume que le conflit et les interférences sont un dimension intégrante de notre réalité. Le conflit interne est un aspect naturel de tout système complexe telle une équipe. Le conflit est un pré-requis pour la créativité et l’innovation. Les challenges et le désaccord constructif est un signe d’une équipe en bonne santé. Le silence au contraire, est toujours un mauvais signe!
Conclusion
Contrairement aux approches classiques du développement logiciel qui ont une saveur bureaucratique et se base sur la commande et le contrôle, l’approche Agile du développement logiciel met le focus sur les individus et les équipes, les releases de produits fréquents et de qualité, à la collaboration intensive avec le client, et à la réponse rapide au changement via un minimum de planification.
J’espère que ce post provoquera pour certains d’entre l’étincelle pour partir avec moi à la quête de l’agilité, la vraie!