Lean Software Development et gestion de projet : décryptage

Le Lean Software Development est l’adaptation au monde informatique des principes qui ont fait le succès de Toyota au travers du Toyota Production System. Cette démarche s'appuie sur des principes, que les pratiques Agiles concrétisent remarquablement.

Le Lean est une approche attribuée à Taiichi Ohno, dans les années 50 et influencée par le travaux de Deming. C'est avant tout la philosophie du long terme, la fluidité et le respect des personnes.

L'approche n'est donc pas nouvelle mais son application au monde Informatique, sous l'impulsion de Mary et Tom Poppendieck est beaucoup plus récente.

Les 7 principes fondateurs du Lean Software Development  et les pratiques Agiles associées:

Principe Lean 1 : Eliminer les gaspillages

Un gaspillage est tout ce qui n'apporte pas de la valeur pour le client. Le Lean identifie sept sources de gaspillage.

Le développement itératif et incrémental sur la base d'un backlog de produit estimé et priorisé et l'usage du Kanban vont limiter certains gaspillages (ex : le travail partiellement fait, l'exces de fonctionnalités...).
 
La war Room, des équipe intégrées, des ateliers de travail, "juste ce qu'il faut" de documentation, et le management visuel sont des bonnes pratiques agiles qui réduiront les problémes de transmission d'information, d'attentes ou de retard.

Les défauts sont des gaspillages que des pratiques comme le Test Driven Development, Test Driven Requirement, tests unitaires, intégration continue, standards et conventions, revues de code vont réduire.

Principe Lean 2 : Favoriser l'apprentissage

Lean s'appuie sur le feedback et l'itération, fondements de l'agilité. Une équipe crossfonctionnelle, des ateliers de travail collaboratifs, le daily scrum, la revue de sprint, la rétrospective sont autant de pratiques Scrum favorisant l'apprentissage.

L'intégration continue et les builds fréquents mais aussi le pair programming et le refactoring sont autant de bonnes pratiques eXtreme Programming qui vont assurer le feedback Produit / Equipe, et améliorer la connaissance sur ce même produit.

Principe lean 3 : Reporter la décision

La planification itérative, pratique agile incontournable est la parfaite illustration de ce principe Lean.
Plan de release, Backlog de produit & de Sprint, Réunion de planification, joueront habilement sur ce dernier moment raisonnable, pour maintenir un niveau élévé de réponse au changement.

Principe Lean 4 : Livrer vite

Encore un point fort de l'agilité. Le "Kanban board", la réunion de planification (qui concrétise la demande Client), le Daily Scrum et le Radiateur d'informations sont les ingrédients essentiels d'un système à flux tirés.

Le découpage en sprints et quelques règles permettront de bien gérer les files d'attente. Quant au rythme soutenable (pratique eXtreme Programming) , il permettra à l'équipe de conserver sa capacité de réaction (en se laissant un peu de marge).

PrincipeLean  5 : Responsabiliser l'équipe

Le travail en équipe, les rétrospectives favorisent autodétermination et motivation.
Le découpage en courts sprints, la réunion de planification Scrum, favorisent motivation et engagement autour d'un but explicite et partagé.

Les chefs de projet Agile veilleront ensuite à maintenir ce niveau de responsabilisation et à conserver la motivation, dans un rôle avant tout de leader et en facilitateur.

Principe Lean 6 : Construire la qualité intrinsèque

L'excellence, le feedback rapide et la discipline sont des éléments clés communs à Lean et à l'Agilité.
Tests unitaires, TDD, TDR,  intégration continue, standards et conventions, revues de code mais aussi pair programming et refactoring sont des pratiques assurant la qualité logiciel.

Le feedback permanent des clients et utilisateurs et le développement itératif, permettront une construction effective et progressive de la qualité ("le bon produit").

Principe Lean 7 : Optimiser le systéme dans son ensemble

Lean et Agilité mettent en avant la Vision du produit, sa valeur et sa livraison rapide, et jouent sur une seule variable d'ajustement : le périmètre (le reste étant fixe).

Les trois mesures Lean (Temps de cycle, ROI et satisfaction client) se matérialisent dans Scrum au travers de la planification itérative, du Backlog de produit priorisé, de la mesure quotidienne de l'avancement du projet (Burndown chart) et des revues de sprint.