Presque tous les développeurs doivent répondre à des questions d’ordre commercial, telles que:
Pourquoi va-t-il falloir 2 jours pour ajouter ce simple formulaire de contact?
Lorsqu'un développeur estime cette tâche, il peut la diviser en plusieurs étapes:
- apporter des modifications à la base de données
- optimiser les changements de base de données pour la vitesse
- ajouter du HTML frontal
- écrire le code côté serveur
- ajouter une validation
- ajouter du javascript côté client
- utiliser des tests unitaires
- assurez-vous que la configuration du référencement fonctionne
- implémenter un email de confirmation
- refactoriser et optimiser le code pour la vitesse
- ...
Celles-ci sont peut-être difficiles à expliquer à une personne non technique, qui considère en gros que toute la tâche consiste simplement à assembler du code HTML et à créer un tableau pour stocker les données. Pour eux, cela pourrait être 2 heures MAX.
Alors, y a-t-il une meilleure façon d'expliquer pourquoi l'estimation est élevée pour un non-développeur?
communication
estimation
Mag20
la source
la source
Réponses:
Vous venez de le faire dans votre question.
Divisez la tâche en étapes individuelles et donnez des estimations pour chacune d’elles. Cela montrera que vous avez envisagé toutes les options et (espérons-le) couvert toutes les éventualités.
Si les délais sont trop longs, vous pouvez alors discuter des éléments (par exemple, la confirmation par courrier électronique) qui ne sont pas nécessaires dans ce cas avec des données concrètes plutôt que d'essayer simplement de mettre une pinte dans un pot.
Faites-le assez souvent et vous leur apprendrez, espérons-le, que le développement ne se limite généralement pas au regard.
la source
La liste des tâches est presque parfaite, mais gardez à l'esprit que les tâches qui ont un sens parfait 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 base de données pour une utilisation plus rapide" peut être une ou plusieurs tâches fastidieuses, telles que profiler le code, l'exécuter, rechercher des points lents, l'examiner avec des experts ou l'exécuter avec ensemble de tests prédéfinis spécifiques au produit. Et puis vous avez probablement plusieurs heures, voire plusieurs jours, de coups de tête sur votre bureau pendant que vous essayez de trouver un moyen de réparer les zones qui sont trop lentes.
Mais vous avez peut-être perdu la gestion de votre projet avec le mot "DB" sinon le mot "optimiser".
J'exprime généralement ce genre de choses à la gestion de projet sous forme de grandes étapes avec des mots décrivant le risque en termes d'activité. En prenant votre liste, je résumerais ainsi si je parlais à ma gestion de projet:
J'éviterais toute estimation inférieure à une demi-journée. Ils vont devoir faire confiance, à un certain niveau, que vous savez de quoi vous parlez. Et s’ils pensent vraiment que cela ne prendra que 2 heures, invitez-les à s’asseoir avec vous pendant 2 heures pendant que vous leur expliquez exactement à quoi ressemble 2 heures dans la vie d’un développeur SW - puis suivez un cours de codage 101 pour environ 2 heures, pour montrer exactement ce que tout doit être considéré pour commencer même à résoudre le problème.
Le plus important est les choses suivantes:
la source
Il y a un dicton qui dit: "On ne peut pas contenir dix livres de (merde) dans un sac de cinq livres." Votre travail consiste à montrer que la tâche est de dix livres et ils demandent de le faire dans un délai de cinq livres.
La seule chose qui vous manque, c'est l'estimation de temps. Fixez une estimation de temps pour chaque tâche et montrez comment toutes ces choses s'additionnent pour l'estimation que vous fournissez. Ne laissez aucune estimation dépasser 4 heures. Si vous avez une tâche pour laquelle vous dites "un jour" ou "10 heures", décomposez-la en tâches plus petites.
Vous avez maintenant une facture détaillée des coûts. En tout, cela représente 27 heures de travail.
Vous pouvez maintenant montrer ceci à votre client et lui dire "Ce sont les choses à faire, avec le coût de chacune". Utilisez le mot "coût", car le temps est un coût et la direction comprend les coûts. Expliquez que vous pouvez éventuellement supprimer les deux tâches d’optimisation à la fin, mais que cela aura un effet négatif à terme, elles ne représentent que 15% de l’estimation totale.
Assurez-vous également que vous expliquez votre heure / jour de façon réaliste. Par exemple, si vous êtes invité à faire de l’assistance technique, à maintenir des bases de données, peu importe, figurez-le dans votre estimation. Ne dites pas "Eh bien, je peux faire 7,5 heures par jour de codage de qualité", car 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 être en mesure de supprimer les deux premières tâches (dans mon exemple) lundi, de terminer la troisième et de commencer la quatrième mardi, et ainsi de suite. Faites une liste de contrôle qui montre cela, de sorte que vous puissiez leur montrer le mercredi quand ils viendront et dire: "Comment ça va, allez-vous encore avoir terminé vendredi?"
Voir mes diapositives pour mon exposé Prévenir les crises: estimation et suivi de projet qui fonctionne que j'ai donné à OSCON il y a quelques années. Regardez la diapositive 21, "Planifier la semaine". Il existe également un exemple de graphique de vélocité .
la source
Leur demander:
Comment le ferais-tu? Quels modules changeriez-vous? Combien de lignes de code? Quelles sont les implications pour la sécurité? Avez-vous modifié le schéma de la base de données? Si vous apportez des modifications à la base de données, 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 l'ajout d'un formulaire? Quel était le plus long? Je pense que cela prendra une minute de moins que la plus longue. Si vous ne savez pas combien de temps il a fallu ajouter les N derniers formulaires, il est alors garanti que cette estimation n’est précise qu’à un ordre de grandeur.
la source
Je pourrais vous dire de leur expliquer que leur logiciel est comme une machine de 100 tonnes avec 10 000 pièces différentes, dont la plupart sont connectées de manière compliquée. Le montage d'un morceau de pouce dans cette machine demande un peu d'ingénierie, pour ne pas la casser, MAIS la meilleure réponse est:
Si vous aviez une meilleure architecture de code, cela faciliterait-il des tâches comme celle-ci? Et la réponse est que la plupart des équipes logicielles ne sont pas de bons architectes (parce qu’elles n’ont tout simplement pas amassé des modèles génériques d’architecture ou ne maîtrisent pas suffisamment le domaine des problèmes pour anticiper tous les problèmes) et qu’ils ne sont pas toujours de bons ingénieurs. , de sorte qu'ils ne se sentent pas en confiance pour faire des estimations ou faire des promesses.
Tout comme il a fallu le 20ème siècle pour réunir une bonne architecture et l'ingénierie nécessaire à la construction de grands bâtiments, les outils de génie logiciel ne sont tout simplement pas encore connus. Ils sont en cours de développement: il faut un nouvel état d'esprit. Voir Code Zen sur wiki.hackerspaces.org/Hacking_with_the_Tao.
la source