Quelques conseils du côté obscur de celui qui a appris à la dure.
Les exigences ne sont pas claires. Personne n’a procédé à une analyse approfondie de toutes les implications.
Ne faites pas d'estimation à ce stade. On n’estime pas combien de soldats sont nécessaires pour gagner une bataille sans avoir la moindre idée du nombre d’ennemis. L'estimation est faite après le dépistage. Ceci est sauf si vous avez déjà combattu cet ennemi.
La nouvelle fonctionnalité va probablement briser certaines hypothèses que vous avez faites dans votre code et vous allez commencer à penser immédiatement à tout ce que vous pourriez avoir à refactoriser.
C’est à vous qu’il incombe d’en tenir compte, sauf si vous vous attendez à ce que les autres possèdent l’expertise nécessaire dans ce domaine.
Vous avez d'autres tâches à accomplir dans le cadre de missions antérieures et vous devrez produire une estimation tenant compte de ces autres tâches.
Idem que ci-dessus, même pour un travail imprévu créé par un coéquipier slob à côté de vous avec une procédure de test quasi inexistante qui provoque un problème de code que vous ne pouvez pas prédire à l'avance. C'est une météo.
La définition du "fait" n'est probablement pas claire: quand sera-t-il terminé? 'Terminé' comme juste fini de le coder ou 'terminé' dans "les utilisateurs l'utilisent"?
Comprenez les besoins de l'utilisateur ici, pensez comme un utilisateur. Ne faites pas ce que font vos pairs s’ils estiment qu’une tâche doit être "exécutée", simplement parce qu’une fonctionnalité de base avec un flux de travail barebone qu'aucun utilisateur ne peut tolérer est ce qu’ils considèrent être "réalisée" . Pensez-y du point de vue de l'utilisateur, car c'est tout ce que le client pour lequel vous faites une estimation comprendra généralement. Estimez en fonction des besoins complets de l'utilisateur, et non des besoins techniques barebone. Et réalisez que vos clients demandant des estimations seront totalement inexacts sur la façon dont ils formulent les choses et comprennent les aspects techniques de ce que vous dites.
Peu importe votre degré de conscience de toutes ces choses, parfois votre "fierté du programmeur" vous fait donner / accepter des délais plus courts que vous ne le supposiez au départ. Surtout lorsque vous ressentez la pression des délais et des attentes de la direction.
Ne fais pas ça! Vous parlez comme un travailleur acharné et motivé, et peut-être même quelqu'un qui cède facilement à la contrainte.
Le problème ici est le suivant: supposons que Joe et vous avez fait une estimation de temps pour la même tâche (mais entre deux employés distincts ne connaissant pas les deux estimations à la fois). Vous estimez vaillamment, "une semaine" . Ce n'est pas grave, pensez-vous, vous travaillerez plus de 100 heures par semaine, en heures supplémentaires non rémunérées. Maintenant, vous avez trois jours de retard.
Pendant ce temps, Joe estime 5 mois. Vous pensez que c'est ridicule, vous pensez pouvoir retirer ceci en une semaine. Combien travaille Joe? 10 heures par semaine? ... sauf qu'il termine à temps dans exactement 5 mois.
Devinez qui est perçu comme le crétin? C'est vrai, vous. Joe semble être un excellent ouvrier, vous ne semblez pas fiable maintenant. Peu importe que vous ayez pu obtenir un résultat encore meilleur dans environ 7% du temps que Joe a pris. Ce qui compte, c’est que vous disposiez de 3 jours de congé par rapport à une estimation d’une semaine.
Ne vous trompez jamais du côté de l'estimation la plus serrée. Err du côté de l'estimation la plus souple. Votre entreprise doit se faire une réputation et ne sera pas basée sur la longueur de vos estimations mais sur l’exactitude de vos estimations. Il est facile d’être précis avec une estimation trop longue, vous avez juste plus de temps pour travailler sur le problème et le résoudre mieux. Une estimation trop courte ne laisse aucune marge de manœuvre, vous la rencontrez désespérément ou vous vous faites avoir.