Comment apprendre à faire de meilleures estimations? [fermé]


42

Je suis nul aux estimations. Quand quelqu'un me demande combien de temps cela va prendre, je n'ose même pas deviner, je serai complètement à l'écart. Habituellement, je suis trop optimiste et je devrais probablement multiplier mon estimation par un facteur X important ...

Comment puis-je apprendre à faire de meilleures estimations? Ce n'est pas enseigné à mon université, et même si nous avons des délais pour toutes les travailleuses, je ne pense jamais au temps que prendra quelque chose. Ce que je devrais. Pour tout le monde (surtout le mien).



Réponses:


28

Je ne suis toujours pas bon en la matière, mais j'ai constaté que le suivi du temps que vous estimez pour les tâches et du temps que vous prenez réellement peut être d'une grande aide. De cette façon, vous pouvez avoir une idée précise de votre distance. Un logiciel de gestion des problèmes avec suivi du temps (Jira dans mon cas) ou une feuille de calcul peut être d'une grande aide pour cela.

Je pense plus que tout, c'est une expérience.


1
Cette. C'est le moyen le plus utile d'estimer. Pour s’améliorer, on peut suivre le temps imparti aux tâches lorsqu’elles sont exécutées, ce qui permet de donner une meilleure estimation la prochaine fois. La structure de répartition du travail est un concept utilisateur pour cela.
Tamás Szelei

3
C'est une excellente réponse. Je voudrais ajouter qu’en plus de prendre note de vos estimations, il peut être utile d’écrire une sorte de "journal du travail" dans lequel vous noterez les décisions importantes, les problèmes que vous avez rencontrés et que vous avez résolus, etc. pour être à 50% ou plus, il pourrait être utile de rechercher pourquoi, et ces "journaux du jour" seront d'une grande aide (voir pages 64-69 dans "Le programmateur pragmatique" pour plus de détails à ce sujet). Aussi, faites attention à qui vous montrez vos numéros; les personnes qui ne comprennent pas ce que vous faites pourraient essayer de les utiliser contre vous.
Leif

Je fais ce que vous faites - manuellement. C'est fondamentalement une planification basée sur des preuves ( fr.wikipedia.org/wiki/Evidence-based_Scheduling ), telle que précitée par Joel et implémentée dans fogcreek.com/fogbugz
Mawg

18

La loi de Murphy de la gestion du temps: Pour savoir combien de temps quelque chose va prendre, savoir combien de temps il devrait prendre et doubler.

Ensuite, passez à l'unité de temps immédiatement supérieure. Ainsi, nous allouons deux semaines à un projet d’une journée.


2
Je déteste le dire, mais c'est probablement la métrique la plus simple et la plus efficace que j'ai vue ici.
glenatron

3
On m'a appris le add one et la règle carrée. Si je pense que cela prendra un jour, ajoutez-en un pour deux jours, carré qui le fait pour 4 jours. Je connais d’autres qui utilisent le mouvement pour augmenter mais sans doubler. alors un jour devient une semaine. Deux semaines et demie deviennent deux mois et demi, etc. Peu importe votre qualité, vous devez ajouter un rembourrage pour les inconnus qui vont se produire.
old_timer

9

Vous pouvez apprendre en les faisant collectivement .

J'utilise Planning Poker . C'est une technique basée sur le consensus pour estimer.

Votre estimation doit être suivie et comparée à ce que vous avez réellement fait. Vous obtiendrez la vélocité .

Chaque fois que vous estimez quelque chose, multipliez par votre vitesse récente pour obtenir une estimation précise .


Le poker semble vraiment intéressant, faites-vous vraiment cette IRL comme décrit dans votre lien? Cela vous at-il aidé à créer des estimations plus précises?
Dr. Hannibal Lecter

Oui. Cette chose rend l'estimation amusante! Et sérieusement précis. Bien sûr, vous devez vous exercer un peu, mais une fois que vous "l'obtenez", vous ne pouvez plus estimer avec d'autres méthodes.

Cela semble vraiment amusant! :) Dommage que je ne pourrai jamais vendre cela dans mon entreprise: - /
dr Hannibal Lecter

@dr Hannibal Lecter: utilisez le tour de passe-passe. Dites-leur que ce n'est pas définitif, que vous allez l'utiliser juste pour le tester. Croyez-moi, ce sera définitif;)

9

L'estimation du logiciel par Steve McConnell (MS Press) est une bonne lecture.

L’essentiel avec l’estimation logicielle se résume comme suit:

Sans information historique, vos estimations sont inutiles.

