web-dev-qa-db-fra.com

Comment apprendre à faire de meilleures estimations?

Je suce aux estimations. Quand quelqu'un me demande combien de temps quelque chose prendra, je n'ose même pas avoir de deviner car je serai complètement hors de la marque. Habituellement, je suis trop optimiste et devrait probablement multiplier mon devinez avec un gros facteur X ...

Comment puis-je apprendre à faire de meilleures estimations? Il n'est pas enseigné à mon Uni, et même si nous avons des délais pour toutes les laborations que je ne pense jamais à la durée de vie de quelque chose. Que je devrais. Pour tout le monde (surtout le mien).

42
gablin

Je ne suis toujours pas bon, mais j'ai trouvé que le suivi de la durée de votre estimation des tâches et de la durée de votre temps peut être une grande aide. De cette façon, vous pouvez obtenir une idée solide de la façon dont vous êtes habituellement. Le logiciel de gestion des émissions avec le suivi temporel (JIRA dans mon cas) ou une feuille de propagation peut être une grande aide avec cela.

Je pense que plus que tout ce que c'est une chose d'expérience.

28
aubreyrhodes

La loi de Murphy de la gestion du temps: Pour déterminer la durée de vie de quelque chose volonté Prenez, comprenez combien de temps il devrait prendre et doubler.

Ensuite, passez à la prochaine unité de temps supérieure. Ainsi, nous allouons deux semaines pour un projet d'une journée.

18
dsimcha

L'estimation logicielle de Steve McConnell (MS Press) est une bonne lecture.

La principale chose avec l'estimation logicielle est résumée par les éléments suivants

Sans informations historiques, vos estimations sont inutiles.

C'est une raison pour laquelle je pense pourquoi les projets itératifs ont beaucoup plus de succès que de grandes projets de cascade progressive. Ils n'essayent pas d'élaborer un plan pendant un an à la fois avec de petites informations autres que du vaudou de la boîte noire de ce qu'ils pensent être. Chaque itération, ils réessayent/replanning et ont les dernières itérations de base de leurs estimations.

Quelques autres points à garder à l'esprit:

  1. Il n'aura que plus lentement . L'application de la règle 80/20 signifie que le travail plus difficile viendra plus tard sauf si votre gestion de projet est très disciplinée.
  2. Estimation! = Planification. L'estimation est le processus de détermination de l'effort nécessaire pour faire quelque chose. La planification est le processus de l'adaptation dans un calendrier.
  3. L'efficacité de 60% concerne tout ce que vous pouvez espérer. 70% est utopie. Si vous estimez en jours, construisez-la dans. Si vous estimez en heures, n'oubliez pas de l'appliquer plus tard.
  4. Rappelez-vous la longue queue . Les estimations sont une supposition approximative du temps qu'il "probablement" sera ajusté pour un niveau de risque et des inconnus. La longue queue entre en jeu car la quantité réelle de travail requise ne sera jamais inférieure à 0. OTOH, la durée maximale qu'il faudra est limitée uniquement par la durée pendant laquelle vous êtes prêt à dépenser avant d'abandonner. Comme un ancien patron de la mine a déclaré: "Toutes les estimations sont +/- x% et ce n'est jamais moins".
9
MIA

Vous pouvez apprendre en les faisant collectivement .

J'utilise Planning Poker . IT A Basé sur consensus Technique d'estimation.

Votre estimation doit être suivie et comparée à ce que vous avez effectivement fait. Vous obtiendrez le Velocity.

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

9
user2567

Je suis surpris que personne n'a mentionné la technique d'estimation de style PTER décrite dans Robert Martin's le codeur propre . Dans cette méthode, vous estimez combien de temps il faudra pour 3 scénarios: optimiste (O), nominal (N) et pessimiste (P). Puis la durée attendue = (O+4N+P)/6 Et vous obtenez un écart type de (P-O)/6.

Cela semble bien fonctionner et je l'ai utilisé à quelques reprises lorsque la direction se soucie vraiment de la durée de quoi quelque chose va probablement prendre.

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

Mais ma méthode préférée est de ne pas effectuer des estimations de temps et seulement des estimations du point et d'obtenir une vitesse sur les itérations. Si une équipe est assez cohérente au dimensionnement et à la fin des travaux (histoires d'utilisateurs), vous économisez une tonne de temps en ne demandant même pas combien de temps chaque chose prendra.

Les estimations des heures sont dits difficiles à bien avoir droit et nécessitent beaucoup de travail pour briser les choses en petits morceaux suffisamment de mesure pour mesurer efficacement. Et même ensuite, ils sont rarement corrects car il y a trop de variables et que nous oublions de rendre compte des choses telles que la maladie, les vacances ou même les distractions.

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

7
Allan

Premier et le plus important, vous devez définir un processus et coller par elle. Inclure la révocation 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 conception. La conception est la première étape de la planification, vous ne construisez pas une maison sans dessins.

