24 Octobre 2022
Une partie de mon temps, la semaine dernière, a été consacrée à un chiffrage. Loin d’être une première pour moi, cet exercice présentait la particularité d’être mené dans un contexte non contraint d’un point de vue calendaire. C’est donc avec une liberté exceptionnelle que je me posais, après avoir produit une estimation de l’effort, la question du dimensionnement de l’équipe. Une liberté qui expose particulièrement aux dangers du mythe du mois-homme.
La réalisation d’un logiciel est une activité de construction intellectuelle qui peut s’apparenter, en plusieurs points, au travail d’un écrivain. La cohérence de la structure de l’œuvre est l’un de ces points communs que l’on peut trouver entre le travail d’écriture et celui du développement. Dans le premier cas, l’implication en général d’un seul contributeur, l’écrivain, est un facteur très favorable. Mais dans le cas d’un développement informatique, il est rare que l’œuvre soit le fruit d’un seul individu ; il s’agit en général d’une œuvre collective qui implique une collaboration efficace pour garantir la cohérence du résultat. La recherche de cette efficacité est ce qui motive la définition de méthodologies de développement informatiques de ces cinquante dernières années. Le « mythe du mois-homme », essai de Frederick Brooks dont la première version est parue en 1975, est l’une des œuvres les plus influentes en la matière. Le concept clé du chapitre 2 adresse justement les difficultés d’une projection des efforts de réalisation d’une œuvre collective sur un planning. Ce chapitre explique pour quelles raisons il ne faut pas considérer qu’il existe une relation de proportionnalité entre effort et planning. Parmi ces raisons, celle de l’impact de la coordination sur l’effort global du projet est évoquée.
Dès que le projet implique deux contributeurs, il est nécessaire pour eux d’échanger un minimum d’informations pour assurer la cohérence de leurs travaux respectifs. Cette coordination passe alors par une unique relation au sein de l’équipe. Si l’équipe est constituée de trois contributeurs, le nombre de relations passe à trois. Et pour une équipe de quatre collaborateurs, il passe à six. En généralisant, le nombre de relations est le produit du nombre de collaborateurs (n) avec ses collègues (n-1), en tenant compte du fait que les relations sont bidirectionnelles. Ainsi, le nombre de relations dans une équipes de « n » personnes est (n×(n-1))/2.
Plutôt que de partir dans une modélisation mathématique du sujet, prenons l’exemple d’un projet dont la charge de réalisation est estimée à 1000, effort que j’estime en hommes-jours, certainement parce que j’ai la prétention d’être plus précis que Fred Brooks qui avait au moins la modestie de chiffrer en hommes-mois. Céder à la tentation du mythe du mois-homme conduit à estimer que le délai nécessaire pour réaliser est de 100 jours si on mobilise une équipe de 10 personnes. Ça a bien entendu été la tentation à laquelle j’ai failli succomber lors de mon exercice de la semaine dernière. J’ai donc cherché à intégrer, dans mon estimation, l’effort de coordination qui est nécessaire lorsque la taille de l’équipe s’accroît. Dans une équipe de 10 personnes, le nombre de relations est de (10×9)/2 = 45. Prenons maintenant pour hypothèse que l’effort nécessaire de coordination avec chaque membre de l’équipe pour maintenir un niveau de connaissance commun nécessaire au bon déroulement du projet soit de l’ordre de 5%. Dans ce cas, l’effort global intégrant cette coordination atteint 3250 jours, soit une valeur supérieure au triple de l’effort de production « utile », et le délai de réalisation est de 325 jours. Avec ces hypothèses, il peut être intéressant de faire varier la taille d’équipe pour mesurer ma sensibilité du délai global à la taille d’équipe :
Ce qu’il est intéressant de noter, c’est que le délai de réalisation connaît d’abord une diminution (bénéfices du partage des activités) pour atteindre un minimum avec une équipe de 6 personnes, taille au-delà de laquelle l’effort de coordination devient plus important que le bénéfice que l’on peut tirer de l’augmentation de la taille d’équipe. La formulation de la loi de Brooks fait directement référence à une telle situation : « Adding Manpower to a Late Project Makes It Later »
Dans l’exemple proposé on peut critiquer l’hypothèse d’un effort de communication estimé arbitrairement à 5%. Pour mesurer l’impact de cette hypothèse, on peut prendre l’exemple d’un effort de 2% (une dizaine de minutes par jour). On obtient alors la courbe suivante (série 1 à 5% et série 2 à 2%) :
Avec cette hypothèse revisitée, on note que l’inflexion est moins évidente ; néanmoins la tendance globale reste la même et le gain de planning avec une équipe de 7 personnes est marginale par rapport à une équipe de 6 personnes. Dans le même temps, l’effort global augmente proportionnellement à la taille de l’équipe mobilisée. Ces courbes nous invitent donc plutôt à envisager de mobiliser des équipes 4 à 5 personnes.
Ces observations nous invitent à tirer quelques leçons :
La loi de Brooks n’est pas une nouveauté. Néanmoins, on constate dans les faits qu’elle n’est pas toujours respectée. Il facile de négliger la progression géométrique des efforts de coordination et de penser acceptable un rapport de proportionnalité entre effort et délai. C’est pourtant une grave erreur qui engage de nombreux projets dans une marche funèbre. Lors de votre prochain « daily meeting », regarder autour de vous ; si vous comptez plus de quatre collaborateurs, pensez sérieusement à adopter le « bermuda plan ».