Le développement Lean est l'application des principes Lean au développement logiciel. Les principes Lean ont vu le jour dans l'industrie manufacturière, comme un moyen d'optimiser la chaîne de production afin de minimiser les gaspillages et de maximiser la valeur pour le client. Ces deux objectifs sont également pertinents dans le domaine du développement logiciel, qui lui aussi :

  • Suit un processus répétable
  • Exige des normes de qualité spécifiques
  • Repose sur la collaboration d'un groupe de travailleurs spécialisés

Bien sûr, il existe également quelques différences majeures entre les processus de fabrication et le développement logiciel, à savoir que la fabrication se rapporte à la production de biens physiques, tandis que la valeur générée dans le domaine du développement logiciel est créée dans l'esprit du développeur.

L'application des principes Lean au travail intellectuel nécessite de redéfinir la valeur, les gaspillages et d'autres concepts clés de la méthodologie Lean. Découvrez comment ces 7 principes Lean s'appliquent aux pratiques de développement logiciel.

Essai gratuit d'AgilePlace : AgilePlace Logiciel Kanban en ligne

Inscrivez-vous pour un essai gratuit de 30jours et vous et votre équipe pourrez commencer à créer des tableaux Kanban en ligne dès aujourd'hui. Découvrez par vous-même comment AgilePlace soutient les initiatives de livraison continue, élimine le gaspillage et améliore les processus et la vitesse de livraison de votre équipe.

Commencer votre essai gratuit • AgilePlace Free Trial

Les 7 principes de développement Lean

Les sept principes Lean sont les suivants :

  • Éliminer les gaspillages
  • Intégrer la qualité dès la conception
  • Créer des connaissances
  • Retarder l'engagement
  • Livrer aussi vite que possible
  • Respecter les autres
  • Optimiser l'ensemble