C'est l'une des raisons pour lesquelles je pense que les projets itératifs ont beaucoup plus de succès que les grands projets en cascade. Ils n'essayent pas d'élaborer un plan pour un an à la fois avec très peu d'informations autres qu'une boîte noire vaudou de ce qu'ils pensent qu'il devrait être. À chaque itération, ils réestiment / répliquent et disposent des dernières itérations sur lesquelles baser leurs estimations.

Quelques autres points à garder à l'esprit:

  1. Cela ne fera que ralentir . L'application de la règle des 80/20 signifie que le travail le plus dur viendra plus tard, à moins que votre gestion de projet ne soit très disciplinée.
  2. Estimation! = Planification. L'estimation est le processus qui consiste à déterminer l'effort requis pour accomplir quelque chose. La planification est le processus de l'ajuster dans un calendrier.
  3. Une efficacité de 60% représente à peu près tout ce que vous pouvez espérer. 70% est une utopie. Si vous estimez en jours, intégrez-le. Si vous estimez en heures, n'oubliez pas de l'appliquer plus tard.
  4. Rappelez-vous la longue queue . Les estimations permettent de déterminer approximativement combien de temps il faudra "probablement", ajusté pour tenir compte d'un niveau de risque et d'inconnues. La longue queue entre en jeu parce que la quantité réelle de travail requise ne sera jamais inférieure à 0. OTOH, le temps maximum qu'il faudra est limité par le temps que vous êtes prêt à dépenser avant d'abandonner. En tant qu'ancien patron, j'ai déclaré "toutes les estimations sont +/- x% et ce n'est jamais moins".

Pouvez-vous expliquer d'où provient cet indicateur de 60% (et 70% d'utopie)? Existe-t-il des articles sur ce sujet disponibles quelque part?
krokodilko

7

Je suis surpris que personne n'ait mentionné la technique d'estimation de type PERT décrite dans The Clean Coder de Robert Martin . Dans cette méthode, vous estimez combien de temps cela prendra pour 3 scénarios: optimiste ( O), nominal ( N) et pessimiste ( P). Ensuite, la durée attendue = (O+4N+P)/6et vous obtenez un écart type de (P-O)/6.

Cela semble fonctionner assez bien, et je l'ai utilisé à quelques reprises lorsque la direction se préoccupe vraiment de la durée probable de quelque chose.

Comme d'autres l'ont commenté, j'ai également fait des estimations en examinant des données historiques ("Combien de temps a-t-il fallu pour faire la même chose?").

