Quand un projet est en retard, c'est rarement à cause d'une surcharge de travail. Le plus souvent, c'est lié à la durée pendant laquelle vos tâches sont restées inactives, bloquées dans une file d'attente. Et pourtant, les gestionnaires de projet continuent à se focaliser sur le temps d'activité, et non sur le temps d'attente. La seule file d'attente qui est vraiment mesurée aujourd'hui, c'est le backlog. Mais en fait, il y en a beaucoup d'autres. Cet article examine pourquoi nous devrions les suivre et combien elles coûtent aux projets.
Mais pourquoi est-ce si long ?
Découvrir le véritable ennemi de la fluidité
Tout vient à point à qui sait attendre.
Quand vous voulez une tasse de thé, vous vous plaignez du temps que prend la bouilloire à chauffer l'eau. Mais pour faire bouillir une certaine quantité d'eau, il n'y a pas grand-chose que vous puissiez faire pour aller plus vite. C'est votre impatience qui se symbolise à travers l'attention particulière que vous portez à la bouilloire qui vous donne cette impression de lenteur.
Imaginez que vous ayez eu cette envie une demi-heure plus tôt. Si maintenant vous n'avez toujours pas votre tasse, ce n'est probablement pas parce que la bouilloire est en panne. Il y a plus de chance que ce soit à cause de choses qui se sont produites durant ce laps de temps. Peut-être que le téléphone a sonné, que vous avez eu à négocier longuement pour savoir à qui était-ce le tour de préparer le thé, ou bien vous aviez un énorme tas de vaisselle à faire avant même de pouvoir atteindre le robinet pour remplir la bouilloire. Toutes ces activités sans valeur ajoutée sont les vraies causes du délai qui existe entre le moment de l'envie et le moment où vous savourez votre tasse de thé. C'est tout le temps où la tâche "faire bouillir de l'eau" est restée inactive dans la file d'attente.
C'est une métaphore qui devrait parler aux équipes de développement, mais en pratique ce n'est malheureusement pas le cas. C'est parce que l'on ne voit plus ces files d’attente qu'on n'y prête plus attention. Plutôt que de se demander pourquoi cela a pris si longtemps avant de penser à allumer la bouilloire, on jette un regard agacé à l'instrument en attendant que cela bout et en pestant car c'est trop long !
Les files d’attente sont partout
Nos journées de travail sont organisées à travers ces files d’attente. Parce que nous sommes tellement occupés, nous ne nous rendons plus compte qu'une infime partie de notre temps est réellement mise à profit. La majorité du temps, on le passe dans ces files. Ces délais peuvent être énormes (par exemple en attendant qu'une équipe soit affectée à un projet), ou bien très courts (une demande d'information en attente dans la boîte mail de votre collègue).
Pourquoi ne les voyons-nous plus ?
Nous avons tendance à très bien savoir gérer les files d’attente que nous voyons. Par exemple, quand à la banque il y a trop de monde devant nous, nous rebroussons chemin et repassons plus tard. Nous pouvons nous en plaindre (demander à notre banquier de changer notre compte d'agence), et nous pouvons aussi gérer le problème (en investissant dans des distributeurs automatiques pour essayer de réduire les queues à la banque).
Dans l'industrie où les files d’attente sont les immenses stocks qui dorment et qui apparaissent sur les bilans comme des actifs non réalisés, le management essaye de tout faire pour les réduire.
Mais ces stocks qui grossissent dans le développement logiciel sont invisibles. La plupart de notre travail se traduit par des informations : idées, architecture et lignes de code. L'impact est pourtant aussi important que dans l'industrie. Plus vous avez de tâches inachevées qui prennent la poussière, plus vous prenez le risque de perdre votre investissement. Vous pouvez manquer une opportunité, un client peut passer son chemin, la technologie ou l’environnement peut changer. Et dans ce cas, les efforts et le temps investis dans les réflexions seront gâchés.
Parce que nos files sont invisibles, il est facile de les ignorer. Si on double la taille du cahier des charges, il n'y a pas d'alarme qui retentit. Les équipes de développeurs vont probablement paraîtrent un peu plus sous pression, mais il n'y a pas vraiment de moyen de savoir comment cela influe sur le temps qu’il leur faudra. Maintenant, imaginez que l'on double le nombre de développeurs sur le projet, tout le monde le verra ! Non seulement il y aura une lutte armée pour conquérir le dernier espace de bureau libre, mais les managers seront également en réunion de crise pour essayer de trouver les financements pour les payer.
Un impact non négligeable !
Dans un système sans files d'attente, le temps d'un cycle (le temps nécessaire pour livrer un ensemble de fonctionnalités) serait la somme de chacune des activités. Cela impliquerait que les moments de décision ne prendraient pas la semaine, ou même un jour, ils prendraient 2 heures, le temps vraiment passé à discuter des solutions. Rechercher une nouvelle idée de développement (par exemple oser une nouvelle interface utilisateur) ne prendrait pas 4 semaines, mais en fait 5 jours pour prototyper différents agencements (avec 4 équipes travaillant en parallèle), plus un jour supplémentaire pour confronter les résultats, les analyser et prendre la décision.
Un projet qui se déroule sans files ne prend que très peu de temps. Mais c'est également très coûteux. Pour ne pas avoir de délai entre chaque étape, vous devez garder vos équipes disponibles, prêtes à se mettre au travail dès que nécessaire. Vous devez également avoir des clients toujours disponibles pour répondre à vos questions et vous fournir des retours sur l'utilisation, et même le PDG qui doit être toujours prêt à donner sa signature.
Si les cycles les plus courts supposent de ne pas avoir de queues, les plus longs impliquent le contraire. Plus longue est la file d'attente, plus lent est le cycle. On comprend bien cela - au supermarché, nous cherchons les caisses avec les plus petites queues pour être pris en charge le plus rapidement possible. Être coincé un jour dans une file d'attente nous empêche de travailler, c'est donc automatiquement ajouter un jour au temps de réalisation du cycle.
Pour résumer, les files ont un impact financier direct sur vos affaires. Elles font grossir les stocks, bloquent des projets importants, ce qui augmente le risque de pertes, retarde les informations en retour de vos clients et impacte la motivation et la qualité. Et malgré tout cela, elles sont rarement surveillées. Une société qui tient une comptabilité et chasse les heures supplémentaires n'est probablement pas encore consciente du coût et des délais induits par les files d’attente.
Les grandes files coûtent cher
Face à une grande file d'attente, on a tendance à réagir avec optimisme. C'est vrai, vous sortez d'une grosse période de travail intense, mais là les choses semblent se calmer et vous allez pouvoir regarder un peu ce qu'il y a dans votre liste de "TODO" (votre file d'attente). Mais votre optimisme n'est pas justifié ! Dès lors qu'une tâche va prendre plus de temps que prévu, une queue va se former. Et il est peu probable qu'elle se résorbe avec toutes les petites tâches simples qui arrivent. Au lieu de cela, tout commence à s'empiler. Et plus cela va, plus les chances de voir cette file se résorber s'amenuisent. Cela est connu comme le "principe de diffusion" et il en existe une démonstration mathématique. Dès qu'un mouvement se crée dans une direction, le moins probable est que le système revienne à son état d'origine. Notre incapacité à prendre en compte ce problème de probabilité est une des raisons principales des pertes d'argent en bourse où les gens pensent obstinément que l'action va revenir à son état de forme.
En fait, quand il s'agit de files d’attente d'ordre professionnel, c'est même pire que cela. L’expérience montre que même avec une planification honnête, la plupart d'entre nous avons tendance à sous-estimer la charge des tâches. Donc au final, les tâches prennent plus de temps que prévu et donc les files grossissent encore plus vite.
Si la première action prend plus de temps, c'est donc toutes les tâches suivantes qui sont décalées. Si vous devez payer des pénalités de retard pour toutes ces actions, vous devrez alors régler l'amende pour toutes, même si c'est seulement la première qui a duré plus longtemps. C'est pourquoi les grandes files ont un impact économique bien plus important, et plus elles grandissent, plus il est difficile de les gérer.
Les douanes anglaises en sont un bon exemple. En 2006, le gouvernement leur a demandé de traiter en 5 ans, 450 000 demandes d'asile qui restaient en attente. A l'été 2011, il restait toujours aux douanes 147 000 dossiers à traiter. Il y avait 150 cartons de courriers provenant de demandeurs d'asile et de leurs avocats. Comme le traitement avait pris du retard, il devenait de plus en plus difficile de retrouver ces personnes, leur situation avait changé, elles avaient eu un enfant entre temps, ce qui leur donnait généralement le droit de rester. Ce genre de cas bloquait les suivants qui allaient souffrir des mêmes problèmes. Les politiques restaient concentrées sur l'efficacité de l'activité (la vitesse de traitement d'un dossier), plutôt d'essayer de comprendre que le vrai problème était la taille de la file. La réduction de celle-ci signifiait prendre une décision polémique, comme par exemple accorder une amnistie de 5 ans à toutes les personnes ayant un dossier en attente de traitement. Sans ce genre de décision, la file continue de grandir, et les dégâts économiques et humains avec elle.
Alors quelles actions ?
1. Mesurer la taille des files
Si on regarde uniquement le résultat (le flux des demandes d'asile traitées), ou une activité (tous les agents des douanes semblent être occupés), il faudra beaucoup de temps pour se rendre compte du problème. Si on mesure la taille de la file, cela permet d'anticiper les problèmes. Le plus simple est de mesurer le délai qu'il faut pour que l'action sorte de la queue et soit traitée (dans sa globalité, de l'idée jusqu'au retour sur investissement, ou bien à travers un autre processus).
Commencez par enregistrer le moment où une fonctionnalité entre vraiment en phase de développement. Mesurez le temps exact qu'une tâche passe dans chaque phase. Enfin, notez la date à laquelle cette fonctionnalité est déployée. En soustrayant le "temps de travail" au "temps total", vous aurez une idée du temps passé dans la file.
2. Rendre les files visibles
Une représentation efficace des files d’attente est le diagramme de flux cumulé. Cela vous indique non seulement s'il y a une file d'attente, mais également si celle-ci est exacerbée par un grand nombre d'arrivées ou par un service trop lent qui ne produit que peu de départs. C'est particulièrement efficace pour identifier des files en cours de création. Beaucoup d'équipes affichent leurs files d'attente en utilisant des post-it collés sur le mur en colonnes qui représentent le processus ou les développeurs.
Il devient alors très facile de détecter la création d'une queue quand une des colonnes commence à se surcharger.
3. Estimer les files
Il est possible de les estimer en utilisant la loi de Little. Elle déduit le temps moyen d'attente avec la taille de la file, ainsi que la vitesse de traitement. Elle est très efficace et s'applique aussi bien au processus complet qu'à quelque chose d'unitaire. De plus, elle est très simple à expliquer comparé à la théorie des files d'attente.
Temps moyen d'attente = Taille de la queue / Vitesse moyenne de traitement
Cette formule est utilisée pour déterminer combien de temps sera nécessaire pour prendre votre appel, ou bien combien de temps il vous reste avant de monter dans le manège. Cela veut dire que l'on peut savoir dans combien de temps une tâche aura été effectuée. Cette information est très utile pour aider le product owner à reprioriser les actions si nécessaire.
4. Séquencer les files
Dès lors que vous avez une bonne visibilité de celles-ci et que vous les avez mesurées, vous allez vraiment pouvoir les prioriser ou les séquencer pour maximiser la valeur et minimiser les problèmes. Vous pouvez le faire assez rapidement et vérifier les résultats. Il faut commencer avec les tâches qui ont la plus grande valeur pour le projet. À valeur égale, vous devez commencer par la plus courte car vous bloquerez moins longtemps la ressource et une fois terminée, vous concrétiserez les efforts.
5. Faire du ménage dans les files
Si une action n'a pas été prise en charge après un certain temps, peut être parce que d'autres actions ont pris la priorité, il est alors nécessaire de la supprimer. Si des personnes s'en émeuvent, alors la purge aura eu pour effet de porter l'attention sur elle. Il sera donc nécessaire de revoir sa priorité et de la replanifier.
Où chercher des files en informatique ?
The Fuzzy Front End ou la lente mise en place du projet
Reinertsen et Smith ont particulièrement bien décrit la période du projet qui précède les développements comme le "Fuzzy Front End". Accord de lancement, recherche, prototypage, étude de faisabilité, ...etc. Les sociétés investissent beaucoup de temps pour s'assurer qu'elles vont dépenser leur argent pour LA bonne idée. Cela provoque une énorme file d'attente au tout début du projet car toutes les idées doivent être planifiées, et un retour sur investissement doit être décrit et quantifié (aucun projet ne peut exister sans des investigations préalables). C'est ironique de voir les sociétés dépenser autant de temps afin de minimiser les risques, ce qui leur coûte ensuite des délais si grands qu'elles prennent le risque de voir leur idée originale devenir obsolète.
Que pouvons-nous faire ?
Si vous pouvez quantifier le coût du délai pour chaque projet, pour chaque idée, vous pouvez aider le management à prendre des décisions plus rapides, ou tester des idées pour commencer à gagner de l'argent.
Experts
Nous avons tendance à faire appel à des experts pour maximiser l'efficacité. Comme ils sont souvent onéreux, on préfère les utiliser à 1oo%. C'est le meilleur moyen de créer une queue. Embaucher plus de spécialistes est coûteux et les sociétés sont résistantes à investir dans la formation des développeurs par un expert.
Que pouvons-nous faire ?
Avoir des "experts généralistes" peut être un moyen formidable d'ajouter des capacités de traitement quand nécessaire - des développeurs qui peuvent tester, des statisticiens qui sont contents de s'associer aux autres équipes. L'équipe peut aussi s'adapter et proposer ainsi un moyen de lisser la charge et maîtriser les goulots d'étranglement. Cela peut passer par une proposition de service de secrétariat (vous voulez que vos experts travaillent et non pas qu'ils réservent leurs billets de train), jusqu'à faire le plus possible de préparation avancée pour les équipes.
Environnement
Les grosses files d'attente dans le développement logiciel ne sont pas toujours causées par les personnes. Elles peuvent l'être par une différente ressource : matériel et environnement. Le matériel est fréquemment une ressource limitée, soit par ses capacités, soit à cause de la manière dont il est configuré / architecturé.
Que pouvons-nous faire ?
Partager une ressource coûteuse a du sens pour les personnes qui s'occupent de l'efficacité budgétaire. Mais on doit également prendre en compte le coût du délai. Les équipes elles-mêmes doivent aussi travailler pour anticiper les goulots d'étranglement, en prévoyant par exemple la création de nouvelles instances.
Conclusion
Les files d’attente font partie de la vie. Nous n'essayons pas de les faire passer pour le bouc émissaire. Elles entraînent un délai et cela a un coût. La plupart du temps, ce coût est supérieur à ce qu'aurait coûté le travail nécessaire à les réduire ou à les faire disparaître. Les hôpitaux publics ont tendance à se satisfaire de ces files d’attente qui leur permettent de s'assurer de l'utilisation des docteurs au maximum. Les cliniques privées quant à elles fonctionnent à l'inverse, ne voulant pas que les patients attendent en arrivant. Ce balancier a un impact sur le modèle économique, le coût pour les patients et sur la rentabilité.
Ignorer les files d'attente signifie que vous ne serez pas capable de prendre ce genre de décision. Votre business pourrait souffrir d'énormes goulots d'étranglement et avoir des coûts importants en termes de délais, et le tout sans que vous en preniez connaissance. Une société qui fait très attention aux délais de livraison, mais qui ne regarde que le résultat de son activité et non pas l'état des files, est comme celui qui attend que l'eau bout alors que la bouilloire n'est pas en marche.
À propos de l'Auteur
Paul Dolman-Darrall est directeur informatique. Il est connu pour développer et mener des programmes de changement avec de grosses équipes dont quelques-unes des plus grandes sociétés internationales, ainsi que pour des gouvernements. Chez Emergn, son rôle d'Executive Vice President lui a permis de lancer VFQ Education (Valeur, Flux, Qualité), un système d'apprentissage basé sur la pratique qui offre des résultats immédiats. Le programme est conçu pour aider les équipes informatiques qui s'appuient sur la technologie pour mettre en place des pratiques plus intelligentes et plus efficaces afin de faciliter le changement. Ce programme génère des retours sur investissement significatifs et inspire l'innovation par la pratique.