Skip to content

L’apprentissage au coeur du développement de logiciel

21/10/2012

Dans une démarche empirique, on adopte un cycle d’expérimentation, d’apprentissage, et d’amélioration. Cette démarche n’est pas nouvelle : le PDCA a plus de 60 ans.

PDCA

Plus récemment, le Lean Startup met l’accent sur la nécessité d’avoir des cycles courts et rapides d’apprentissage pour pouvoir innover et entreprendre.

Lean Startup learning loop

Pour pouvoir faire des cycles courts et rapides d’apprentissage, il faut faire des cycles aussi petits que possible. C’est la notion de “baby step” (pas d’enfant) : on tâtonne, petit à petit, et on améliore progressivement.

Apprendre tout en construisant le logiciel (temps projet/produit)

Lorsqu’on utilise une démarche empirique pour développer un logiciel, j’identifie 3 boucles d’apprentissage et d’amélioration utilisées en continu :

  • on crée de la valeur fonctionnelle que l’on ajoute ou adapte grâce à un feedback fréquent des utilisateurs
  • on suit un processus de fabrication que l’on améliore par des rétrospectives régulières
  • on investit sur la qualité intrinsèque que l’on cultive par des pratiques techniques

Le 1er axe constitue un cycle d’exploration et d’apprentissage du contexte des utilisateurs, et d’amélioration de la pertinence et de la valeur fonctionnelle du logiciel. Il permet notamment de réduire l’effet tunnel, c’est-à-dire le risque de découvrir tardivement la non ou faible pertinence du logiciel.

Le 2ème axe constitue un cycle d’apprentissage et d’amélioration du flux de travail, et permet notamment de réduire le délai moyen de fabrication.

Le 3ème axe vise d’abord à améliorer quotidiennement la qualité du code et diminuer la dette technique : un code se cultive, jour après jour.
Certaines de ces pratiques techniques, comme le binômage et la revue de code, constituent également en elles-mêmes un partage des connaissances pendant la réalisation du logiciel.

Improvement loops

Mon propos est que ces 3 moteurs d’apprentissage et d’amélioration devraient toujours être en marche, même à faible régime. Par exemple, lorsqu’une organisation souhaite passer d’une approche prédictive à une démarche empirique, la tentation est grande d’appliquer exclusivement une amélioration du processus de fabrication. Cette recherche exclusive de rentabilité à court terme prive alors l’organisation des véritables bénéfices d’une démarche empirique : satisfaction des utilisateurs, des collaborateurs et des parties prenantes, pertinence et pérennité du logiciel, innovation.

Ces moteurs ne sont pas incompatibles. Dans cette vidéo, Michel Goldenberg explique comment il se sert du sprint burndown chart (un indicateur visuel d’avancement sur l’itération en cours) pour piloter l’apprentissage collectif tout en cultivant la motivation individuelle.

Sprint burndown chart

Il cite aussi des outils simples pour gérer les compétences individuelles au service du collectif :

  • market of skills : pour identifier qui veut donner ou recevoir telle ou telle compétence

Market of skills

  • profil T : élargir le profil T des personnes permet de les motiver tout en augmentant la compétence collective

T-shaped profile

  • matrice des compétences de l’équipe : permet de piloter le risque qu’une compétence importante soit maîtrisée par trop peu de personnes

Team skill risk board
S’améliorer, s’entraîner (temps hors projet/produit)

Même lorsqu’on n’est pas en train de “produire”, il est également possible de monter en compétences sur les 3 axes : valeur fonctionnelle, processus de fabrication, qualité intrinsèque.
La fréquence compte plus que le temps consacré. Idéalement, on se réserve quelques minutes par jour, et/ou quelques heures par semaine pour sortir du cadre de production en cours et améliorer continuellement ses compétences.

Quelques jours de formation sont toujours bénéfiques, tout comme les livres, les conférences, les blogs. Mais ces enseignements sont généralement ponctuels, loin du poste de travail, et leur application directe dans le quotidien n’est pas toujours aisée.

Rien ne vaut la pratique en situation réelle. Voici 3 techniques efficaces :

  • côté valeur fonctionnelle : l’immersion dans la situation réelle des utilisateurs, pour percevoir la réalité de leur contexte.
  • côté processus de fabrication : les jeux agiles permettent, entre autre, d’apprendre et de se perfectionner sur telle ou telle méthode de travail.
  • côté qualité intrinsèque : les katas utilisés dans les sessions de coding dojo et les journées de code retreat sont des moyens efficaces d’améliorer son savoir-faire technique. Pour en savoir plus, voir le post de Claude Falguière sur le blog des Duchess.

Improvement
A ce propos, le samedi 8 décembre 2012 aura lieu la journée mondiale du code retreat. Si votre ville n’apparaît pas dans la liste, n’hésitez pas à créer l’événement.

Pour découvrir et expérimenter des jeux agiles, le mieux est de consulter les événements de l’agenda agile : rares sont les évènements agiles qui n’en proposent pas.

Publicités

From → Empirisme

Laisser un commentaire

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :