Comment estimer la contribution d'un individu à un projet de logiciel? [fermé]
-
19-09-2019 - |
Question
Je travaille sur un projet de logiciel et que vous souhaitez estimer le pourcentage de la contribution totale que j'ai mis dans le développement du logiciel. Est-il un outil faisant cela? Un tel outil peut être utile pour des évaluations ou des négociations, par exemple. Après tout, nous travaillons pour l'argent (oui, non seulement l'argent, a mis le point reste). Je pense qu'il ya assez de main-agitant des choses les plus importantes.
L'estimation est très subjective (au moins pour moi maintenant) mais je ne sais pas d'un outil qui fournit même une estimation subjective. Je sais que des SLOCCount qui précise l'effort total en utilisant les lignes de code, mais pas sur une base par développeur.
Mon idée d'un outil idéal pour cette fin serait:
- mesurer la complexité du code (plus complexe est plus d'efforts, mais plus d'efforts ne sont pas nécessairement plus contribution)
- mesurer la decomposibility / flexibilité du logiciel (plus décomposable est mieux)
- combien de code de bibliothèque est utilisé - en utilisant le code bibliothèque accélère le processus de développement, augmente le risque associé et nécessite le développeur de savoir d'avant ou en apprendre davantage sur la bibliothèque.
- être assez intelligent pour différencier les « qui a écrit le code », « qui a copié le code » et « qui indenté le code ».
Il est difficile de faire la différence entre la complexité de la mise en œuvre et la complexité intrinsèque du problème. Peut-être peut être effectué une comparaison avec un homologue open source équivalente s'il y a, ou pour chaque sous-module séparément.
S'il n'y a pas d'outil, est-il pas le mérite d'avoir un tel outil? Ou croyez-vous à « je travaille, je ne mesure pas »? Il faut du temps après tout. Peut-être le chef de projet devrait faire cette estimation de façon continue, par exemple, toutes les semaines. Y a-t-il des normes? Oui, la normalisation est difficile parce que chaque projet a des objectifs différents, mais peut-être cela devrait signifier qu'il devrait y avoir plusieurs normes, non pas de normes du tout. Cela ressemble à la façon dont une entreprise est évaluée sur le marché.
Mise à jour : après avoir vu quelques réponses initiales: Il n'a pas de sens d'imaginer un outil qui vient en sortie les pourcentages. Y at-il des outils qui peuvent aider les humains (en particulier les gestionnaires) à prendre de meilleures décisions? Ou quelle est la statistique suffisante pour prendre de meilleures décisions? Ces statistiques disponibles?
Pas de solution correcte
Autres conseils
Je doute vraiment il y a une façon digne de confiance fiable de mesurer la contribution de l'individu à la solution. réécriture parfois un code d'héritage complexe qui se traduit par moins de lignes de code, solution moins compliquée (plus petite complexité cyclomatique, etc.) peut être considérée comme une contribution très importante, alors que dans d'autres cas, la suppression du code de valeur couvrant les cas de pointe qui se traduit par les mêmes statistiques ( moins de lignes de code, plus petit CC etc.) est certainement quelque chose de mal. Tout cela se résume à des gens, la confiance et la coopération, l'individualisme dans l'équipe est presque toujours tort et je préfère l'éviter et surtout pas l'utiliser comme un facteur de motivation.
Ceci est un sujet de recherche lui-même. Il existe plusieurs outils qui ont essayé de définir des paramètres comme propriété de code . Il existe d'autres approches qui abordent d'autres aspects du développement collaboratif, par exemple href="http://scg.unibe.ch/archive/papers/Gysi10a.pdf" rel="nofollow noreferrer"> TruStability nous pouvons avoir dans le code.
Il y a eu aussi plusieurs études qui ont tenté d'utiliser les informations de trackers bug . Par exemple, pour identifier le développeur qui est plus susceptible d'introduire des bugs. Mais il est difficile d'être objectif (Un développeur brillant qui est attribué la partie la plus critique du système, sera encore plus susceptible d'introduire des bogues critiques).
Il est en fait difficile à monétiser les tâches de développement. Quel est le coût d'un bug? Quel est le gain de refactoring? Ce serait cependant une façon d'estimer la contribution d'un développeur.
La seule chose que je pouvais imaginer serait un système de vote. Je ne sais absolument pas si cela pourrait fonctionner dans votre équipe ou partout - mais je suis sûr que vous aurez besoin des humains pour une estimation réaliste de la qualité du code
.Dans le livre de Stroustrup sur C ++ J'ai lu une fois « Ne pas essayer de résoudre les problèmes sociaux avec des moyens techniques ».
Pensée progmatically, l'attitude et la capacité d'un programmeur pourrait être très rapidement estimé en faisant un examen de code ensemble et avoir une conversation sur des sujets pertinents.
Penser comme IT-amateur et comme maniaque du contrôle, cela ne devrait pas être très difficile à mettre en œuvre un logiciel d'apprentissage automatique enseignable, qui utilise la version-cotrol, base de données de bogues, etc et greates en temps réel effectué soit données pour chaque contributeur. Par exemple. R, KNIME ou WEKA pourraient être utilisés pour cela.