troisième, heure de piste (effort). Vous devriez au moins différencier:

  • Une analyse
  • Concevoir
  • Code
  • Test de l'unité (inclure les défauts de fixation)
  • Test d'intégration (inclure les défauts de fixation)
  • Test d'acceptation, avec l'utilisateur (inclure les défauts de fixation)

    Ce serait formidable si vous avez mesuré les défauts d'effort de fixation de chaque type de test, mais cela ajoute une complexité afin que vous puissiez le faire plus tard.

Quatrièmement, identifiez les éléments de base clés pour estimer. 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 d'homme/Processus à être automatisé
  • Effort de design = Y Heures d'homme/Entité Modèle de domaine
  • Effort de code = Z Man-Heures/Formulaire (ou rapport); Nombre de formulaires = a * Modèles de domaine entités
  • 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ème, gardez une trace de la performance et de la déviation des estimations de chaque projet. afin que vous puissiez affiner vos facteurs de corrélation.

septième, répéter et améliorer. Vous gagnerez beaucoup d'informations juste à la fin du premier projet, par la troisième que vous vous sentiez à l'aise Planification et Estimation.

Regardez http://fr.wikipedia.org/wiki/personal_software_process , cela fonctionne vraiment.

5
Miguel Veloso

Je trouve plus le plus facile de faire le processus de division aux tâches minimales telles que mentionnées ci-dessus, ouvrez-le, puis double cette estimation. Ensuite, je les ajoute ensemble et ajouter cinquante pour cent. Cela me donne une heure approximative du projet dans des conditions idéales. Si le travail va pratiquement se passer en parallèle avec d'autres, cela aura besoin de plus en plus. Si vous devrez attendre d'autres personnes, attendez-vous à ce qu'ils prennent deux fois plus longtemps que vous le pensez. En attente de contenu ou de commentaires ou d'autres informations prises souvent beaucoup plus longtemps que cela ne semble possible.

Là où je travaille, nous travaillons un meilleur cas/cas prévu/estimation pire des cas pour chaque étape du processus, ce qui est utile en tant que guide et également pour évaluer la manière dont vos estimations ont élaboré.

La technique n'est jamais si importante, sauf que vous devez être en mesure de lutter contre la tentation de la programmeuse de sous-estimer les tâches, mais ce qui est important, c'est être conservateur lorsque vous pouvez livrer quelque chose. Si cela vous prenne sept semaines pour construire quelque chose et que vous avez promis huit semaines, vous pouvez venir un peu tôt et avoir l'air bien pour cela ou faire des tests supplémentaires et être assuré de la fiabilité. Si vous avez promis six semaines, vous pouvez avoir l'air mal même s'il n'est absolument pas de votre faute. En cas de doute, devinez conservativement.

3
glenatron

Chaque fois que vous rencontrez un problème d'estimation, essayez de les diviser en morceaux plus petits. Ensuite, voyez si vous avez déjà fait des trucs similaires aux pièces. Si vous avez, vous devez déjà avoir une idée juste de la durée de la durée de chaque pièce. Si vous ne le faites pas, vous devez commencer à suivre activement la trace du temps pris pour divers 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 certain temps pour l'intégration et les tests.

Si vous n'avez pas fait quelque chose de similaire, vous pouvez probablement compter sur l'expérience des autres peuples et obtenir une estimation d'eux. Ne prenez pas cela à la valeur de visage cependant. Rien ne vous enseigne comme une expérience.

Son genre de tire une cible. Les tirs précédents à l'estimation devraient vous dire comment vous êtes hors de la marque, afin que vous puissiez le corriger.

3
aufather

