web-dev-qa-db-fra.com

Comment expliquer à une personne non technique pour laquelle la tâche prendra beaucoup plus de temps qu'elles ne le pensent?

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:

  • apporter des modifications à la base de données
  • optimiser les changements de DB pour la vitesse
  • ajouter l'extrémité avant HTML
  • code côté serveur d'écriture
  • ajouter une validation
  • ajouter le côté client JavaScript
  • utiliser des tests d'unité
  • assurez-vous que la configuration du référencement fonctionne
  • mettre en œuvre la confirmation du courrier électronique
  • refacteur et optimiser le code de vitesse
  • ...

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?

60
Mag20

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.

26
ChrisF

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:

  1. Premièrement, il y a deux parties à cette chose - la page Web que l'utilisateur voit et serveur qui fait le levage lourd. Les deux parties doivent être là pour que cette fonctionnalité fonctionne.
  2. La première partie sera d'élaborer une page Web qui a du sens pour l'utilisateur (ajouter l'extrémité frontale HTML, ajouter le côté client JavaScript). La clé ici est que la page Web doit ressembler à cela de ce produit, elle doit fonctionner dans tous les navigateurs que nous soutenons et doit être slick. Ce que l'utilisateur voit, donc si cela semble mauvais, l'utilisateur pensera que notre produit est mauvais. Développer cela puis tester cela prendra x jours.
  3. Ensuite, il doit y avoir des trucs sous la page Web qui effectue le travail. Dans ce cas, cela signifie Insérer une description de la fonctionnalité ici (Maps to - apporter des modifications à la base de données, écrire le code côté serveur, mettre en œuvre la confirmation par courrier électronique, ajouter la validation, utiliser des tests d'unité). Je ne peux pas juste jeter ceci ensemble. Si le code est développé puis testé, nous risquons de causer des dommages aux données de tous les utilisateurs. Cela signifie qu'une nouvelle chose simple pourrait endommager la réputation du produit à travers le conseil - même pour les utilisateurs qui n'utilisent pas cette fonctionnalité particulière. Nos pratiques de développement couvrent cela - nous faisons beaucoup de tests pour vous assurer que cela ne se produira pas - mais cela signifie que je dois planifier dans le temps pour le tester correctement. Cela me prendra des jours.
  4. La vitesse est une grosse affaire dans notre produit. Si des trucs ne se produisent pas rapidement, les utilisateurs penseront que le produit n'est pas bon. Ainsi, après avoir écrit tout ce genre de choses, je dois passer par le travail et vous assurer que c'est à la hauteur de la performance. Ceci est une grosse affaire dans Web Stuff - si les gens voient un site deviennent lents, ils se tourneront rapidement vers un autre produit pour répondre au même besoin, car il est vraiment difficile de voir la différence entre lent et cassé. Ce type de travail prend généralement z jours (optimiser les modifications de DB pour la vitesse, le refacteur et optimiser le code de la vitesse)

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:

  • Acheter parler le plus à propos de la perception des clients et de l'utilisation du produit, vous venez de parler de leur langue - la langue de $$ - le point est que le code est piraté ensemble de manière piégée de manière piégée, vous allez éventuellement perdre des affaires - sinon Sur cette fonctionnalité, alors sur une caractéristique ultérieure lorsque des pratiques de développement médiocres ont rendu impossible l'étendue du code.
  • Définissez une séquence d'événements. La prochaine question non technique sera "si nous avons eu plus de développeurs que toi, cela arriverait-il plus vite? Si tel est le cas, si cela prendra 40 heures pour en faire cela, peut-être 40 personnes le faire arriver cet après-midi?" Bien sûr, la réponse est "Non! Tu es hors de ton esprit ??". Mais ce n'est pas le meilleur. Le meilleur est qu'il y a une séquence logique d'étapes ici. Chose B ne peut pas être fait tant que chose a est en place (si vous n'avez pas écrit de code, vous ne pouvez pas vraiment l'optimiser ou le tester ...). Chose a et a 'pourrait être fait ensemble cependant, alors s'ils pouvaient épargner ce mec intelligent là-bas, vous pourriez raser le temps passé d'une semaine à 4 jours, et s'ils peuvent garantir le support de test génial, vous pourriez probablement arriver à 3 jours. Il y a généralement un peu d'espace pour rouler et traiter cela - mais assurez-vous de négocier des choses qui vous aideront.
  • Concentrez-vous sur le risque et être prêt à dire que certains risques en valent la peine pour le moment. C'est ce que les gars de l'entreprise sont payés les gros dollars pour - déterminer quels risques valent la peine d'être pris. Par exemple, si la vitesse sur le marché pèse de mauvaises performances, car votre entreprise a suffisamment d'argent à la main pour mettre en place un nombre ridicule de serveurs à court terme, vous pouvez donc vous dire de sauter tout ce type à l'étape 4 (l'optimisation du code/de la base de données ). C'est leur droit - c'est juste votre travail pour expliquer les risques inhérents à cette décision.
  • Cependant, si vous ne faites pas confiance à ces personnes, obtenez une confirmation par écrit - il n'est pas nécessaire d'être conflicturé, juste un email rapide dire "Voici ce que je pense que nous avons discuté, voici ce que je ne fais pas, voici le Risque. Je vais le faire maintenant, alors faites-moi savoir si vous êtes en désaccord ... Si je n'entends pas de votre part, vous allez supposer que c'est la bonne façon de procéder ". Étant donné que la gestion des produits peut être le centre de perte de mémoire à court terme, cela est assez utile pour tout le monde.
11
bethlakshmi

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 .

9
Andy Lester

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.

1
SnoopDougieDoug