Mais ma méthode préférée est de ne pas faire d’estimation du temps, mais seulement d’évaluer des estimations ponctuelles et d’obtenir une vitesse sur les itérations. Si une équipe est assez cohérente pour dimensionner et terminer son travail (histoires d'utilisateurs), vous gagnez un temps fou en ne vous demandant même pas combien de temps chaque chose prendra.

Il est terriblement difficile d’obtenir des estimations de l'heure, et il faut beaucoup de travail pour décomposer les informations en suffisamment de petits morceaux pour pouvoir les mesurer efficacement. Et même dans ce cas, elles sont rarement correctes car il y a trop de variables et nous oublions de prendre en compte des éléments tels que la maladie, les vacances ou même les distractions.

Si je dois faire des estimations d'heures, j'essaie de ne les faire que pour des tâches simples au sein d'une itération. Je mesure tout dans des estimations d'une demi-journée (4, 8, 12 heures) à moins que je sache que ce pourrait être moins. Mais j’estime rarement quoi que ce soit à moins d’une heure.


Depuis que j'ai répondu à cette question, je suis également passé au camp des "non estimés". De bonnes idées émergent de là.
Allan

5

En premier lieu et le plus important, vous devez définir un processus et le respecter. Incluez la révision du plan à la fin de chaque phase du processus. Vous pouvez également réviser le processus, mais de manière ordonnée.

Deuxièmement, faites une sorte de design. La conception est la première étape de la planification, vous ne construisez pas une maison sans dessins.

Troisièmement, le temps de piste (effort). Vous devriez au moins différencier:

  • Une analyse
  • Conception
  • Code
  • Tests unitaires (correction des défauts)
  • Tests d'intégration (y compris la correction des défauts)
  • Tests d'acceptation, avec l'utilisateur (inclure la correction des défauts)

    Ce serait formidable si vous mesuriez l'effort de réparation des défauts pour chaque type de test, mais cela ajoute à la complexité, de sorte que vous pouvez le faire plus tard.

Quatrièmement, identifier les éléments de base clés pour l’estimation. Par exemple:

  • Nombre de processus à automatiser (analyse)
  • Nombre d'entités de modèle de domaine (conception)
  • Nombre de formulaires et de rapports (code)

Cinquièmement, corréler les éléments de base et les efforts. Par exemple:

  • Effort d'analyse = X heures-personnes / processus à automatiser
  • Effort de conception = Y homme-heure / entité de modèle de domaine
  • Code effort = Z homme-heure / formulaire (ou rapport); nombre de formulaires = entités de modèle de domaine A *
  • Effort de test unitaire = M% * Effort de code
  • Effort de test d'intégration = N% * Effort de code
  • Effort de test d'acceptation = P% * Effort de code

Sixièmement, suivez les performances et les écarts par rapport aux estimations pour chaque projet. Vous pouvez ainsi ajuster vos facteurs de corrélation.

Septièmement, répétez et améliorez. Vous obtiendrez de nombreuses informations juste à la fin du premier projet et, au troisième, vous vous sentirez à l'aise de planifier et d'estimer.

Jetez un coup d'œil à http://en.wikipedia.org/wiki/Personal_Software_Process , cela fonctionne vraiment.


3

Lorsque vous rencontrez un problème d’estimation, essayez de le scinder en plusieurs parties. Ensuite, voyez si vous avez déjà fait des choses semblables aux morceaux. Si vous en avez, vous devriez déjà avoir une idée juste du temps que prend chaque pièce. Si vous ne le faites pas, vous devriez commencer à suivre activement le temps pris pour différents types de tâches. Cela vous aidera dans les estimations futures.

Le temps total nécessaire sera plus que la somme des pièces individuelles, car vous avez besoin d'un peu de temps pour l'intégration et les tests.

Si vous n'avez pas fait quelque chose de similaire, vous pouvez probablement vous fier à l'expérience d'autres personnes et obtenir une estimation de leur part. Ne prenez pas cela à la lettre. Rien ne vous enseigne comme l'expérience.

C'est un peu comme tirer sur une cible. Les plans précédents à l'estimation devraient vous indiquer votre décalage, de sorte que vous puissiez le corriger.


3

Je trouve qu'il est plus facile de faire le processus de division aux tâches minimales comme mentionné ci-dessus, de travailler sur chacune d'elles, puis de doubler cette estimation. Ensuite, je les ajoute et ajoute cinquante pour cent. Cela me donne une durée approximative du projet dans des conditions idéales. Si le travail va pratiquement se faire en parallèle avec d'autres, il faudra plus de temps. Si vous devez attendre d'autres personnes, attendez-vous à ce qu'elles prennent deux fois plus de temps que prévu. L'attente de contenu, de commentaires ou d'autres informations prend souvent beaucoup plus de temps que cela ne semble possible.

Où je travaille, nous établissons une estimation du meilleur des cas / cas prévu / pire des cas pour chaque étape du processus, ce qui est utile comme guide et également pour évaluer le fonctionnement de vos estimations.

La technique n’est pas très importante, sauf que vous devez être capable de combattre la tentation du programmeur de sous-estimer les tâches, mais ce qui est important, c’est de rester prudent lorsque vous pouvez livrer quelque chose. Si cela vous prend sept semaines pour construire quelque chose et que vous avez promis huit semaines, vous pouvez arriver un peu plus tôt et bien paraître ou bien faire des tests supplémentaires et être assuré de la fiabilité. Si vous avez promis six semaines, vous pouvez avoir l'air mauvais, même si ce n'est absolument pas de votre faute. En cas de doute, devinez prudemment.


1

Vous pouvez essayer de créer un historique de l'estimation et de la réalité pour différentes tâches afin de constituer un enregistrement suffisant pour savoir quel multiplicateur utiliser pour des éléments spécifiques répétés dans votre liste. Certes, il s’agit d’un exercice d’essais et d’erreurs, mais il a semblé bien fonctionner pour moi. Il y a aussi quelque chose à dire pour de nombreux essais avant que le schéma n'apparaisse probablement. Ceci est probablement similaire à beaucoup d'autres réponses qui diraient que l'on pourrait se résumer à «Fais-le! c'est vraiment ainsi que la plupart d'entre nous avons développé cette compétence. Est-ce pénible de voir à quel point on peut se tromper en faisant des estimations? Oui, mais si les estimations s’améliorent, tout le monde finira par être heureux.


1

Si vous pouvez décomposer le projet en tâches plus petites et faire des estimations pour celles-ci, vous serez globalement plus précis. Toute tâche de plus de quelques jours devrait être décomposée davantage. Si vous ne pouvez pas le décomposer plus loin que vous avez probablement un écart de besoins. Si vous devez faire une estimation de retour de la serviette pour une exigence d'une ligne, rien ne peut vraiment vous aider. Malheureusement, beaucoup de magasins fonctionnent de cette manière la plupart du temps.


1

Plutôt que d'écrire un livre à ce sujet, je vais simplement donner un petit conseil sur la façon d'utiliser la méthode d'estimation "décomposée":

  • Découpez votre affectation en tâches plus petites. Estimez chaque tâche le mieux possible.

  • Ajoutez une tâche de planification et de conception (qui inclut ce que vous faites maintenant.) Estimez-la.

  • Si vous n'en avez pas déjà un, ajoutez une tâche pour "rassembler les tâches". Cette tâche peut ne pas sembler utile au début. Cependant, lorsque vous utilisez cette méthode d'estimation "décomposée", il y a toujours du temps à faire pour que "tomber entre les tâches" et "rassembler les tâches". Celui-ci peut être difficile à estimer. Fais de ton mieux.

  • Ajouter une tâche pour les tests et la documentation. Votre mission ne nécessite peut-être pas beaucoup d’essais et de documentation, mais vous devriez au moins y consacrer un peu de temps.

  • Additionnez les estimations de tâches pour obtenir une estimation globale.

  • Allez-y et multipliez cette estimation totale par deux ††. Cela vous donnera le temps de rembourrage pour:

    1. Terminez les choses que vous avez négligées dans votre liste de tâches d'origine
    2. Terminez des choses que vous ne pouviez pas savoir avant de commencer
    3. Intégrez les commentaires d'autres personnes et apportez des modifications
    4. Interrompez-vous par d'autres événements autour de vous, comme des réunions.
    5. Terminez en avance sur l'estimation plus souvent que derrière

Enfin, n’ayez pas peur de dresser vous-même des estimations probablement totalement fausses. Parfois, le simple fait de tout esquisser, si inexact soit-il, peut vous aider à mieux comprendre ce que cela implique.

†† Au fur et à mesure que vous acquerrez de l'expérience, ce "facteur de fudge" peut être adapté à votre style personnel et à votre environnement de travail.


1

La formule qui marche quand je travaille pour moi:

  1. décomposer les tâches en une granularité de 1 à 4 heures. Je trouve que je suis généralement précis avec ces

  2. le «facteur des inconnues»: multiplier par un facteur de 2 porté au nombre d'inconnues. C'est à dire si vous voulez développer une application couchdb, mais que vous savez maintenant rien sur javascript et http .. ajoutez 2 ^ 2 comme facteur mult.

  3. facteur de changement de contexte: multiple de 1,5 si vous voulez travailler dans un environnement parfait (chez vous, dans le coin bureau, etc.) ou 2,5 si vous allez travailler dans un environnement imparfait (bureau / lieu encombré, etc.)

Je trouve que cela correspond à +/- 20% du temps réel pris !!


0

Apprenez votre propre parti pris. Si votre dernière estimation était trop basse d'un facteur deux, la prochaine fois, doublez votre estimation initiale. (Bien sûr, la loi de Hofstadter rend difficile de faire cela correctement ...)

Il est également toujours judicieux de se rappeler le travail nécessaire après la publication initiale du travail précédent et de l'ajouter à l'estimation suivante. Par exemple, votre dernière tâche a pris 2 mois, mais après la mise en production, le support technique, les correctifs logiciels et les modifications supplémentaires vous ont coûté un mois supplémentaire. Dans ce cas, estimez la prochaine fois 3 mois pour une tâche similaire.


0

Pour les utilisateurs, lisez "Software Engineering Economics" de Barry Boehm et "Controlling Software Projects" de Tom DeMarco. Après avoir lu et assimilé ces deux éléments, lisez "Estimation des coûts logiciels avec COCOMO 2" de Barry Boehm.

Pour ce que j'ai à dire ensuite, cela vous aidera BEAUCOUP d'avoir suivi un cours de probabilités et de statistiques, même un cours de base de livre de recettes.

Aucune estimation n'est parfaite. Il y a une probabilité d'arriver tôt et une chance d'arriver tard. Le modèle COCOMO détaillé et original de Boehm donnait des prévisions qui se situaient à moins de 30% du résultat réel, mieux que 60% du temps. C'était beaucoup mieux que ce qui était commun quand il a écrit et publié le livre.

Lorsque vous prenez votre meilleure estimation (et c'est tout ce que l'estimation est), vous incluez ces probabilités. Si vous intégrez l'estimation, vous augmentez la probabilité que vous arriviez en retard. Si vous augmentez l'estimation, vous augmentez la probabilité que vous arriviez tôt ou que vous finissiez à l'heure. La quantité que vous retirez ou laissez sortir contrôle la façon dont la probabilité change et doit nécessairement dépendre des pénalités pour être en avance ou en retard. (Insérer des histoires d'horreur ici - et il y en a eu beaucoup au cours des années!)

DeMarco y répond dans une certaine mesure. Il fait également remarquer qu'il existe une "région d'impossibilité": certains horaires sont trop serrés pour être établis, quel que soit le type d'héroïsme tenté.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.