Archive for the ‘Articles’ Category

(English) Mammoths can run sprints

samedi, janvier 2nd, 2010

Désolé, cet article est seulement disponible en English.

(English) Agility and maturity

lundi, mars 23rd, 2009

Désolé, cet article est seulement disponible en English.

Agilité et holisme

vendredi, mars 13th, 2009

L’agilité est souvent considérée comme un paradigme jeune ne fonctionnant qu’à petite échelle.

L’agilité est souvent considérée comme un paradigme jeune ne fonctionnant qu’à petite échelle, principalement parce que certaines méthodologies agiles fonctionnent bien à petite échelle, mais sont difficiles à transposer telles quelles à plus grande échelle.

Par exemple, SCRUM ou XP (Extreme Programming) peuvent ne pas être transposées facilement en une utilisation à grande échelle. Ceci parce que ces approches ne prennent pas en compte l’environnement dans sa dimension holistique, négligent certaines solutions possibles, plus particulièrement les solutions faisant appel à la technologie, par manque de vision, d’adaptabilité, ou de connaissance.

Les réunions SCRUM de type “stand up”, ou les tableaux de “post-its” représentant les demandes utilisateurs, ou histoires, peuvent ne pas être pratiques, quand le nombre d’histoires à implémenter est trop grand, ou quand la gestion des dépendances entre équipes est complexe.

Pour les écosystèmes actuels, la complexité des produits et la taille des organisations ne doivent pas représenter un frein aux possibilités d’expansion, d’adaptabilité aux changements, d’amélioration de la productivité et de la réduction des couts, tout en gardant ou atteignant un haut niveau de qualité.

Pour les écosystèmes actuels, la complexité des produits et la taille des organisations ne doivent pas représenter un frein aux possibilités d’expansion, d’adaptabilité aux changements, d’amélioration de la productivité et de la réduction des couts, tout en gardant ou atteignant un haut niveau de qualité.  Ceci est spécialement vrai dans les secteurs du développement logiciel ou de solutions en ligne, car la compétition est devenue extrêmement dure grâce à la rapidité de l’évolution technologique, et l’accès relativement transparent à de nombreuse sources d’information via le net.

La complexité des produits, la rapidité de l’évolution technologique, la diffusion rapide de l’information et la globalisation des marchés sont vus comme des handicaps pour les uns, mais ce seront sûrement des facteurs de succès pour les autres. Et c’est là que le management agile a son rôle à jouer, en aidant les organisations à atteindre de hauts niveaux de compétitivité, à s’adapter au changement tout en gardant la possibilité de grossir en taille si nécessaire.

Des équipes travaillant sur un produit unique peuvent désormais être réparties dans plusieurs pays ou continents, en conséquence des possibilités offertes par la globalisation du marché du travail, le développement par composants, l’utilisation de différentes technologies de communication comme support à la collaboration, la mise en œuvre de systèmes informatiques autorisant le développement réparti, etc.

Est-ce que de telles équipes peuvent produire de nouvelles versions d’un produit fréquemment et en respectant un calendrier, tout en conservant un haut niveau de qualité, tout en améliorant la productivité et en restant proche des demandes du marché et des clients?

Oui, elles le peuvent, et oui c’est possible! Mais cela n’a rien à voir avec SCRUM ou XP en tant que méthodologies suffisantes. Cela a à voir avec les racines de la gestion en mode agile, et plus particulièrement la prise en compte de l’aspect holistique des marchés et des environnements de production. Avec une telle approche agile, les solutions pragmatiques qui permettent des sauts quantiques en termes de rapidité, de respect de calendrier, de qualité, de respect des couts sont des combinaisons de différentes pratiques (processus, technologies, changement organisationnels), plutôt que l’utilisation d’une seule et même méthodologie.

Au final, le management en tant que tel doit être géré en mode agile, et non pas simplement les projets gérés.

Les pré requis clairs à cette “agilité pragmatique” consistent souvent à avoir une bonne connaissance de la palette des bonnes pratiques, et de garder la possibilité d’adapter les solutions choisies en fonction des contraintes connues et à venir, car une solution n’est jamais définitive, les marchés se chargeant de les rendre obsolètes à plus ou moins long terme. Au final, le management en tant que tel doit être géré en mode agile, et non pas simplement les projets gérés.