La formule qui fonctionne lorsque vous travaillez pour moi-même:

  1. faites une pause de ToDo à une granularité de 1 à 4 heures. Je trouve que je suis généralement précis avec ces

  2. le "facteur inconnu": multipliez par un facteur de 2 élevé au nombre d'inconnus. C'est à dire. Si vous devez développer une application de Couchdb, mais je sais maintenant quoi que ce soit sur JavaScript et HTTP .. Ajouter 2 ^ 2 comme moyen à plusieurs facteurs.

  3. facteur de commutateur contextuel: multiple by 1.5 Si vous travaillez en parfait environnement (à la maison dans la barre d'étude, etc.), ou 2.5 Si vous travaillez dans un environnement imprudent (bureau/lieu de bureaux, etc.)

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

1
vrdhn

Plutôt que d'écrire un livre dessus, je vais simplement proposer un peu de conseils sur la manière d'utiliser la méthode d'estimation "décomposition":

  • Casser votre affectation dans des tâches de composants plus petites. Estimer chaque tâche le mieux possible.

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

  • Si vous n'en avez pas déjà un, ajoutez une tâche pour "apporter les tâches ensemble". Cette tâche peut ne pas sembler utile au début. Toutefois, lorsque vous utilisez cette méthode d'estimation "décomposition", il y a toujours beaucoup de choses à faire pour faire cela "tomber entre des tâches" et que "Tirez les tâches ensemble". Celui-ci peut être difficile à estimer. Fais de ton mieux.

  • Ajoutez une tâche pour les tests et la documentation. Votre affectation peut ne pas nécessiter beaucoup de tests et de documentation, mais vous devriez au moins passer un peu de temps à y penser.

  • Ajoutez les estimations de la tâche pour obtenir une estimation globale.

  • Allez-y et multipliez cette estimation totale de deux ††. Cela vous donnera du temps de rembourrage à:

    1. Terminez les choses que vous avez négligées dans votre liste de tâches d'origine
    2. Terminez les choses que vous n'auriez pas pu savoir avant de commencer
    3. Incorporer des commentaires d'autres personnes et apporter des modifications
    4. Se faire interrompre par d'autres choses qui se passent autour de vous, comme des réunions
    5. Terminer avant l'estimation plus souvent que derrière

Et dernier, mais non le moindre, n'ayez pas peur d'esquisser des estimations pour vous-même qui sont probablement totalement fausses. Parfois, il suffit de dessiner tout ce qui est potentiellement imprécisé, peut vous aider à démarrer sur la voie d'avoir un meilleur sens pour ce qui est impliqué.

†† Lorsque vous obtenez de plus en plus d'expérience, ce "facteur de fudge" peut être adapté à votre style personnel et à votre environnement de travail.

1
Mike Clark

Vous pouvez essayer de construire un enregistrement de piste de quelle était l'estimation et quelle était la réelle pour diverses tâches de construire suffisamment d'un enregistrement pour ensuite savoir quel multiplicateur d'avoir pour des choses spécifiques qui se répètent dans votre liste. Certes ceci est un exercice d'essai et d'erreur, mais cela semblait bien fonctionner pour moi. Il y a aussi quelque chose à dire pour de nombreux procès avant que le modèle ne ressort probablement probablement. Cela ressemble probablement à beaucoup d'autres réponses qui diraient que l'on pourrait faire bouillir jusqu'à: "le faire juste!" Comme c'est vraiment comment la plupart d'entre nous ont développé la compétence. Est-ce une douleur majeure pour voir à quel point une erreur peut être une erreur lorsque vous faites des estimations? Oui, mais si les estimations vont mieux, tout le monde peut éventuellement être heureux.

1
JB King

Si vous pouvez décomposer le projet en tâches plus petites et faire des estimations pour ceux que vous serez plus précis sur-tous. Toute tâche plus grande que quelques jours de quelques jours devrait être divisée plus loin. Si vous ne pouvez pas le casser plus loin que vous n'avez probablement pas d'écart de vos exigences. Si vous devez faire une estimation de retour d'une serviette pour une exigence d'une ligne bien ... rien ne peut vraiment vous aider beaucoup. Malheureusement, beaucoup de magasins fonctionnent de cette manière une grande partie du temps.

1
Jeremy

Apprenez votre propre biais. Si votre dernière estimation a été trop faible sur le facteur deux, la prochaine fois, double votre estimation initiale. (Bien sûr, la loi de Hofstadter rend difficile de faire ce droit ...)

C'est aussi toujours une bonne idée de rappeler à quel point le travail était nécessaire après la sortie initiale de l'œuvre précédente et ajoutez-la à la prochaine estimation. Par exemple. Votre dernière tâche a pris 2 mois à compléter, mais après avoir été en direct, le support, les correctifs et les changements supplémentaires vous ont coûté un autre mois. Ainsi, la prochaine estimation de 3 mois pour une tâche similaire.

0
user281377

Pour les ouvre-ouverts, lisez "Software Engineering Economics", par Barry Boehm et "Contrôler des projets logiciels", par Tom Demarco. Après avoir lu et digéré ces deux deux, lisez "l'estimation du coût du logiciel avec Cocomo 2", de Barry Boehm.

Pour ce que je dois dire ensuite, cela vous aidera beaucoup à avoir pris une classe de probabilité et de statistiques, même un livre de recettes de base.

Aucune estimation n'est parfaite. Il y a une probabilité d'arriver tôt et une probabilité de venir en retard. Le modèle de cocomo détaillé de Boehm a donné des prédictions qui se sont avéré être dans les 30% du résultat réel, mieux que 60% du temps. C'était beaucoup mieux que ce qui était courant quand il a écrit et publié le livre.

Lorsque vous prenez votre meilleure estimation (et c'est toute une estimation est), vous y compris ces probabilités. Si vous tirez l'estimation, vous augmentez la probabilité que vous venez tard. Si vous augmentez l'estimation, vous augmentez la probabilité que vous allez arriver tôt ou terminer à temps. Dans quelle mesure vous tirez ou laissez-le sortir contrôler la manière dont la probabilité change et doit nécessairement dépendre des sanctions pour être tôt ou tard. (Insérez des histoires d'horreur ici - et il y a eu beaucoup d'entre eux au fil des ans!)

Demarco traite de cela dans une certaine mesure. Il souligne également qu'il y a une "région d'impossibilité": certains horaires sont trop serrés à faire, peu importe le type d'héroïque qui sont tentées.

0
John R. Strohm