web-dev-qa-db-fra.com

Comment expliquer que la taille de l'échantillon n'influence pas la longueur du projet

Nous avons de grands projets d'entreprise qu'ils impliquent normalement des données de copie d'une base de données source dans une base de données de destination, puis de définir un certain nombre d'applications supplémentaires qui synchronisent ces données, etc.

Le dernier projet contenait 250 000 articles (rangées de données). Le projet suivant ne contiendra que 4 000 articles. Les gestionnaires de projet/les hommes d'affaires croient que le projet devrait être 1/10 le temps de terminer car sa seule fraction de la taille du dernier projet.

Qu'est-ce qu'une bonne analogie Je peux utiliser pour expliquer que le code d'écriture pour transférer des données d'un système à un autre prend le même montant quel que soit le nombre d'éléments - l'écrivant pendant 1 article ou pour 100 000 000 prendront à peu près le même temps d'un point de vue de programmation.

58
Daveo

Dites-leur que c'est comme construire une nouvelle autoroute de quatre voies à une partie éloignée du pays. Que cette route soit utilisée par 100 voitures par jour ou 1000 voitures par jour, les efforts de création de la route seront à peu près les mêmes.

Accordé, si cela favorisera 1 000 000 voitures par jour, vous devrez faire de la route un peu plus robuste, mais peu importe, vous allez devoir couper les mêmes arbres, souffler à travers les mêmes montagnes, nivelez le même montant de la saleté, et ces activités sont à peu près un coût fixe, peu importe le nombre de voitures utilisent la route.

112
Bryan Oakley

Donnez-leur une calculatrice et demandez-leur d'ajouter 1238783423 à 9858238483, heure de combien de temps il faut. Demandez-leur ensuite d'ajouter 3423 à 8483 et dites-leur que vous attendez de la réponse environ 100 000 plus rapidement.

Vous pouvez également expliquer la quantité de données (probablement) effets de la durée du logiciel aura à exécuter pas le temps de développement.

102
jk.

Mettez-le dans le manager parler.

Si vous construisez une machine pour effectuer des widgets à 1 widgets par seconde, cela ne comporte pas si vous l'utilisez pour créer 100 widgets ou 10000 widgets, la machine elle-même prend la même heure à construire.

la différence est au moment de l'exécution, pas de temps de construction.

Toutes les classes de gestion travaillent sur un problème comme celui-ci avec des usines de widget hypothétiques.

35
Eric Brown - Cal

N'utilisez pas d'analogie. Il suffit d'expliquer ça.

  • Pour un très petit nombre d'articles (10?) Il est le moins cher de convertir manuellement. N'écrivez pas du tout un programme.
  • Pour un petit nombre d'articles (100?) Cela vaudra la peine d'écrire un programme. Vous pourrez peut-être effectuer des économies en ignorant des permutations des données théoriquement possibles, mais n'apparaissez pas dans la pratique dans le petit jeu de données. Ou apparaissent dans de tels chiffres que le programme peut les rejeter, et ils peuvent être convertis manuellement. Il est réalisable d'exécuter des analyses rapides sur les données pour vérifier si les cas d'angle apparaissent réellement dans les données. S'ils n'apparaissent pas, ils peuvent être ignorés.
  • Une fois que vous passez ce point, la taille réelle des données n'a aucun impact. Vous devez écrire un programme sérieux pouvant gérer toute entrée possible. Le programme peut gérer 1 000 articles ou 100 000. Cela prend juste plus de temps à courir.

L'éducation vaut mieux que de parler :)

5
MarkJ

Pas vraiment une analogie, mais je crois toujours un bon moyen de faire face à cet argument: démontrer qu'il y a un défaut fatal.

Votre projet précédent inclus (de ce que je reçois) copier des données avec quelques modifications à ce sujet.