L’expérience montre que les groupe des meilleures pratiques contient 4 invariants, ou pattern fondamentaux de management, qui peuvent être réglés ou modifiés, mais qui sont toujours présents dans une solution efficace de gestion agile:

  • Garder les clients et leurs besoins proches des équipes en charge de la production, afin d’être constamment piloté par les demandes du marché,
  • Un reporting transparent, plus spécialement pour le suivi de l’avancement du travail et la qualité, en se reposant sur des indicateurs dont l’utilisation a été négociée avec toutes les parties y ayant accès,
  • La promotion du travail en équipe (les clients doivent être associés à ce travail d’équipe), plutôt que de permettre l’existence d’îlots de savoir isolés et de trous noirs d’information,
  • L’usage systématique de la technologie, et de l’automatisation des tâches quand cela est possible.
The holistic agile planet

The holistic agile planet

Ces 4 invariants sont liés les uns aux autres. La technologie et l’automatisation peuvent faciliter le reporting, le reporting peut être utilisé pour favoriser le travail en équipe en partageant des indicateurs qui formeront un référentiel commun, et les clients ou leurs représentants peuvent être associés au travail en équipe en participant à la planification du travail, et à la gestion des priorités entre les différentes demandes.

A côté de ces 4 invariants, il existe un grand nombre de pratiques pouvant aider et améliorer la gestion agile des projets. L’intégration continue, le développement par tests, en sont des exemples. Mais ces pratiques sont liées entre elles, tout comme les invariants le sont entre eux0: un système de build automatique risque de générer trop de bruit s’il n’est pas couplé à plusieurs niveaux d’intégration de code via un système de gestion de configuration. Enfin, les fondamentaux et les meilleures pratiques sont liés entre eux, et, finalement, tout est lié avec tout, il n’est pas vraiment possible de ne gérer qu’une seule partie du système global.

Finalement, l’utilisation des fondamentaux et des meilleurs pratiques laisse peu d’espace à des interprétations différentes de la réalité, en permettant aux clients et aux fournisseurs de partager une même vision, et en permettant aux équipes de produire dans un environnement efficace.

L’agilité, comme tout concept, peut être vue comme une approche purement théorique et stérile. Or, il s’agit en fait d’une approche extrêmement pragmatique, efficace, qui rend très transparents les différents aspects de la production, de la prise en compte des souhaits du client jusqu’au produit fini.

Professionnalisme et agilité

jeudi, mars 5th, 2009

Je suis tombé par hasard sur une présentation en ligne intitulée “professionnalisation de l’industrie du jeu” (sic), écrite par une personne en charge de certification SCRUM. Le message de la présentation est simple: il y a l’avant SCRUM, l’après SCRUM, et l’industrie du jeu doit devenir plus professionnelle. Comment? En utilisant SCRUM. En fait, le message ne se limite pas à l’industrie du jeu, et “l’analyse” est étendue à toute l’industrie: si les fabriquants de voitures sont déstabilisés par la crise actuelle, c’est parce qu’ils n’utilisent pas SCRUM, c’est parce qu’ils sont trop gros, etc.

L’utilisation de la période de crise difficile actuelle à des fins commerciales pour vendre des certifications SCRUM est assez discutable (nous sommes dans une crise financière, et non dans une crise de production). Un autre point important: quelle est l’évolution du cycle de vie des produits dans l’industrie automobile? Et bien justement, le temps nécessaire du prototype à la mise sur le marché a été considérablement réduit dans les dernières années, grâce aux solutions PLM (Product Lifecycle Management), la gestion de la qualité en mode continu, les changements d’organisation, et bien d’autres techniques. Bien-sûr et comme par hasard, cette présentation ne donne aucune donnée précise sur l’industrie des fabriquants automobiles, ce qui est dommage, car encore une fois il s’agit d’une des branches industrielles qui a fait le plus de progrès en matière de réduction de couts et de temps nécessaire à la mise sur le marche de nouveaux modèles, sans régresser en termes de qualité.

Alors, je pose la question: qu’en est-il de la professionnalisation des personnes souhaitant professionnaliser une branche industrielle?!

A propos de SCRUM

jeudi, février 12th, 2009

SCRUM est une méthodologie relativement à la mode dans certains secteurs du développement logiciel.

SCRUM est une méthodologie relativement à la mode dans certains secteurs du développement logiciel, en particulier le développement de sites internet.

Souvent présenté comme LA solution à tous les problèmes d’organisation et de productivité par ses promoteurs, il est intéressant de voir si cette méthodologie est universelle ou non.

Qu’est-ce que SCRUM? Pour être rapide, il s’agit d’une méthodologie consistant à :

  • Maintenir de manière transparente une liste de demandes d’évolution ou de correction à implémenter pour un produit,
  • Exécuter des itérations de développement rapides (30 jours, ou “Sprint”),
  • Utiliser 3 types de réunions : réunion d’équipe quotidienne, planification du travail pour un sprint, revue du travail à la fin d’un sprint, et enfin rétrospective du sprint,
  • Suivre le progrès du travail à l’aide d’un graphique.

SCRUM identifie aussi différents rôles impliqués dans le développement d’un produit :

  • Vous êtes un « cochon » ou un « poulet » (sic), selon que vous appartenez à l’équipe de dévelopement ou non,
  • Il y a aussi les utilisateurs, les clients, les vendeurs et les managers comme partout, les clients se devant d’être proches de l’équipe.

Mais ce n’est pas tout : SCRUM propose une liste de règles et de suggestions qu’il est fortement recommandé de suivre :

  • Règles concernant la tenue des réunions,
  • Auto-organisation des équipes (processus adaptatif), tout en suggérant fortement, par exemple, de placer tout le monde dans le même espace commun (ce qui en soit peut apparaître comme une contradiction, le choix est restreint à la collocation),
  • Taille d’une équipe de 7 personnes maximum,
  • Avoir recours à un « coach » certifié (ceci est une suggestion)

Les règles constituant la méthodologie SCRUM sont-elles issues d’une étude objective des résultats que cette méthodologie apporte dans la réalité?

D’où ces règles sont-elles issues ? Les règles constituant la méthodologie SCRUM sont-elles issues d’une étude objective des résultats que cette méthodologie apporte dans la réalité? On peut parfois en douter, quand par exemple la taille d’une équipe est limitée par definition à 7 personnes. Pourquoi pas 3, 15, 30 ? En fait, la limite provient de l’approche utilisée par la méthodologie elle-même : difficile en effet d’organiser des réunions de 100 personnes tous les jours pour suivre la progression du travail. On peut parler d’une méthodologie autocontrainte, et non adaptative, faisant abstraction d’études actuelles ou passées sur ce domaine, et omettant de tirer profit des meilleures pratiques dans chaque branche industrielle, en particulier le développement logiciel.

Passons maintenant de la théorie au monde réel. Dans le monde réel, certains facteurs compliquent le succès de la recette miracle :

  • Les demandes d’évolution ou de correction proviennent de différents canaux qui ne s’intègrent pas entre eux,
  • La capacité de production de l’équipe est insuffisante,
  • La production est réalisée par de multiples équipes pouvant être distantes géographiquement,
  • La qualité du code est insuffisante, le produit contient trop de défauts,
  • Séparation forte des rôles (les développeurs d’un côté, les testeurs d’un autre, les ingénieurs applicatif quelque part, etc.).

Ce type de situations est commun dans le domaine du développement logiciel, soit pour des raisons historiques (le code est trop vieux et doit être ré-architecturé), soit pour des raisons de cout (externalisation dans des pays où les couts de production sont inférieurs), etc. Toute organisation développant du logiciel est un jour confrontée à ce genre de situations.

La nature même de l’organisation SCRUM induit un conflit d’intérêt du à la manière dont elle diffuse la méthodologie.

Le chemin vers une implémentation de SCRUM commence donc souvent par faire appel aux services d’un coach.  Or la nature même de l’organisation SCRUM induit un conflit d’intérêt du à la manière dont elle est diffuse la méthodologie: afin d’être promu dans la hiérarchie de l’organisation SCRUM, le coach, certifié si possible (souvent entendu), cherche en général à obtenir le statut de « change manager » chez l’entreprise cliente, et à implémenter exactement les préceptes de cette méthodologie, afin que son travail soit reconnu comme valide par l’organisation SCRUM. D’où une volonté farouche de réaliser la recette dans une lecture mot à mot de celle-ci, ce qui peut mettre en danger certains choix de l’entreprise, car SCRUM n’adresse pas spécifiquement certains aspects clée d’une organisation, tels que le facteur d’échelle, la qualité, la distribution géographique des équipes.

Un autre exemple consiste à vouloir systématiquement limiter la taille d’une équipe à 7 personnes : quel est l’intérêt d’une telle division si la taille de l’équipe n’est pas un problème en termes de productivité, de qualité et d’ambiance dans l’équipe?

Ce conflit d’intérêt, consistant à promouvoir les préceptes de SCRUM avec une importance supérieure aux objectifs et choix de l’entreprise, pose problème. On s’approche ici d’une vision limitée, détachée des réalités de l’entreprise. Une conception peut-être vouée à la promotion de l’organisation en charge de déployer cette méthodologie dans le monde du travail, et, in fine, à accroitre les revenus des prétendus consultants et inventeurs, qui n’ont objectivement pas apporté grand chose depuis “The New New Product Development Game” paru en 1986.

Un autre exemple de problème majeur avec SCRUM est son absence de solution quand le facteur d’échelle est déterminant :

  • Que faire si plusieurs canaux différents enrichissent la liste de demandes d’évolutions pour un seul et même produit ?
  • Comment gérer les priorités des demandes émanant de plusieurs canaux ?
  • Peut-on réellement effectuer une estimation de l’effort en une seule réunion avant le démarrage d’un « sprint » ?
  • Comment gérer les dépendances entre plusieurs équipes ?

Qu’il s’agisse de facteur d’échelle (taille d’une organisation, nombre de canaux générant des demandes, gestion de priorités dans le contexte de capacité de production réduite), de qualité (utilisation de methodes et processus), bref, d’adaptabilité dans un contexte Agile, les solutions proposées par SCRUM sont trés légères. Elles consistent souvent en:

  • Une réduction du nombre de demandes d’évolution,
  • L’utilisation d’une liste unique de demandes d’évolutions,
  • La réduction de la taille des équipes et la collocation dans une même pièce afin de pouvoir suivre le progrès du travail, estimer l’effort au cours d’une réunion unique,
  • Le respect du séquençage des réunions: réunion d’estimations après la fin d’un sprint et avant de démarrer le suivant,
  • L’utilisation d’une réunion avec des représentants de chaque équipe chaque jour (SCRUM of SCRUM) dans une même salle de réunion.

SCRUM est une méthode qui apporte des réponses simples, pour ne pas dire simplistes, aux problèmes réels qui se posent chaque jour.

On le voit, SCRUM est une méthode qui apporte des réponses simples, pour ne pas dire simplistes, aux problèmes réels qui se posent chaque jour. Globalement, SCRUM prône

  • la division, la réduction de taille,
  • la collocation en un seul et même espace physique afin de réduire les problèmes de communication,
  • la mise en place de sprints courts (30 jours).

Il apparait clairement que SCRUM n’est pas la méthodologie de la rapidité, de l’expansion des capacités de production (limitation de la taille des produits, du nombre de demandeurs d’évolutions), et de la réduction des couts (coachs, pas gestion de la collaboration avec des équipes distantes géographiquement), sans parler de la gestion de qualité qui n’est jamais abordée directement par SCRUM. L’adaptabilité, en particulier aux changements de facteurs d’échelles, n’est pas le propre de SCRUM.

Par ailleurs, un danger consiste à limiter l’univers des possibles en termes psychologiques, en introduisant auprès des membres d’une organisation l’idée réflexe que tout choix non conforme à l’idée SCRUM sera voué à l’échec. Ceci est particulièrement vrai par exemple pour la collaboration avec des membres d’équipes distants : ceux-ci ne pouvant pas assister aux réunions SCRUM, ils sont de fait non intégrés à l’écosystème. SCRUM est une méthodologie adaptative qui restreint les adaptations à tout changement ne la remettant pas en cause.

Or, de nombreuses techniques de management, de gestion de projets, ainsi que de nombreux processus spécifiques apportent des solutions extrêmement efficaces, peu complexes et peu couteuses aux problèmes liés à la gestion du chaos, à la productivité et à la qualité :

  • Utilisation d’un flux défini et négocié pour la gestion des demandes d’évolutions,
  • Utilisation d’un support digital (intranet, logiciel, lettre d’information) pour assurer la transparence sur le suivi de la progression du travail, des dépendances entre équipes et le suivi de la qualité,
  • Définition du cadre de la communication avec les équipes distantes (en négociant par exemple la publication ou l’envoi d’un statut quotidien sur l’activité),
  • Utilisation de techniques éprouvées de gestion de cycle de vie de développement (intégration continue)