Dans leur livre intitulé Lean Software Development : An Agile Toolkit (Développement logiciel Lean : kit d'outils Agile), Mary et Tom Poppendieck ont expliqué comment ces principes Lean peuvent être appliqués au développement logiciel. Voici un bref résumé de chacun de ces principes, ainsi que des conseils pratiques sur leur mise en œuvre dans le domaine du développement logiciel.

Éliminer les gaspillages

Une des clés pour appliquer la méthodologie Lean consiste à éliminer tout ce qui n'apporte pas de valeur ajoutée au client. Les préceptes de fabrication Lean élaborés par Toyota définissent les sept gaspillages (ou muda) suivants :

  • Surproduction : fabriquer un article avant qu'il ne soit nécessaire.
  • Transports inutiles : déplacer les stocks d'un endroit à l'autre, ce qui génère un risque de dommages sans ajouter de valeur.
  • Stocks : la détention de stocks ajoute des coûts sans apporter de valeur ajoutée au client ; les stocks excédentaires occupent un espace précieux, augmentent les délais d'exécution et retardent l'innovation.
  • Déplacements : se rapportent littéralement aux déplacements inutiles des travailleurs dans l'atelier.
  • Défauts : les problèmes de qualité entraînent des révisions du travail ou des rebuts et peuvent engendrer des coûts supplémentaires considérables pour les organisations qui ne trouvent pas habituellement des moyens d'éliminer les sources de défauts.
  • Surtraitement : utiliser des outils avancés et coûteux pour réaliser ce qui pourrait être fait avec des outils plus simples.
  • Attente : lorsque les stocks sont mis en attente entre deux étapes génératrices de valeur.

Tom et Mary Poppendieck ont adapté ces gaspillages au développement logiciel. Chacun d'eux doit être systématiquement éliminé afin d'optimiser la valeur apportée au client :

  • Code ou fonctionnalité inutile : retarde le délai de livraison au client, ralentit les boucles de feedback.
  • Lancement d'un nombre excessif de tâches : ajoute de la complexité inutile au système et entraîne un basculement contextuel, des retards de transfert et l'apparition d'autres obstacles dans le flux.
  • Retard dans le processus de développement logiciel : retarde le délai de livraison au client, ralentit les boucles de feedback.
  • Exigences peu claires ou changeant constamment : entraînent des tâches à retravailler, de la frustration, des problèmes de qualité et un manque de concentration
  • Bureaucratie : retarde la vitesse.
  • Communication lente ou inefficace : entraîne des retards, des frustrations et une mauvaise communication avec les parties prenantes, ce qui peut avoir un impact sur la réputation du département IT dans l'organisation
  • Travail partiellement effectué : n'apporte pas de valeur ajoutée au client et ne permet pas à l'équipe d'apprendre grâce au travail réalisé.
  • Défauts et problèmes de qualité : entraînent des tâches à retravailler, des tâches abandonnées et une satisfaction médiocre du client.
  • Changements constants de tâches : entraînent une mauvaise qualité du travail, des retards, des ruptures de communication et une baisse du moral de l'équipe.

Intégrer la qualité dès la conception

Cela peut sembler évident : chaque équipe souhaite intégrer la qualité dans son travail. Mais, à moins d'appliquer cette démarche de façon disciplinée, cela est beaucoup plus facile à dire qu'à faire. En essayant de garantir la qualité, de nombreuses équipes créent en fait des gaspillages, par exemple par des tests excessifs ou la consignation excessive de défauts.

Au cours des dernières décennies, de nombreuses équipes de développement Lean ont connu le succès en appliquant les outils de développement Lean ci-dessous afin d'intégrer la qualité dans leur travail. Dans l'univers du développement Lean, la qualité est l'affaire de tous, et pas seulement de l'analyste qualité.

Voici quelques-uns des outils de développement Lean les plus populaires pour intégrer la qualité dès la conception :

  • Programmation en binôme : éviter les problèmes de qualité en combinant les compétences et l'expérience de deux développeurs au lieu d'un seul.
  • Développement piloté par les tests : rédiger des critères de rédaction du code avant de le compiler afin de s'assurer qu'il répond aux exigences opérationnelles.
  • Incremental development and constant feedback
  • Réduction au minimum des états d'attente : réduire le changement de contexte, les lacunes en matière de connaissances et le manque de concentration.
  • Automatisation : automatiser tout processus manuel fastidieux ou tout processus propice aux erreurs humaines.

Créer des connaissances

Le principe de développement Lean « Créer des connaissances » semble lui aussi simple, mais sa mise en œuvre nécessite de la discipline et de l'attention. Ce principe encourage les équipes Lean à fournir l'infrastructure nécessaire pour documenter et conserver des enseignements précieux, ce qui peut être réalisé en utilisant une combinaison des outils suivants :

  • Programmation en binôme
  • Évaluations du code
  • Documentation
  • Wiki – pour que la base de connaissances s'enrichisse de manière incrémentielle
  • Code commenté de manière approfondie
  • Sessions de partage des connaissances
  • Formation
  • Utilisation d'outils pour gérer les exigences ou les récits utilisateurs

Retarder l'engagement

Il est facile d'utiliser ce principe de développement Lean à mauvais escient. Retarder l'engagement ne signifie pas que les équipes doivent faire preuve de légèreté ou d'un manque de responsabilisation concernant la prise de décision.

C'est plutôt le contraire : ce principe Lean encourage l'équipe à faire preuve de responsabilité en restant ouverte à divers choix et en collectant continuellement des informations, plutôt que de prendre des décisions sans disposer des données nécessaires.

Retarder l'engagement consiste à :

  • Ne pas planifier (de manière excessivement détaillée) des mois à l'avance
  • Ne pas s'engager sur des idées ou des projets sans une compréhension complète des exigences opérationnelles
  • Recueillir et analyser en permanence les informations relatives à toute décision importante

Livrer aussi vite que possible

Toutes les équipes souhaitent assurer une livraison rapide, afin de fournir de la valeur au client le plus rapidement possible. La question n'est pas de savoir pourquoi les équipes veulent livrer rapidement, mais plutôt ce qui les ralentit. Voici quelques causes fréquentes :

  • Anticipation excessive des exigences futures
  • Blocages qui ne sont pas résolus de manière urgente
  • Processus excessifs d'ingénierie appliqués aux solutions et aux critères de performances
La méthode Lean pour assurer une livraison rapide ne consiste pas à travailler plus longtemps et le week-end, ni à travailler de manière irréfléchie au nom de la rapidité.

Le développement Lean est basé sur ce concept : élaborer une solution simple, la présenter aux clients et l'améliorer progressivement en fonction du feedback des clients. Cette approche est importante, en particulier dans le domaine des logiciels, car la rapidité de mise sur le marché représente un avantage concurrentiel incroyable.

Respecter les autres

Le principe Lean Respecter les autres est souvent l'un des plus négligés, en particulier dans l'univers du développement logiciel, où tout va très vite et où l'épuisement frappe le personnel. Ce principe s'applique à tous les aspects du fonctionnement des équipes Lean, qu'il s'agisse de leur manière de communiquer, de gérer les conflits, de recruter et d'intégrer de nouveaux membres, d'assurer l'amélioration des processus, etc. Les équipes de développement Lean peuvent favoriser le respect des autres en :

  • Communiquant de manière proactive et efficace
  • Encourageant les conflits sains
  • Mettant en lumière en équipe tous les problèmes liés au travail
  • Se donnant mutuellement les moyens de travailler de façon optimale

Optimiser l'ensemble

La sous-optimisation est un problème sérieux dans le développement logiciel. Elle est souvent une prophétie auto-réalisatrice. Dans leur livre, Mary et Tom Poppendieck décrivent deux cycles vicieux dans lesquels tombent souvent les équipes de développement Lean.

Le premier consiste à publier du code compilé de façon peu consciencieuse pour des raisons de rapidité. Lorsque les développeurs se sentent pressés de livrer à tout prix, ils publient du code qui ne répond pas forcément aux exigences de qualité. La complexité du code base s'en trouve accrue, ce qui génère davantage de défauts. Un plus grand nombre de défauts entraîne davantage de travail, ce qui accentue les pressions exercées sur les développeurs pour qu'ils livrent rapidement... Ainsi, le cycle se perpétue.

Le second prend la forme d'un problème concernant les tests. Lorsque les testeurs sont surchargés, le temps de cycle entre le moment où les développeurs rédigent du code et celui où les testeurs sont en mesure d'adresser leur feedback est particulièrement long. Les développeurs continuent alors à rédiger du code qui peut être défectueux, ce qui engendre davantage de défauts et nécessite donc davantage de tests.

Antidote à la sous-optimisation, l'optimisation de l'ensemble est un principe de développement Lean qui encourage les organisations Lean à éliminer ces types de cycles vicieux en s'appuyant sur une meilleure perception de la capacité et de l'impact du travail en aval.

Cette approche repose sur l'idée que chaque entreprise représente une chaîne de valeur, c'est-à-dire la séquence des activités nécessaires pour concevoir, produire et livrer un produit ou un service aux clients. Si notre objectif est de fournir le plus de valeur possible à nos clients, le plus rapidement possible, nous devons optimiser nos chaînes de valeur pour y parvenir. Pour déterminer comment optimiser nos chaînes de valeur, nous devons d'abord les identifier correctement.

Après avoir identifié comment la valeur circule au sein de leurs équipes, de nombreuses organisations décident d'organiser leurs équipes de développement logiciel de manière à en faire des équipes produits complètes, multidisciplinaires et regroupées dans les mêmes locaux, ce qui leur permet de disposer de tout ce dont elles ont besoin pour répondre à une demande du début à la fin, sans se référer à d'autres équipes. Cette approche, popularisée par Spotify, a été adoptée par de nombreuses organisations Lean (dont LeanKit) afin d'optimiser l'ensemble et d'accélérer la livraison de la valeur.