Agilité : ne pas confondre vitesse et précipitation

Ce n’est pas la présence d’un tableau Kanban dans le bureau qui identifie une équipe agile. C’est la production accélérée des solutions innovantes, pertinentes et de bonne qualité ; ceci dans le respect des contraintes imposées.



La révolution digitale est un défi pour nos Directions des Systèmes d’Information.  Nous sommes en première ligne. Il est, donc, urgent d’avoir des équipes agiles pour répondre aux demandes de différenciation de nos entreprises.  Mais, la transformation d’une équipe informatique « traditionnelle » en équipe « agile » n’est pas chose aisée. Il ne s’agit pas simplement de faire des micro-plannings, d’afficher les tâches dans un kanban ou de se débarrasser au plus vite des tâches au détriment de la qualité.  Un changement en profondeur s’impose pour être capable de travailler autrement, à un autre rythme et avec des outils différents.

La transformation vers l’agile, demande de travailler parallèlement sur trois aspects:
  1. une organisation horizontale,
  2. la construction d’un cadre global avant de démarrer le travail par itérations,
  3. la qualité des réalisations.

  1-Organisation horizontale

Dans l’organisation hiérarchique il y des responsables et des subordonnés. Cette organisation offre de nombreuses facilités de fonctionnement. Chacun se situe précisément par rapport aux autres, et connaît son champ d’action. Les chantiers d’envergure sont réalisés par le découpage en tâches, ou en sous-ensembles, repartis parmi les acteurs de l'organisation.  L’efficacité de l’organisation hiérarchique est réelle.  Son principal inconvénient est le poids représenté par le supérieur qui seul à la vision de l’ensemble et qui concentre le pouvoir décisionnaire.

Dans le cas du travail agile, Il s’agit de créer, dans un temps accéléré, un résultat opérationnel répondant aux diverses problématiques posées. L’inconvénient de l’organisation hiérarchique devient alors un frein majeur à l’atteinte des objectifs, car elle apparaît comme trop lourde, trop lente, trop rigide.  L’organisation horizontale, en revanche,  permet des échanges plus libres, moins formels, plus riches entre les différents partis, favorisant ainsi la capitalisation dynamique des savoirs de l’équipe.

Si l’égalitarisme d’une organisation horizontale peut entrainer un certain « désordre», ne nous trompons pas: dans le terme « organisation horizontale» il y a bien le mot organisation.  Comme n’importe quelle équipe, l’équipe agile doit se structurer pour pouvoir bien fonctionner.  Il n’est pas difficile d’imaginer le chaos qui résulterait si chacun faisant ce qu’il voulait, quand il voulait, comme il le voulait.

Un leader avec des dons d’organisateur est bien placé pour piloter une équipe agile.  Contrairement au manageur qui contrôle, décide et  gère les problèmes, le leader inspire, coordonne, rassemble autour d’une vision.  Son rôle sera de maintenir le cap sur l’objectif en promouvant les meilleures contributions de chacun. 

2-Description du cadre global avant de démarrer le travail par itérations.

On parle beaucoup des itérations de la méthode agile. Mais, avant de démarrer le travail des itérations courtes, il est nécessaire de définir le cadre global à l’intérieur duquel l’équipe devra produire.  Il faut faire l’étude générale des fonctionnalités, ainsi que préciser les niveaux de service attendus, les échéances majeures et les performances obligatoires.  Il faut également définir l’architecture applicative et technique, les outils de développement ainsi que les normes et standards à respecter.  Sans oublier le montant du budget.

Souvent les nouvelles équipes agiles, n’ayant pas connaissance du cadre global, partent explorer des solutions considérées, par la suite, comme trop « fantaisistes» ou trop chères par les sponsors.

Un point à ne pas négliger est l'exploitabilité. Parfois, même à la veille du déploiement, on découvre que les contraintes d’exploitabilité n’ont pas été respectées parce que pas explicitement énoncées.  Gardez à l’esprit que les livrables de l’équipe agile feront aussi partie du système d’information. A ce titre, il faut prévoir son intégration dans l’ensemble existant ainsi que les règles pour assurer leur maintien en opération après la phase projet.

Définir le cadre fonctionnel et technique à l’intérieur duquel l’équipe agile devra œuvrer, lui permettra de proposer de solutions plus pertinentes. 

Et si le cadre s’avérait trop étroit pour l’objectif fixé ?   Le fait de l’avoir documenté permettra d’aborder le besoin de recadrage, au bon niveau et avec les bons décideurs.

  3-Qualité des réalisations

La qualité est au centre des préoccupations d’une équipe agile. Un cycle court entre la définition du besoin et le déploiement en production ne peut être maintenu que si les développements sont de qualité.  Imaginez qu’après chaque mise en production il y ait des nombreux incidents majeurs, ou que, pendant la phase d’acceptation, les utilisateurs trouvent sans cesse des anomalies.  On ne tarderait pas à décider d’allonger les périodes de test, d’instaurer des revues de conception, de proposer des étapes de qualification supplémentaires, etc.  Tout ceci au détriment de la dynamique du cycle.

La qualité doit être assurée par des processus rodés et incontournables :

  • Définition des cas de tests avant de démarrer les développements,
  • Vérification du code,
  • Exécution des tests unitaires, suivis de tests en intégration progressive,
  • Exécution des tests de non régression via des outils automatiques,
  • Vérification des résultats « cachés » (ex : logs ou compte-rendu d’exécution).

Il ne faut pas négliger la mise en œuvre des outils d’industrialisation des tests de non régression.  Les nouvelles techniques de développement telles que la programmation orientée objet, la production de micro-services ou les web services relèvent d’une conception ascendante permettant de construire des applications progressivement par la réutilisation des objets.  Encore faut-il de s’assurer que les nouveaux appels des objets existants ne génèrent pas des exceptions ou des dysfonctionnements. 

Et pourquoi ne pas aller, progressivement, vers l’usine d’intégration continue ?  A chaque nouvelle version du code, on enchaîne automatiquement la compilation, les tests de non régression et la validation de performances.  Les anomalies sont mises en exergue et corrigées par les développeurs avant de livrer les réalisations à la phase suivante.  On automatise également la distribution des divers composants du logiciel afin d’accélérer et sécuriser les installations dans les environnements de tests et de production.

Conclusion

Une équipe qui s’organise efficacement autour d’un leader et des objectifs, qui connaît le cadre technique et fonctionnel dans lequel elle s’inscrit et qui a des outils et des processus pour assurer la bonne qualité de ses livrables, a toutes les chances de devenir une équipe agile performante.  A nous de mettre en œuvre les conditions qui permettront leurs émergences.