Comment estimer le temps de programmation

L'art raffiné d'estimer le temps de création d'un logiciel

Je veux vraiment dire à tout le monde comment j'évalue le temps nécessaire pour construire des projets logiciels.

Au cours des 10 dernières années, on m'a posé cette question des centaines de fois.

  • «Nous devons implémenter cette fonctionnalité. Combien de temps cela va-t-il vous prendre? »
  • «Donnez-moi un aperçu détaillé du temps que prendra ce projet en termes de temps. 1 mois? 2 mois?"
  • «Je veux que vous expédiiez ceci. 50 heures de temps facturables suffisent-elles? »

La réponse à ces questions a été soitpari, dans le cas le plus optimiste. Ou unacte de foi, sachant que si j'avais promis un numéro, cela aurait probablement été mon chèque de paie quel que soit le temps réel qu'il a fallu.

Parfois, avec des clients à long terme, j'ai pu amortir les projets qui dépassaient mes estimations avec des projets où j'ai terminé les travaux plus tôt que prévu, en informant le client.

Finalement, j'ai fini par dire "Je ne peux pas estimer».

Donc, la réponse à «Je veux vraiment dire à tout le monde comment j'évalue le temps nécessaire pour construire des projets logiciels» est:Je ne.

Mais je peux estimer çapersonne n'est vraiment capable d'estimerquand il s'agit de créer des logiciels, en raison des complexités internes que ce domaine peut vous opposer.

Les «vrais ingénieurs» auront du mal à l'admettre, mais je n'ai jamais été votre véritable type d'ingénieur.

L'estimation est probablement la chose la plus difficile lorsque l'on travaille en tant que développeur.

Voici un tableau de référence sympa que vous pouvez utiliser lorsque vous avez besoin d'estimer une tâche

Tâche Vous estimez Tu as oublié Temps réel nécessaire
Un petit bugfix 2 minutes Nous devons trouver la fonction qui a le bogue dans le code source, git pull, vérifier que nous n'avons cassé aucune autre fonction, nous devons ajouter des tests, exécuter les tests, corriger les tests que nous avons cassés, déployer, mettre à jour le traqueur de bogues 2 heures
Une caractéristique mineure 2 heures Vous devez corriger ce TODO laissé dans le code de la fonction que vous allez éditer, et voir pourquoi il y a un//don't touch thiscommenter. Vous devez effectuer soigneusement des tests manuels, ainsi que des tests de navigateur, et vérifier pourquoi Edge ne fonctionne pas comme prévu. Oh, nous devons mettre à jour toutes les captures d'écran dans la documentation 10 heures
Améliorer les performances d'un point de terminaison 10 heures Vous avez besoin de repères précis que vous pouvez utiliser pour prouver que votre nouvelle implémentation fonctionne correctement, et ajoutez 10 tests supplémentaires qui n'étaient pas présents auparavant, sinon vous risquez de casser le code de production utilisé par 10000 clients. 5 jours
Réécrire tout le code du frontend 3 semaines Vous commencez juste avec le nouveauplus évolutifframework que vous expérimentiez, sans toucher à l'interface utilisateur, mais vous rencontrez un tout nouvel ensemble de problèmes, mais cette fois, il n'y a pas de StackOverflow ou de Google pour vous aider, car le framework est trop nouveau. Vous rencontrez des problèmes uniques et vous devrez engager le responsable de la bibliothèque pour travailler avec vous, mais il est déjà passé à la prochaine grande chose. Pendant que vous y êtes, l'équipe de l'interface utilisateur décide de travailler sur une réécriture complète de l'interface, 2 fois. Les chefs de produit à mi-temps veulent passer à un produit légèrement différent 12 mois

Cela peut être une bonne estimation de notre manque d'estimation, mais bien sûr, les choses peuvent aussi fonctionner à l'inverse: une chose que vous estimez peut prendre 5 jours peut ne prendre qu'un jour car vous trouvez que tout est déjà en place pour l'ajouter, et cela prend beaucoup moins que prévu.

Certains pourraient surestimer, projetant qu'ils pourraient avoir des difficultés, ajoutant 30% de plus à ce qu'ils pensent.

L'estimation des projets d'équipe est encore plus difficile, je n'essaierai même pas.

Que faire alors?

Au lieu d'une estimation détaillée, je propose une communication continue avec le client ou le patron ou celui qui a commandé votre travail, et je fais des bilans hebdomadaires sur l'avancement du projet. Sans prédéfinir quand le processus se terminera.

Parce qu'après tout, le processus ne s'arrêtera jamais.


Plus de tutoriels de laboratoire: