Estimer un temps de développement, c’est difficile

Vu sur Quora il y a quelques semaines, une honnête question : « Pourquoi les tâches de développement logiciel sont en général fausses d’un facteur de 2 ou 3 ? ». Michael Wolfe, CEO de Pipewise, a posté une excellente réponse.

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

La ligne doit faire environ 600 kilomètres de long. On peut marcher 6 kilomètres par heure pendant 10 heures par jour, donc on sera là bas dans 10 jours. J’appelle nos amis et on réserve le dîner pour samedi soir prochain, quand on arrivera sur place triomphalement à 18h. Ils ont hâte !

On se lève tôt le lendemain, excité de partir à l’aventure. On enfile nos sacs à dos, on emporte notre carte, et on planifie notre premier jour. On regarde notre carte. Oh oh :

Waow, il doit y avoir un million de tours et détours sur la côte. Une journée de 60 kilomètres va à peine nous emmener à Half Moon Bay. Ce voyage doit faire au moins 800 kilomètres, pas 600. On appelle nos amis pour reculer le dîner au mardi. Mieux vaut être réaliste. Ils sont déçus, mais ils sont impatients de nous revoir. Et 12 jours pour aller de San Francisco à Los Angeles n’est toujours pas si mal.

Passé cette mauvaise surprise, on décolle. Deux heures plus tard, on a à peine dépassé le zoo. Comment ça se fait ? On regarde derrière nous :

Qu’est-ce que c’est long ! Du sable, de l’eau, des marches, des criques, et des lions de mer en colère ! On avance au mieux à 3 kilomètres par heure, la moitié de ce qu’on voulait faire. On peut soit commencer à marcher 20 heures par jour, ou on peut repousser notre dîner avec nos amis encore d’une semaine. OK, partageons la différence : on va marcher 12 heures par jour et repousser notre dîner avec nos amis au week-end suivant. On les appelle pour décaler le dîner au samedi suivant. Ils sont un peu agacés mais disent « OK, on vous verra là alors ».

On campe à Moss Beach après une dure journée de 12 heures. Merde, ça prends des plombes pour monter ces tentes avec le vent. On ne se couche pas avant minuit. Pas grave : on va s’endurcir un peu et on accélérera un peu demain.

On dort trop longtemps et on se réveille mal en point et fatigué à 10 heures. Putain ! Pas moyen qu’on arrive à faire nos 12 heures. On va viser 10, et on en fera 14 demain. On prends nos affaires et on y va.

Après une lente marche de quelques heures, je remarque que mon ami boîte. Oh merde, des cloques. Il faut qu’on s’occupe de ça maintenant… On est le genre d’équipe qui tue les problèmes dans l’oeuf avant qu’ils ne viennent nous ralentir. Je cours pendant 45 minutes, 5 kilomètres vers Pescadero, pour acheter des pansements, et file retrouver mon ami pour le soigner. Je suis épuisé, et le soleil est en train de se coucher, alors on abandonne pour la journée. On va se coucher après avoir parcouru seulement 10 kilomètres cette journée. Mais on a quelques ravitaillements. Ça va aller. On rattrapera la différence demain.

On se lève le lendemain matin, des pansements pleins les pieds et on se mets en route. On sort d’un virage. Et merde ! Qu’est-ce que c’est que ça ?

Notre satané carte ne montrait pas tout ça ! Il faut qu’on marche 5 kilomètres dans les terres, autour de terrains grillagés protégés par le gouvernement, qu’on se perde deux fois, puis qu’on retourne vers la côte autour de midi. Une partie de la journée est partie pour seulement 1,5 kilomètres de progrès. OK, on ne va pas appeler nos amis pour reculer encore une fois. On va marcher jusqu’à minuit pour essayer de rattraper notre retard et reprendre notre planning.

Après une nuit troublée de court sommeil dans le brouillard, mon ami se réveille le lendemain avec une violente fièvre et des maux de tête. Je lui demande s’il pense pouvoir reprendre. « Qu’est-ce que tu crois, trou du cul, ça fait 3 jours que je marche dans un brouillard glacial sans prendre une pause ! ». OK, c’est tout pour aujourd’hui. On va s’accrocher et se remettre sur pieds. Demain on marchera 14 heures vu qu’on sera reposé et entraîné… On n’est plus qu’à quelques jours, alors on va y arriver !

On se lève le lendemain un peu groggy. Je regarde notre carte :

Oh merde ! On commence le 5ème jour de notre voyage de 10 jours, et on n’a même pas quitté la baie. C’est ridicule ! Faisons l’effort de faire une estimation précise, appelons nos amis, quitte à se faire crier dessus, mais avec une date réaliste une bonne fois pour toutes.

