• Le client, qu'il soit interne ou externe, est intégré au plus près du projet. Il est informé des avancements et des problèmes rencontrés. Le but est de produire un logiciel qui satisfasse le client, et non qui respecte à la lettre la spécification fonctionnelle rédigée plusieurs semaines ou mois auparavant. Il faut donc valider fréquemment que la direction prise soit celle qui mène à sa satisfaction effective.
  • Les équipes sont réduites, avec peu de distinction hiérarchique, et les collaborateurs peuvent se faire confiance les uns les autres. L'analogie employée est celle d'une escouade de guérilla, plus rapide et efficace qu'un énorme bataillon d'infanterie. En diminuant le nombre d'intervenants, on optimise les communications.
  • Les livraisons de logiciel sont rapides. Chaque version est ainsi plus "légère" : elle est plus rapide à installer et à tester. Il est plus facile de changer d'orientation sur un projet quand chaque évolution "coûte" peu, et évite d'avoir à modifier des fonctionnalités qui ont déjà été développées.

Comme pour toute méthode de gestion de projet, le but des méthodes agiles est de réussir à sortir de meilleurs logiciels (du point de vue du client) pour un coût moindre (principalement grâce à une réalisation rapide). Pour expliquer leur fonctionnement, je dis souvent qu'il s'agit de la mise en place d'un cycle itératif sous stéroïdes. Les développements restent itératifs, mais en tentant de raccourcir au maximum la durée du cycle.

Risques et écueils

Un des principaux écueils qui peuvent être rencontrés quand on décide de mettre en place ce type de méthode dans un groupe de projet, c'est que la frontière est parfois ténue entre l'application de la méthode et le "n'importe quoi" qui s'installe quand on laisse travailler une équipe sans méthode. Beaucoup de gens n'y voient qu'une structuration des plus mauvaises pratiques du monde de l'entreprise :

  • La réactivité, c'est lorsque le client change sans arrêt d'avis, et qu'on s'efforce de le suivre comme une girouette.
  • La mise en place d'une équipe réduite, c'est quand on n'a pas assez de développeurs et qu'on leur donne plus de travail à faire que ce dont ils sont capables.
  • Les cycles de développement ultra-rapides, c'est quand on n'a pas le temps de tester correctement les nouvelles versions, et qu'on est obligé de faire des versions de correction en urgence quand le client découvre des bugs.
  • Sans parler des développeurs incapables d'écrire la moindre documentation technique, des chefs de projet qui ne veulent pas faire de planning, ni des outils de suivi inexistants...

Cela est assez vrai. Mettre en place une méthode agile nécessite que tous les acteurs soient impliqués dans le processus, en connaissent les avantages et acceptent de jouer le jeu. Certaines personnes n'ont pas la flexibilité d'esprit nécessaire pour y arriver et ont besoin de méthodes plus directives (cf. cycle itératif).

Mais si vous réussissez à mettre en place les outils nécessaires et à former les gens, vous pourrez focaliser l'équipe sur un but commun : la réalisation du projet. C'est une grande avancée par rapport à d'autres méthodes, qui sont basées sur l'affectation de tâches à des employés (tels des robots) et leur surveillance par leur hiérarchie. L'objectif est de réussir le travail, pas de permettre à une ou plusieurs personnes de jouer les petits chefs en faisant claquer le fouet au-dessus des têtes.