Comment la Gestion Agile peut-elle échouer par la politique de l’autruche ?
Nombre de projets échouent dans leur transition vers l’agilité. Une fois la confiance et l’enthousiasme émoussés, la tentation est grande de revenir en arrière sans comprendre que l’amélioration progressive fait partie intégrante du processus de développement en équipe.
Pour industrialiser l’informatique, le Cycle en "V" a fait long feu
Le principe du Cycle en V est le suivant : un certain nombre d'étapes sont nécessaires pour réaliser un projet informatique. Une partie de ces étapes sont préalables au développement, tandis que d'autres suivent pour garantir la qualité de ces développements. Chacune de ces étapes donne lieu à la production de documentation et, de chaque côté du cycle (descendant et montant), cette documentation fait le lien entre les étapes pré et post codage.
La plupart du temps, deux principaux reproches sont formulés à l'encontre de
cette méthode.
Premièrement, le temps passé à rédiger la documentation. Et cette rédaction
nécessite l'intervention de nombreuses parties à des moments clefs mais pas à
chaque étape du projet. Deuxièmement, et ceci découle de la remarque
précédente, les documents produits sont réputés immuables pendant toute la
durée du projet et ceci induit un effet
tunnel. Or, cet effet tunnel est préjudiciable au projet lui-même. En
effet, selon la durée du projet, il est plus que probable qu'entre la rédaction
du sacro-saint Cahier des Charges et la livraison, quelques changements interviennent
dans l'environnement cible de l'application. Ou que de nouvelles contraintes
techniques (internes ou externes) apparaissent, contraignant l'équipe de
développement à revenir sur les fonctions escomptées.
L'utilisation de documentation étant intensive, le processus de
développement en devient assez rigide. Les membres des différentes équipes
auront tendance à s'appuyer exclusivement sur les spécifications publiées,
comme d'un rempart à la critique. Cette pratique les amène à se "désimpliquer"
du but ultime du projet : répondre aux besoins des utilisateurs finaux, y
compris en termes de performances et, surtout, d'évolutivité.
Trop de projets ont mal tourné, malgré MS-Project© ; échouant à répondre
aux attentes dans les délais (et donc les coûts) impartis.
Les méthodes agiles cherchent à tenir compte de l’humain
On s'est aperçu depuis la mise en place du Cycle en V que les équipes de développeurs sont faillibles. Elles peinent notamment à tenir un rythme. On voulait industrialiser la production de logiciels et, pour cela, créer des chaînes de montage (regardez bien à nouveau le schéma du Cycle en V ci-dessus et pensez bien fort aux usines Ford, au Taylorisme). Malheureusement, l'humain est inconstant. Et les groupes d'humains le sont encore plus.
Quelques acteurs de l'industrie logicielle ont donc décidé de se réunir pour
réfléchir à leurs conditions de travail. Cette réflexion a donné naissance à un Manifeste Agile qui a permis,
avec les outils de l'eXtrem
Programming (XP) d'imaginer une autre manière de travailler, en s'appuyant
sur les personnes plutôt que sur la documentation, les contrats et la
planification à long terme.
Au cœur de ces concepts se trouvent le Cycle
Itératif et Incrémental ainsi que l'Intégration
Continue. Rapidement résumé, on s'appuie sur des livraisons fréquentes, la
possibilité de changer les priorités,
le partage de la vision du projet (objectifs et avancement) et la collaboration
entre les parties prenantes.

