Un cadre de mon lieu de travail m'a posé la question à mon groupe de développeurs:
Combien de lignes de code un développeur C # peut-il produire par mois?
Un ancien système devait être porté en C # et il aimerait que cette mesure fasse partie de la planification du projet.
D'une source (apparemment crédible), il avait la réponse "10 SLOC / mois " mais il n'était pas satisfait de cela.
Le groupe a convenu que cela était presque impossible à préciser car cela dépendrait d'une longue liste de circonstances. Mais nous pouvions dire que l'homme ne partirait pas (ou ne serait pas très déçu de nous) si nous ne trouvions pas de réponse qui lui conviendrait mieux. Il est donc reparti avec la meilleure réponse de "10 SLOC / jour "
Peut-on répondre à cette question? (désinvolte ou même avec une analyse)
la source
Réponses:
Demandez à votre cadre combien de pages de contrat son avocat peut écrire par mois. Puis (j'espère), il se rendra compte qu'il y a une énorme différence entre la rédaction d'un contrat d'une seule page et la rédaction d'un contrat de 300 pages sans lacunes ni contradictions. Ou entre la rédaction d'un nouveau contrat et la modification d'un contrat existant. Ou entre la rédaction d'un nouveau contrat et sa traduction dans une autre langue. Ou à un système juridique différent. Il conviendra peut-être même que les «pages de contrat par unité de temps» ne sont pas une très bonne mesure pour la productivité des avocats.
Mais pour vous donner une réponse à votre vraie question: D'après mon expérience, pour un nouveau projet, quelques centaines de SLOC par jour et développeur ne sont pas rares. Mais dès que les premiers bugs apparaîtront, ce nombre baissera fortement.
la source
S'ils sont bons, moins de zéro.
la source
Courez dans l'autre sens ... Maintenant.
LoC est l'une des pires mesures que vous pouvez utiliser.
Les mauvais développeurs peuvent potentiellement écrire plus de LoC par jour que les bons développeurs, mais produisent du code de détritus.
Selon la complexité du code, le portage peut être effectué par des processus d'automatisation qui entraîneraient de gros milliers de changements de LoC par jour, tandis que les sections plus difficiles où les constructions de langage sont extrêmement différentes sont portées au 100LoC par jour.
Envoyez-lui de lire la page Wikipedia sur SLOC . Si donne quelques exemples agréables et simples de la raison pour laquelle il s'agit d'une mesure si médiocre.
la source
La bonne réponse: non ...
Cet exécutif doit être informé que le SLOC n'est pas une mesure valide pour la progression de l'analyse
La réponse bâclée: n'importe quel nombre que vous pouvez composer.
Donnez-lui simplement un numéro, vous et votre équipe pouvez facilement le faire de toute façon. (En mettant sauf ligne, lignes vides, commentaires etc etc, juste pour permettre à ce gars de continuer à vivre dans son monde fantastique, et de hanter encore une autre équipe et de continuer le cycle renforcé de la misère qui fait une histoire au thedailywtf.
Pas sympa, mais faisable.
la source
À première vue, cette question semble absolument stupide, et tout le monde ici n'a répondu qu'à la stupide partie C # LoC. Mais il y a une nuance importante - c'est une question sur les performances de portage . La bonne façon de poser cette question est de demander combien de lignes de code du projet source (celui qui est porté) un développeur peut gérer dans une unité de temps donnée. C'est une question parfaitement justifiée, car le nombre total de lignes de code est connu, et c'est exactement la quantité de travail à faire. Et la bonne façon de répondre à cette question est de collecter un peu de données historiques - travaillez, disons, une semaine et mesurez les performances de chacun des développeurs.
la source
Je n'ai qu'une chose à dire:
-- Bill Gates
Après cela, vous pouvez affirmer que Bill Gates ne savait pas comment réussir un logiciel;)
Remarque: SLOC est une très bonne mesure de la complexité de la base de code!
la source
Proportionnelle au nombre de mots, en fait.
Vous voyez mon point?
la source
Je pourrais avoir une position légèrement différente à ce sujet, mais je pense que je pourrais comprendre pourquoi l'exécutif recherchait cette information s'il fait actuellement la planification de projet. Puisqu'il est difficile d'estimer la durée d'un projet, l'une des méthodes utilisées (voir: Estimation logicielle: démystifier l'art noir ) consiste à estimer la durée du projet en fonction du nombre de SLOC dans des projets similaires et maintenant les développeurs peuvent produire en moyenne. Dans la pratique, cela est censé être fait en utilisant des enregistrements historiques que le groupe a sous la main pour des projets similaires avec des développeurs identiques ou similaires.
Cependant, cela ne vaut rien que ces estimations sont destinées uniquement à la planification de projet de base et ne sont pas réellement destinées à définir le rythme des développeurs sur le projet car les choses changent d'un jour à l'autre. Ainsi, la plupart de ce que vous lisez sur l'utilisation des SLOC comme outil d'estimation est qu'ils sont bons à long terme si vous avez déjà un bon corpus de connaissances, mais moche pour une utilisation quotidienne.
la source
C'est généralement une mauvaise idée d'appeler votre patron un idiot, donc mes suggestions commencent par comprendre et discuter des mesures, plutôt que de les rejeter.
Certaines personnes qui ne sont pas réellement considérées comme des idiots ont utilisé des mesures basées sur des lignes de code. Fred Brooks, Barry Boehm, Capers Jones, Watts Humphries, Michael Fagan et Steve McConnell les ont tous utilisés. Vous les avez probablement utilisés même si juste pour dire à un collègue, ce module God est de 4000 lignes, il doit être divisé en classes plus petites.
Il existe des données spécifiques liées à cette question provenant d'une source que beaucoup d'entre nous respectent.
http://www.codinghorror.com/blog/2006/07/diseconomies-of-scale-and-lines-of-code.html
http://www.codinghorror.com/blog/2005/08/are-all-programming-languages-the-same.html
http://discuss.joelonsoftware.com/default.asp?joel.3.286106.22
Je soupçonne que la meilleure utilisation de la ligne de code par heure de programmation est de montrer que pendant la durée de vie du projet, cette valeur commencera assez haut, mais comme des défauts sont détectés et corrigés, de nouvelles lignes de code seront ajoutées pour résoudre les problèmes qui ne faisaient pas partie des estimations originales, et des lignes de code supprimées pour éliminer la duplication et améliorer l'efficacité montreront que LOC / h indique autre chose que la productivité.
Quelle que soit l'issue du débat sur la productivité des programmeurs dans les lignes de code, vous constaterez que vous avez besoin de plus de main-d'œuvre que vous ne pouvez vous le permettre et que le système ne sera jamais terminé à temps. Vos vrais outils ne sont pas des métriques. Ils utilisent une méthodologie supérieure, les meilleurs développeurs que vous pouvez embaucher ou former, et le contrôle de la portée et des risques (probablement avec des méthodes Agiles).
la source
The take away here is that methodical developers will probably have quick turn around, will write compact code, and have low rework.
Être en désaccord. Il s'agit soit d'une reformulation faible, soit d'un délai d'exécution rapide. D'accord, la troisième option est épuisée et quitte la carrière de développeur.Donnez-lui une meilleure métrique avec laquelle travailler
Au lieu de LOC , expliquez qu'il s'agit de la pire mesure à utiliser. Donnez-lui alors une alternative:
Nombre de fonctions / caractéristiques par caractéristique / demande de fonction -> NOFF / RFF
Vous devrez peut-être ajouter une pondération / normalisation en plus de NOFF / RFF, pour répondre aux quantités de demandes par semaine.
:) clairement ce qui précède est composé, mais tout est meilleur que SLOC ...
la source
Je peux vous dire qu'une charge d'entrepreneurs pour un grand projet a écrit 15 000 LOC (chacun) en un an. C'est une réponse incroyablement grossière, mais elle nous a été utile car nous avons 400 000 LoC C ++ existants et nous pourrions comprendre que la conversion de tout cela en C # nous prendrait environ 26 années-homme pour terminer. Donner ou prendre.
Alors maintenant, nous connaissons l'ordre de grandeur approximatif, nous pouvons mieux planifier pour cela - obtenir 20 devs et estimer le travail d'un an pour eux serait à peu près correct. Avant de compter, nous n'avions aucune idée du temps qu'il faudrait pour migrer.
Donc, mon conseil pour vous est de vérifier tout le code que vous avez écrit dans un laps de temps spécifique (j'ai eu la chance d'avoir un nouveau projet avec lequel travailler), puis d'exécuter l'un des nombreux outils de mesure de code dessus. Divisez le nombre par le temps et vous pouvez lui donner une réponse précise - combien de LOC vous écrivez réellement par jour. Pour nous, c'est sorti à 90 LOC par jour! Je suppose que nous avons eu beaucoup de réunions et de documentation sur ce projet, mais je suppose que nous aurons également beaucoup de réunions et de documentation sur le prochain :)
la source
Cela semble correct.
/programming/966800/mythical-man-month-10-lines-per-developer-day-how-close-on-large-projects
Si vous prenez en compte le débogage, la documentation, la planification, etc. Cela représente en moyenne environ 10 lignes de code par jour. En fait, je noterais 10 lignes par jour sur le côté supérieur (c'est-à-dire un développeur très productif).
Même si vous pouvez produire quelques centaines de lignes en une seule journée (ce n'est pas durable). Ce ne sera pas du code de qualité tant que vous n'aurez pas ajouté tous les tests unitaires de la documentation et bien sûr débogué le code après que votre test unitaire ait montré les erreurs. Après tout cela, vous êtes de retour à 10.
la source
Je suppose qu'un développeur travaillant avec un langage comme C # devrait être capable d'écrire / générer environ 10 000 LoC / jour. Je suppose que je pourrais faire ça. Je ne le ferais jamais.
Ce que vous voulez d'un développeur, c'est de faire son travail en 10 LoC / jour. Moins de code, c'est toujours mieux. Il m'arrive souvent de commencer à produire une grande quantité de code, puis à couper jusqu'à ce que j'atteigne le maximum de simplicité, donc j'ai effectivement des jours avec des LoC négatifs.
Dans un sens, le codage est comme la poésie. La question n'est pas de savoir combien de lignes un poète peut écrire, mais combien il peut transmettre dans les 14 lignes d'un sonnet.
la source
Laissez votre manager s'en occuper ou commencez la recherche d'emploi.
En toute sincérité, vous pourriez passer du temps ce qui peut finir par être une tentative désespérée d'expliquer à l'exécutif les méthodes appropriées et inappropriées pour mesurer les progrès d'un projet vers l'achèvement. En réalité, à quoi servent les ingénieurs et les chefs de projet.
En revanche, les circonstances sont telles que le cadre en question EST votre ingénieur et / ou chef de projet. Vous avez des problèmes beaucoup plus importants et plus fondamentaux à traiter, même s'ils ne se sont pas encore révélés. Dans ce cas, un problème comme celui-ci peut servir de «coup de semonce» pour de plus gros problèmes à venir.
la source
Les autres réponses sont correctes, c'est une question stupide et la réponse ne signifie pas une fichue chose. C'est vrai, mais je sais combien de lignes de code j'ai produites en un mois environ.
C'est environ 3000 lignes de code C # sans XML-doc. J'implémentais de nouvelles fonctionnalités et je me suis retrouvé avec ce montant en un mois ou un mois et une semaine. C'est tout ce qui s'est retrouvé dans le contrôle de code source, beaucoup de code a été écrit puis refactorisé ou supprimé.
Je suis un développeur C # et j'essaie d'être bon dans ce domaine, mais je ne peux pas vous dire à quel point je suis objectivement bon. J'ai essayé d'écrire du bon code et j'ai mis beaucoup d'efforts pour le rendre facile à maintenir. Je ne mets des commentaires qu'une ou deux fois dans ce code.
Je ne sais pas si c'est trop ou trop peu de lignes de code et je dois dire que je m'en fiche vraiment. C'est un morceau de données sans signification et il ne peut en aucun cas être utilisé pour l'extrapolation. Mais je connais ces données, j'ai donc décidé de les partager.
la source
Eh bien, je suis un peu en retard à cette fête, comme d'habitude, mais c'est en fait intéressant. Au départ, je pensais comme la plupart que la question de l'exécutif était stupide. Cependant, j'ai lu la réponse de SK-logic et j'ai réalisé que c'était une question sensée posée de manière absurde. Ou, autrement dit, il y a un problème valable derrière la question.
Les gestionnaires doivent souvent essayer de déterminer la faisabilité, le financement, la dotation en personnel, etc. pour un projet. C'est un problème sensible. Pour un port de Straightford, une estimation basée sur des lignes de code de port divisées par la moyenne estimée des lignes de code par développeur et par jour est séduisante de simplicité, mais vouée à l'échec pour toutes les raisons données sur cette page.
Une approche plus sensée serait: -
Ce sont les étapes nues, bien sûr, il existe de nombreuses autres activités autour de cela qui sont utiles, comme étudier les outils de portage et les cadres enfichables, créer des prototypes, déterminer ce qui doit vraiment être porté, réutiliser les outils et l'infrastructure de test, etc.
la source