Mon ami dit que nous avons fait 60 kilomètres en 4 jours, c’est un voyage d’au moins 1000 kilomètres, donc environ 60 jours, peut être 70 pour être sûrs. Je dis « Pas moyen… oui, je n’ai jamais fait cette marche avant, mais je sais qu’il ne faut pas 70 jours pour marcher de San Francisco à Los Angeles. Nos amis vont se moquer de nous si on les appelle et qu’on leur dit qu’on ne les verra pas avant Pâques! »

Je continue, « si tu peux t’engager à marcher 16 heures par jour, on peut rattraper la différence ! Ce sera dur, mais c’est un moment crucial. » « Va te faire foutre », me rétorque mon ami, « Ce n’est pas moi qui ait dit à nos amis qu’on serait là dimanche à la base ! T’es en train de me tuer parce que toi tu as fait une erreur ! »

Un silence tendu tombe entre nous. Aucun coup de fil ne sera passé. J’appellerais demain quand mon camarade aura repris ses esprits et sera prêt à s’engager sur quelque chose de raisonnable.

Le lendemain matin, on reste dans nos tentes jusqu’à que la pluie diluvienne s’arrête. On remballe nos affaires et on décolle à 10h après s’être occupé de nos cloques et nos muscles. La dispute de la veille n’est pas mentionnée, mais je parle un peu durement à mon idiot d’ami quand il oublie sa bouteille d’eau derrière, et qu’on doit perdre 30 minutes pour retourner la chercher.

Je me fais une note mentale qu’on va arriver à bout de papier toilette et qu’il faudra qu’on se restocke quand on arrivera dans la prochaine ville. On arrive au coin d’un détour : une imposante rivière nous barre le passage. Je sens une énorme diarrhée arriver…

  1. PinGoo, le

    Je l’ai passé à mon chef de projet. Merci mec !

  2. Nico, le

    Donc si je comprends bien, le développement est long parce que les développeurs ne sont toujours pas rentrés de leur randonnée ?
    :p

  3. meduz', le

    Je rencontre exactement ce problème pour mes vacances d’été : j’ai un budget très limité et je veux faire une randonnée dans le sud de la France d’environ 200 km avec meduzette.

    C’est le flou total pour évaluer la durée, et donc pour réserver le train aller-retour au plus tôt histoire que ça me soit financièrement abordable. Vais-je envisager que la marche va durée 10, 15 ou 20 jours ? Combien de pognon embarquer ? Y aura-t-il possibilité de manger chez l’habitant ? Où sont les villages pour faire un ravitaillement à coût raisonnable ? Quels feux de forêt vont se déclencher ?

    Le développement, ça doit en effet pas être bien différent.

  4. nicogiraud, le

    Pour estimer raisonnablement la durée d’exécution d’une tâche, il faut déjà l’avoir codée, pour savoir combien de temps ça t’a pris. Et si tu l’as déjà codée, bah t’as pas besoin de le refaire …

  5. ged, le

    tellement vrai :)
    j’aime beaucoup beaucop l’analogie simple faite ici.
    Estimer un temps de dev, c’est très dur et il ne faut JAMAIS partir sur le fait qu’un dev est efficace 8h/jour.
    Comptez 4h pour les dev dédiés au projet :p

    en tout cas, la prochaine fois qu’on me dis que mon devis est trop élevé, je paste cette url ou je raconte cette histore ;)

    merci!

  6. Alban, le

    En tant que Chef de projet, j’estime mon temps pour faire moi même le bouzin. Les devs me donnent le temps qu’ils prévoient pour le faire.
    Et au lieu de couper la poire en deux comme le voudrais la logique, j’additionne.
    Personnes n’est content au début du projet, mais tout le monde l’est à la fin… Un peu à l’inverse de la très grande majorité des projets informatiques.

  7. R., le

    Donc si le comprends bien, pour un projet de type « aller du point A au point B », l’équipe de dèvs a sélectionné la pire techno disponible (la marche vs. tous les autres modes de locomotion possibles) dans laquelle ils n’ont manifestement aucune expérience et après ça il faudrait les plaindre ?

  8. Pierre-Alexandre Voye, le

    @ R.
    Tu peux choisir la meilleur techno possible, laplus adapté au problème, tu auras toujours des problèmes liés aux détails.
    « Le diable se trouve dans les détails » est l’aphorisme qui s’applique parfaitement au développement.

    Le cerveau humain est une machine à analyser, reconnaitre des pattern, des correspondances. Le cerveau humain est doué pour le flou, l’à peu près.

    Un ordinateur est une machine à calculer, quelques chose d’exact.
    Ca peut pas coller, c’est intrinsèque à la nature différentes de ces deux choses

  9. Aurelien, le

    Un des meilleurs articles de 2012, assurément !

    Merci

  10. Stéphane Klein, le

    Excellent billet.

    Personnellement, dans des discussions je donnais souvent comme exemple : « Dis moi combien de temps il te faut pour faire Paris => Hong Kong en stop ? ».

    Ce billet illustre très bien la problématique… je vais m’en servir à l’avenir.