Pour ce faire, la méthode agile la plus populaire (?) définit par exemple plusieurs rôles au sein de l'équipe projet :
- Le Product Owner (PO) est le garant de la vision du projet, il administre la liste des fonctions à délivrer (product backlog), sous une forme synthétique que l'on appelle des Stories
- Le Scrum Master (SM) est l'animateur de l'équipe qui s'assure de la distribution des tâches et du rythme de développement, par exemple en fournissant un support d'architecture et de programmation
- Le Developer est réputé polyvalent ; certains développeurs expérimentés sont appelés des Champions (c'est toujours bon pour l'égo)
- Le StackHolder est un acteur externe au développement mais qui suit l'avancement du projet ; il peut s'agir d'utilisateurs finaux, ou de responsables hiérarchiques par exemple
Les méthodes Agiles comme Scrum (donc) organisent le développement en
suivant des cérémonies et des bonnes pratiques (pair programming, TDD, etc.).
Des échanges journaliers (la plupart du temps matinaux et COURTS) appelées scrums, assurent que l'information est
bien partagée entre les membres de l'équipe et permettent de détecter les
problèmes éventuels.
Une cérémonie de lancement d'un Sprint
(quelques semaines de développement) permet d'évaluer la charge de travail
nécessaire pour réaliser les fonctions (user
stories) jugées prioritaires et préciser la vision du Product Owner à
l'instant présent. En fonction de l'estimation donnée par les développeurs
eux-mêmes, le PO peut décider de revoir l'ordre de ses priorités.
A la fin d'un Sprint, l'équipe
organise une Sprint Review (démonstration) des fonctions implémentées à
l'intention de toutes les parties prenantes ; ceci afin de valider la direction
prise par le projet.
Enfin, des Rétrospectives permettent
de faire un point régulier sur les problèmes rencontrés, qu'ils soient
techniques ou méthodologiques, et d'ajuster le fonctionnement de l'équipe pour
en améliorer le rendement.
C'est grâce aux Sprints (courts et intenses) que l’adaptation au changement est rendu possible dans les méthodes agiles. On supprime ainsi au maximum l'effet tunnel décrié dans le Cycle en V et l'on minimise le coût éventuel d'un retour en arrière. La documentation pléthorique et contractuelle est remplacée par le dialogue et la négociation. Les développeurs sont amenés à confronter leur travail à une vision élevée de l'application et à la réutilisation de leur propre code au sein de l'équipe.
Mais cela ne suffit pas toujours face aux impératifs de production
Je vous jure que c'est vrai, il y a des équipes de recette qui n'utilisent
pas le Cahier des Charges pour effectuer leurs tests à la fin du Cycle en V. On
a, par exemple, convié l'équipe de recette à participer aux réunions de
préparation et elle se base sur son propre recueil de besoins pour effectuer sa
mission, se réservant le droit d'interpréter ce que devrait être le produit
fini. Cela se termine en général en pugilat, voire en guerre de tranchées,
entre des équipes de développement et de test devenues ennemies farouches,
communicant par l'intermédiaire de billets plus ou moins secs dans le bug
tracker. Avec des remarques du genre « C’est quel mot que tu
comprends pas ?! »). Bref.
Et il y a aussi des équipes "Agiles" qui n'ont pas de Product Owner. Elles
fixent elles-mêmes les priorités, voire alimentent le backlog de
produit en fonction des demandes faites sur un coin de table par un StackHolder
(le plus souvent faisant figure d'autorité... hiérarchique) qui passe de temps
en temps dans l'open space "voir
comment ça avance" (pour lui). Il y a également des équipes qui sont
débordées par une foule de petites tâches "urgentes et obligatoires"
qui n'ont pas été intégrées dans le backlog
de produit parce qu'elles sont transversales ou correspondent à des bugs
détectés au fil de l'eau. Faciles à remarquer, ces user stories arrivent en rafale de post-its© gribouillés durant le scrum.
Mais je m’intéresse particulièrement aux cas où la MOA est en mode Cycle en V tandis que la MOE cherche à devenir
Agile. Là, c'est le pompon ! Je signale d’ailleurs que cette technique
porte un nom : c'est La RACHE. C’est
tout sauf planifié et transparent.
Au-dessus, on a des formalistes, qui
pondent des rapports comme ils respirent et ne comprennent pas pourquoi les
délais et la qualité (au choix) ne sont pas au rendez-vous en sortie de cycle.
Tandis qu'en-dessous, des soutiers
codent dans tous les sens, copient-collent outrageusement et prient en secret
pour changer de département avant la mise en production... Imaginez Josef Mengele qui ferait
de la chirurgie esthétique ; et figurez-vous que ça fonctionne (parfois, et
compte tenu du turnover dans les
prestataires - Oups) !
Comment en arrive-t-on là ? Mon impression personnelle est que le reporting a quelque chose de rassurant
pour les managers et que par ailleurs pas mal de développeurs croient voir dans
les méthodes Agiles une occasion de retirer leurs chaînes.
Je pense que la première chose à faire pour bâtir une équipe Agile est
d'insister sur l'implication personnelle de CHACUN des acteurs ; d'amener tous
les membres de l'équipe (PO, SM, Developer) à se demander en permanence où il
en est (dans son rôle, au sein de l'équipe) et où il souhaite aller (que faire
pour atteindre l'objectif et améliorer l'ensemble). A condition bien sûr de se
donner les moyens de FAVORISER cette implication...
Les uns doivent comprendre que le développement est une activité intellectuelle
qui requiert des temps d’isolement, tandis que les autres doivent intégrer que
les besoins ne sauraient être figés.
Il est très difficile de sortir de ces situations. Probablement plus difficile que d'accompagner le changement d'un point "V" installé dans les mœurs à un point "A" souhaitable. Il faut réunir tout ce beau monde, déconstruire la situation et parvenir à démontrer son improductivité (à la situation) voire sa nocivité. Chacun vous dira que tout fonctionne mal, mais que de toute façon on ne peut pas changer "ça". Il faut pourtant parvenir à changer chaque bastion en force de proposition, quand il devient manifeste (attention : jeu de mots) que pour chaque nouvelle fonctionnalité, les délais et les charges enfleront constamment. Parce que, tout simplement, les couches de sédiments se sont accumulées malgré les superbes spécifications et rapports de fin de projet. La première victime de ces dysfonctionnements, c’est la qualité.
Non, non, décidément c'est trop compliqué, trop cher. On n'y arrivera pas.
Ce n'est pas un VRAI problème... et en effet c’est bien connu : Quand il
n’y a pas de solution, c’est qu’il n’y a pas de problème (proverbe
Shadock) !
Petit à petit, plutôt que de laisser l’équipe s’améliorer elle-même, on a sauté
quelques scrums, rallongé un sprint,
et puis on s’est dit que « la démo » pouvait attendre la prochaine
fois… En déplacement, le PO a envoyé ses « spécs » en pièce jointe
d’un mail à tous… Et on est revenu à un processus
désincarné, privé d’échanges (de feedback),
sans se l’avouer. Or dans un tel système chacun roule pour soi, c’est comme ça.
Conclusions personnelles
Premièrement : Ce n'est pas parce que les solutions ne sont pas évidentes
qu'il faut s'interdire de faire les bons diagnostics. Et chacun devrait
s'attacher à les discuter, à les rabâcher sur tous les tons. Il faut à tout
prix éviter de ne pas choisir une
méthode explicite.
Deuxièmement : Le changement est la plus difficile, voire la plus ingrate, des
tâches. Cela peut prendre du temps, échouer, provoquer des antagonismes. Mais il
est à la fois l'essence et l'objectif des groupes humains et donc des
entreprises vivantes.
Troisièmement : Bien sûr les clients, les utilisateurs, sont demandeurs d'une
meilleure qualité, d'une meilleure écoute. Le cycle court itératif apporte
lui-même la démonstration de son efficacité dans sa capacité à l'amélioration
et à la transparence.
Vous vous êtes déjà retrouvé au milieu du gué (peut-être y êtes-vous en ce moment même), privé de la vision du projet ou de votre capacité à influer dessus ? J'espère que ces quelques arguments vous aideront et vous donneront de l'énergie pour braver les sinistroses rencontrées. L'Agilité, c'est quand chaque voix peut se faire entendre.