Si je me suis bien compris, c'est une équipe de ces comptables, disent que 100 comptables peuvent faire en quelques mois. Alors pourquoi ont-ils eu des développeurs de logiciels au problème?

Parce que le logiciel que vous avez créé ne se soucie pas s'il traitera de 10 ou 10 millions de données (Pas exactement, mais je doute que vos directeurs soignent la complexité de O(n)). Ainsi, c'était probablement moins coûteux, plus rapide et plus propre (moins de processus d'erreur d'erreur).

Si vous êtes plus radical, vous pouvez même suggérer que s'ils n'aiment pas la rapidité avec laquelle l'équipe du logiciel fonctionne, ils peuvent toujours appeler dans les comptables pour faire le travail à la main.

Cela a rendu la vie de vos responsables beaucoup plus facile lorsque vous développiez le dernier projet, et maintenant, quand ils doivent appliquer la même logique pour comprendre la prochaine pièce de logiciels ne se soucie pas non plus de fonctionner sur 10 millions ou 4 000 lignes, ils oublient soudainement.

Je pense que dans votre cas, les gestionnaires jouent simplement un jeu d'estimation et essaient de forcer l'équipe à travailler plus vite, en soulignant la différence entre 4000 et 250000 et en espérant que certaines "culpabilité". Je pourrais avoir tort, mais j'ai vu cela auparavant.

C'est un moyen terrible de gérer une équipe de programmeurs (en fait de tout type d'équipe créative) et cela n'aide personne.

3
K.Steff

Je sais que vous avez demandé une analogie, mais je pense que c'est la mauvaise technique.

Je crois, comme d'autres l'ont mentionné en passant, que vous devez souligner que la taille des données affecte Temps d'exécution , pas Temps de construction .
[.____] Alors, rompez-la pour eux - vous avez réellement deux Sous-projets, construire et courir. Le projet de construction devrait (pour la plupart) être sans pertinents de la quantité de données qu'il exécutera, elle ne compte que les types des données.
En ce qui concerne le temps d'exécution, ils peuvent facturer cela en fonction de la taille de données (à l'exclusion de toute surcharge fixe non triviale).

C'est comme si vous devez conduire à Melbourne - mais vous devez d'abord construire la voiture.
Bien sûr, conduire à Sydney pourrait être plus rapide - mais la construction du véhicule prend le même temps.
D'accord, je t'ai donné une analogie après tout.

3
AviD

Peut-être un téléphone? Votre client veut un téléphone sur mesure. S'il fait 0 appels par jour ou 100 appels par jour, cela prendrait le même temps pour créer son téléphone.

Les données qu'un téléphone transmet est analogue aux données copiées par votre programme.

Vos gestionnaires semblent confondre à la durée de développement avec le temps d'exécution réel du programme. Mais leur malentendu peut être différent. Ils peuvent supposer qu'il y a moins de "champs" impliqués. Pas seulement moins d'enregistrements de données. S'il y a 100 000 champs de données individuels, il s'agirait d'un effort de développement massif comparé à seulement 10 champs. Plus de cartographie des travaux du système au système. Dans ce cas, ils peuvent réellement être corrects, mais il y a encore des frais généraux constants impliqués et que vous ne pouvez pas simplement diviser par le nombre de champs pour obtenir le temps.

0
mike30

Comme j'aime décrire, les données informatiques ont 2 dimensions longueur et largeur. La longueur est le nombre d'enregistrements, la largeur est le nombre total de colonnes sur toutes les tables.

Maintenant, lorsque vous souhaitez importer des données, il est comme faire un bloc à travers un trou. Vous devez faire un trou assez grand pour la plus petite dimension, puis porter le bloc à travers

maintenant, avec 10 millions et 10 mille la plus petite dimension est toujours la largeur. Donc, c'est la largeur qui décide combien de temps il faut pour faire le trou.

Pour compléter la métaphore, ff c'est la longueur qui est plus petite que vous devez simplement taper les données manuellement

0
Andrey