Ce qui suit est une traduction libre de l'article Why are software development task estimations regularly off by a factor of 2-3? de Michael Wolfe.

Pourquoi l'estimation du temps des tâches de développement est-elle régulièrement fausse d'un facteur de 2, voire 3 ?

Partons pour une randonnée le long de la côte de San Francisco à Los Angeles pour rendre visite à nos amis de Newport Beach. Je sors ma carte et dessine notre trajet :

La ligne fait environ 600 kilomètres de long ; nous pouvons marcher à 6 km/h pendant 10 heures par jour, nous y serons donc dans 10 jours. Nous appelons nos amis et prévoyons un dîner pour le dimanche suivant, en début de soirée. Nous nous ammènerons triomphalement à 18h. Ils sont impatients !

Nous nous levons tôt le lendemain, excités par cette nouvelle aventure. Nous sanglons nos sacs à dos, sortons notre carte et planifions notre première journée. Nous jetons un oeil à la carte. Hmmm :

Wow, il y a 1 million de tours et de détours sur cette côte. À 6 kilomètres par jour, nous atteindrions seulement Half Moon Bay. Ce voyage fait au moins 800 bornes, pas 600. Nous appelons nos amis et repoussons le dîner au mardi d'après. Mieux vaut être réaliste. Ils sont déçus, mais impatients de nous voir. Et puis 12 jours pour faire San Francisco - Los Angeles ce n'est pas si mal.

Cette contrariété réglée, nous décollons. 2 heures plus tard, nous passons seulement le zoo. Qu'est-ce que ça donne ? Nous regardons la piste :

Quelle lenteur ! Le sable, l'eau, les escaliers, les criques, les lions de mer agressifs ! Nous marchons au mieux à 3 km/h, moitié moins que ce que nous voudrions. Nous pourrions marcher 20 heures par jour, ou repousser nos amis à une autre semaine. OK, ce compromis devrait être réalisable : nous marcherons 12 heures par jour et repoussons nos amis à la semaine d'après. Nous les appelons et retardons le dîner jusqu'au dimanche suivant. Ils sont un peu irrités mais répondent, « OK, nous vous verrons, c'est le principal » .

Après une dure journée de 12 heures de marche, nous campons à Moss Beach. Merde, nous n'en avons pas fini d'essayer de monter ces tentes avec ce vent. Nous ne sommes pas au lit avant minuit. Pas une grosse affaire : demain nous accélèrerons la cadence.

Nous avons trop dormi et nous réveillons endoloris et épuisés à 10h. Putain ! Plus moyen de faire nos 12 heures de marche. Nouvel objectif : 10h, et demain nous pourrons en faire 14. Nous rassemblons nos affaires et partons.

Après 2 heures de longs efforts, je remarque que mon ami boite. Oh merde, des ampoules. Nous devons les soigner tout de suite... Nous sommes le genre d'équipe qui tue les problèmes dans l'oeuf, avant qu'ils ne nous ralentissent. Je cours 45 minutes et 5 kilomètres jusqu'à Pescadero, récupère quelques bandes et repars pour panser mon ami. Je suis épuisé et le soleil commence à se coucher, donc fini pour aujourd'hui. Nous allons au lit après avoir parcouru seulement 9 kilomètres. Mais nous avons des provisions fraîches. Ça ira, nous ferons la différence demain.

Nous nous levons le matin suivant, bandons nos pieds et partons. Premier virage... Et merde ! C'est quoi ça ?

La maudite carte ne montrait pas ça ! Nous avons du marcher 5 kilomètres dans les terres, autour de quelques terrains clôturés et protégés par le gouvernement fédéral, nous perdre deux fois, puis revenir sur la côte vers midi. Une grande partie de la journée perdue pour 2 kilomètres de progression. Non, nous n'appelerons pas nos amis pour repousser une fois de plus. Nous marchons jusqu'à minuit pour tenter de rattraper le retard et revenir sur le calendrier.

Après une nuit agitée dans le brouillard, mon ami se réveille le matin avec de la fièvre accompagnée d'un mal de tête fulgurant. Je lui demande s'il peut rallier. « Qu'est-ce que tu crois, j'ai marché dans un brouillard givrant pendant 3 jours sans interruption ! » Bon, c'est mort pour aujourd'hui. Récupérons. Demain nous nous démènerons à 14 heures par jour puisque nous serons reposés... C'est l'histoire de quelques jours de plus, largement faisable !

Nous nous réveillons le lendemain matin un peu abassourdis. Je regarde la carte :

Putain de merde ! C'est déjà le cinquième jour d'un voyage de 10 et nous n'avons même pas quitté la région de la baie ! C'est ridicule ! Il faut refaire une estimation plus précise, appeler nos amis, probablement se faire crier dessus, mais obtenir un objectif plus réaliste une bonne fois pour toutes.

Mon ami : Bon, nous avons fait 64 kilomètres en 4 jours, c'est un voyage d'au moins 960 kilomètres, il nous faudrait donc 60 jours, probablement 70 pour être sûr.
Moi : Pas moyen... Certes, je n'ai jamais fait cette marche avant, mai je sais que ça ne prend pas 70 jours pour marcher de San Francisco à Los Angeles. Nos amis vont se moquer de nous si on les appelle pour leur dire que nous ne les verrons pas avant Pâques !
Moi : Si tu peux t'engager à 16 heures de marche par jour, nous pouvons faire la différence ! Ça sera difficile, mais c'est la crise. Secoue-toi !
Mon ami : Ce n'est pas moi qui ai dit à nos amis que nous serons là pour dimanche ! Tu es entrain de me tuer pour une erreur que tu as faite !

Un silence tendu s'installe. Personne ne passera de coup de fil aujourd'hui. J'appelerai demain lorsque mon ami aura repris ses esprits et sera prêt pour s'engager à quelque chose de raisonnable.

Le lendemain matin, nous restons dans nos tentes jusqu'à ce qu'une tempête nous tombe dessus. La querelle de la nuit précédente passa sous silence, bien que j'ai aboyé après mon idiot d'ami quand il oublia sa bouteille au campement, et que nous ayons du perdre 30 minutes pour la récupérer.

Je me fais une petite note mentale que nous sommes en rade de papier toilette, et qu'à la prochaine ville il faudra refaire un stock. Nous prenons un virage : une rivière imposante nous barre la route. Je sens que j'ai une grosse diarrhée...


Note du 2016-10-10 : faites des plannings de développement sans effort.

Note du 2016-11-13 : un excellent article contenant d'autres arguments: Why Deadlines Need to Drop Dead.

Note du 2023-01-20 : Why deadlines are pointless and what to do instead.