Il est parfaitement possible de gérer des structures de grande taille en mode Agile, et de bénéficier des apports du paradigme Agile.

En combinant différents types de processus, techniques, idées provenant de différentes méthodologies Agiles ou classiques, il est parfaitement possible de gérer des structures de grande taille en mode Agile, et de bénéficier des apports du paradigme Agile. SCRUM, bien que définie comme étant une méthodologie de bon sens et adaptative, est rigide dans le sens où elle impose des limitations par définition, et fait abstraction de pratiques éprouvées au fil du temps. Les recettes de SCRUM ne fonctionnent bien souvent qu’à petite échelle.

Il est tout aussi intéressant de constater que les adeptes de SCRUM en général, et son “inventeur” en particulier, réalisent petit à petit les limitations fondamentales de cette méthode. Je conseille la lecture de ce compte-rendu de la rencontre annuelle qui s’est tenue à Stockholm en 2008, intitulé “scrum is dead“, où l’on apprend que finalement il est utile de prendre en compte les équipes distantes, et ce n’est qu’un exemple.

Cela met en évidence deux points importants :

  • SCRUM est loin d’adresser la complexité des organisations contemporaines, il s’agit d’un cadre minimal,
  • SCRUM n’est pas une méthodologie réellement opérationnelle en soi, la méthodologie évoluant très peu au fil du temps (pas d’évolution majeure depuis 1986), elle ne prend pas en compte l’un des fondements de l’agilité, qui est l’approche “holistique” des écosystèmes.

Taille optimale d’une équipe

mercredi, février 11th, 2009

“Quelle est la taille optimale d’une équipe?”

Il s’agit là d’une question récurrente pour beaucoup d’organisations. Il existe deux approches principales pour y répondre. Une première approche (telle que SCRUM), fixe une limite dite “naturelle” à  x collègues situés dans une même pièce (espace commun). Cette limite est présentée comme un a apriori, même si certains hérétiques s’autorisent à augmenter ce chiffre si l’esprit d’équipe s’améliore au fil du temps. De fait, la conception même de l’organisation n’est pas une variable sur laquelle il est  possible de jouer: un espace commun est préféré, il existe une limite « naturelle » pour la taille d’une équipe, le seul changement d’organisation possible est de scinder l’équipe en groupes de tailles inférieures, etc.

Une autre approche consiste à créer un modèle mathématique, afin de simuler l’impact de changements de valeurs de plusieurs variables, afin de trouver un mode d’organisation optimal. Cette approche est relativement récente (premières publications entre 2002 et 2004), mais est très intéressante. En effet, la simulation est utilisée de nos jours dans beaucoup de secteurs économiques et branches industrielles, alors pourquoi ne pas l’utiliser dans le secteur organisationnel ?

Un exemple très intéressant de cette approche orientée modèle est décrit dans l’étude “Optimal team size and monitoring in organisations”, de Pierre Jinghong Liang, Madhav V. Rajan, et Korok Ray, respectivement  des universités de Carnegie Mellon, Standford et Chicago. Comme le titre l’indique, l’architecture d’une organisation est vue comme une variable non statique (un optimum peut être trouvé), et un lien clair est établi entre la taille possible d’une équipe et la manière dont son activité est suivie. Mais ce n’est pas tout: le fait de lier les membres de l’équipe à leur employeur via des contrats les intéressant aux résultats est également évalué dans le modèle. La taille de l’équipe, le suivi de l’activité et le type de contrat sont les trois « instruments » utilisés dans cette  approche. Bien que les interactions entre les agents du modèle (employés, encadrement) puissent être complexes, la modélisation et la simulation apporte des enseignements relativement simples, liés à l’identification d’invariants dans le recherche d’un optimum :

  • L’importance de l’intéressement aux résultats pour les contrats des employés
  • Il n’y a pratiquement aucun intérêt à utiliser plusieurs cadres pour superviser le travail d’une seule et même équipe
  • L’importance de la complémentarité entre la taille d’une équipe et la manière dont son activité est suivie d’une part, et entre les compétences du manager et sa capacité à installer un suivi de l’activité efficace.

Le lien établi entre la taille d’une équipe, et la manière de suivre son activité est très intéressant, surtout à une époque où certaines pseudo méthodologies telles que SCRUM, tendent à restreindre très fortement les possibilités d’accroitre productivité et qualité dans les organisations.

(English) Backlog T indicator

mardi, février 10th, 2009