Presque tous les développeurs doivent répondre aux questions du côté des entreprises comme:
[.____] Pourquoi cela va-t-il prendre 2 jours pour ajouter ce formulaire de contact simple?
Lorsqu'un développeur estime cette tâche, ils peuvent la diviser en étapes:
Celles-ci sont peut-être difficiles à expliquer à une personne non technique, qui voit fondamentalement toute la tâche comme il suffit de mettre en place des HTML et de créer une table pour stocker les données. Pour eux, cela pourrait être 2 heures max.
Alors, y a-t-il un meilleur moyen d'expliquer pourquoi l'estimation est élevée pour un non-développeur?
Vous venez de le faire dans votre question.
Diviser la tâche dans les étapes individuelles et donner des estimations pour chacun. Cela montrera que vous avez considéré toutes les options et (espérons-le) couvrait toutes les éventualités.
Si les délais sont trop importants, vous pouvez alors discuter de quelles parties (par exemple confirmation par courrier électronique) ne sont pas nécessaires dans ce cas avec des données concrètes plutôt que de simplement essayer de cramer une quart dans un pot de pinte.
Faites cela assez souvent et vous saurez-vous, espérons-leur qu'il y a généralement plus à un développement que de rencontrer les yeux au premier abord.
La liste des tâches est à peu près parfaite, mais gardez à l'esprit que les tâches qui ont un sens idéal pour un ingénieur ont très peu de sens pour une personne non technique. Par exemple, dans la liste ci-dessus, je sais que "optimiser les modifications de la vitesse de la vitesse" peut être une ou plusieurs tâches de consommation qui incluent le profilage du code, l'exécutant à la recherche de points lents, en l'examinant avec des experts ou de la jeter à travers un Ensemble de tests prédéfinis spécifiques au produit. Et puis vous avez probablement plusieurs heures si ce n'est pas des jours de martèlement de votre tête sur votre bureau pendant que vous essayez de trouver un moyen de réparer les zones trop lentes.
Mais vous avez peut-être perdu votre gestion de projet sur le mot "dB" sinon le mot "optimiser".
J'exprime généralement cette affaire à la gestion de projet en termes de grandes étapes avec des mots qui décrivent le risque de l'entreprise. Prendre votre liste, je bouillirais de cette façon si je parlais à ma gestion de projet:
J'éviterais toute estimation inférieure à une demi-journée. Ils vont avoir à faire confiance à un certain niveau que vous savez de quoi vous parlez. Et s'ils pensent vraiment que ce ne sera vraiment que 2 heures, puis les inviter à s'asseoir avec vous pendant 2 heures pendant que vous les marchez exactement à quoi ressemble 2 heures dans la vie d'un développeur SW - alors faites une classe de 101 codant pour Environ 2 heures, pour montrer exactement ce que tous doivent être considérés comme partis pour commencer à résoudre le problème.
Le plus important est les choses suivantes:
Il y a un dicton: "Vous ne pouvez pas correspondre à dix livres de (merde) dans un sac à cinq livres." Votre travail consiste à montrer que la tâche est de dix livres et qu'ils demandent de l'avoir dans un délai de cinq livres.
La seule chose qui vous manque, c'est le temps d'estimation du temps. Mettez une estimation de temps sur chaque tâche et montrez comment toutes ces choses s'ajoutent ensemble à l'estimation que vous fournissez. Ne laissez aucune estimation d'être supérieure à 4 heures. Si vous avez une tâche où vous dites "une journée" ou "10 heures", puis la casser en sous-éléments plus petits.
2h make some changes to Database
2h add front end HTML
write server side code
4h input validation
4h database inserts
2h add validation
2h add client side javascript
use unit tests
2h client-side tests
3h server-side tests
2h make sure SEO is setup is working
2h implement email confirmation
2h optimize DB changes for speed
2h refactor and optimize the code for speed
Vous avez maintenant une facture détaillée des coûts. Tout a dit, cela totalise jusqu'à 27 heures de travail.
Vous pouvez maintenant le montrer à votre client et dire: "Ce sont les choses qui doivent être faites, avec le coût de chacun". Utilisez le mot "coût", car le temps IS un coût et la direction comprend les coûts. Expliquez que vous pouvez éventuellement laisser tomber les deux tâches d'optimisation à la fin, mais ils auront un effet négatif la route, et ils ne sont que 15% de l'estimation totale.
Assurez-vous également que vous expliquez quelles sont vos heures/jour, réalisciquement. Par exemple, si vous êtes appelé à faire un support technique, ou à maintenir des bases de données, ouc., créez-le dans votre estimation. Ne dites pas "Eh bien, je peux faire 7,5 heures par jour de bon codage" parce que vous ne pouvez probablement pas. C'est probablement plus comme 5 ou 6.
Ensuite, surtout, suivez vos progrès. Dites que vous pouvez faire 5 heures par jour de codage. Ensuite, vous devriez pouvoir éliminer les deux premières tâches (dans mon exemple) lundi, terminer la troisième et commencer le quatrième mardi, et ainsi de suite. Faites une liste de contrôle qui le montre, de sorte que vous puissiez les montrer mercredi quand ils viennent en viennent et disent: "Comment ça va que vous allez toujours être fait d'ici la fin du vendredi?"
Voir mes diapositives pour mon discours prévenir la crise: estimation du projet et suivi qui fonctionne que j'ai donné à Oscon il y a quelques années. Regardez la diapositive 21, "Planification de la semaine". Il y a aussi un diagramme de vitesse d'échantillonnage .
Leur demander:
Comment le feriez-vous? Quels modules changeriez-vous? Combien de lignes de code? Quelles sont les implications de sécurité? Toute modification du schéma de base de données? Si vous apportez une modification de la DB, combien de fichiers sont affectés? Combien de temps a-t-il fallu pour ajouter le dernier formulaire? Quelle est la moyenne (moyenne arithmétique) pour ajouter un formulaire? Quel était le plus long? Je vais estimer que cela prendra une minute de moins que le plus long. Si vous ne savez pas combien de temps il a fallu pour ajouter les derniers formulaires n, cette estimation n'est garantie que d'être précise d'un ordre de grandeur.