Eine Führungskraft an meinem Arbeitsplatz stellte mir und meiner Gruppe von Entwicklern die Frage:
Wie viele Codezeilen kann ein C # -Entwickler pro Monat produzieren?
Ein altes System sollte nach C # portiert werden und er möchte diese Maßnahme im Rahmen der Projektplanung.
Aus einer (anscheinend glaubwürdigen) Quelle hatte er die Antwort "10 SLOC / Monat ", aber er war damit nicht zufrieden.
Die Gruppe war sich einig, dass dies fast unmöglich zu spezifizieren ist, da es von einer langen Liste von Umständen abhängen würde. Aber wir könnten sagen, dass der Mann nicht gehen würde (oder sehr enttäuscht von uns wäre), wenn wir keine Antwort finden würden, die besser zu ihm passt. Also ging er mit der um ein Vielfaches besseren Antwort von "10 SLOC / Tag ".
Kann diese Frage beantwortet werden? (nebenbei oder sogar mit etwas Analyse)
Antworten:
Fragen Sie Ihre Führungskraft, wie viele Vertragsseiten sein Anwalt pro Monat schreiben kann. Dann wird er (hoffentlich) feststellen, dass es einen großen Unterschied zwischen dem Schreiben eines einseitigen Vertrags und dem Schreiben eines 300-seitigen Vertrags ohne Lücken und Widersprüche gibt. Oder zwischen dem Schreiben eines neuen Vertrags und dem Ändern eines bestehenden Vertrags. Oder zwischen dem Schreiben eines neuen Vertrags und dem Übersetzen in eine andere Sprache. Oder zu einem anderen Rechtssystem. Vielleicht stimmt er sogar zu, dass "Vertragsseiten pro Zeiteinheit" kein sehr gutes Maß für die Produktivität eines Anwalts sind.
Aber dir zu geben eine Antwort auf Ihre eigentliche Frage zu geben: Meiner Erfahrung nach sind für ein neues Projekt ein paar hundert SLOC pro Tag und Entwickler keine Seltenheit. Sobald aber die ersten Bugs auftauchen, wird diese Zahl stark sinken.
quelle
Wenn sie gut sind, weniger als Null.
quelle
Führen Sie die andere Art und Weise ... Jetzt.
LoC ist eine der schlimmsten Metriken können Sie verwenden.
Schlechte Entwickler können möglicherweise mehr LoC pro Tag schreiben als gute Entwickler, aber Müllcode rausschmeißen.
Je nach Komplexität des Codes, Portierung kann durch Automatisierungsprozesse durchgeführt werden, die sich ergeben würden in großen tausend + LoC einen Tag ändert, während schwieriger Abschnitte, in denen die Sprachkonstrukte wild unterschiedlich sind Code am 100LoC täglich portiert werden.
Schick er die Wikipedia - Seite über lesen SLOC . Gibt ein paar nette und einfache Beispiele, warum es so eine schlechte Metrik ist.
quelle
Die richtige Antwort: Nein ...
Diese Führungskraft sollte darauf hingewiesen werden, dass SLOC keine gültigen Messgrößen für den Analysefortschritt sind
Die Sloppy Antwort: Jede Anzahl Sie bilden können.
Gib ihm eine gewisse Zahl, Sie und Ihr Team leicht sowieso, dass die Zahl bis zu machen. (Indem es sei denn, Linie, Leerzeilen, Kommentare etc etc, nur dieser Typ ermöglichen, weiterhin in seiner Phantasiewelt zu leben, und spukt noch ein anderes Team und weiterhin das Elend Zyklus verstärkt, die eine Geschichte zu thedailywtf macht.
Nicht schön, aber machbar.
quelle
Auf den ersten Blick sieht diese Frage absolut dumm aus, und jeder hier hat nur auf den dummen C # LoC-Teil geantwortet. Aber es ist eine wichtige Nuance - es ist eine Frage über eine Portierung Leistung. Der richtige Weg, diese Frage zu stellen, besteht darin, zu fragen, wie viele Codezeilen des Quellprojekts (diejenige, die portiert wird) ein Entwickler innerhalb einer bestimmten Zeiteinheit verarbeiten kann. Dies ist eine durchaus begründete Frage, da die Gesamtzahl der Codezeilen bekannt ist und genau die Menge der zu erledigenden Arbeiten. Der richtige Weg, um diese Frage zu beantworten, besteht darin, ein paar historische Daten zu sammeln - beispielsweise eine Woche lang zu arbeiten und die Leistung jedes Entwicklers zu messen.
quelle
Ich habe nur eins zu sagen:
-- Bill Gates
Danach können Sie argumentieren, dass Bill Gates nicht wusste, wie man erfolgreiche Software macht;)
Hinweis: SLOC ist jedoch ein sehr gutes Maß für die Komplexität der Codebasis!
quelle
Proportional zur Anzahl der Wörter.
Sie sehen, mein Punkt?
quelle
Ich habe vielleicht eine etwas andere Einstellung dazu, aber ich denke, ich kann verstehen, warum die Führungskraft nach diesen Informationen gesucht hat, wenn sie gerade eine Projektplanung durchführt. Da es schwer abzuschätzen , wie lange ein Projekt dauern wird, eine der Methoden , die verwendet wird (siehe: Software Estimation: Entmystifizierung der schwarze Kunst ) darin, anhand der Anzahl der Projekte abzuschätzen, wie lange es dauern wird SLOCs in ähnlichen Projekten und können nun die Entwickler produzieren im Durchschnitt. In der Praxis sollen hierfür historische Aufzeichnungen verwendet werden, die die Gruppe für ähnliche Projekte mit denselben oder ähnlichen Entwicklern zur Verfügung hat.
Es ist jedoch nichts wert, dass diese Schätzungen nur für die grundlegende Projektplanung gedacht sind und nicht dazu gedacht sind, das Tempo der Entwickler im Projekt zu bestimmen, da sich die Dinge von Tag zu Tag ändern. Das meiste, was Sie über die Verwendung von SLOCs als Schätzwerkzeug lesen, ist, dass sie auf lange Sicht gut sind, wenn Sie bereits über gute Kenntnisse verfügen, aber für den täglichen Gebrauch mies sind.
quelle
Es ist im Allgemeinen eine schlechte Idee, Ihren Chef als Idioten zu bezeichnen. Daher beginnen meine Vorschläge damit, Metriken zu verstehen und zu diskutieren, anstatt sie abzulehnen.
Einige Menschen, die nicht wirklich Idioten betrachtet haben gebrauchte Metriken, die auf Codezeilen beruhten. Fred Brooks, Barry Boehm, Capers Jones, Watts Humphries, Michael Fagan und Steve McConnell alle ihnen verwendet. Wahrscheinlich haben Sie sie auch dann verwendet, wenn nur an einen Kollegen zu sagen, das Gott-Modul ist 4000 Zeilen, muss es in kleinere Klassen, gebrochen werden.
Es gibt spezifische Daten zu dieser Frage aus einer Quelle, die viele von uns respektieren.
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
Ich vermute, dass die beste Verwendung der Codezeile pro Programmierstunde darin besteht, zu zeigen, dass dieser Wert über die gesamte Laufzeit des Projekts ziemlich hoch sein wird. Sobald jedoch Fehler gefunden und behoben werden, werden neue Codezeilen hinzugefügt, um Probleme zu lösen, die auftreten können waren nicht Teil der ursprünglichen Schätzungen, und Codezeilen, die entfernt wurden, um Duplikationen zu vermeiden und die Effizienz zu verbessern, zeigen, dass LOC / h andere Faktoren als die Produktivität angibt.
Unabhängig davon, wie die Debatte über die Produktivität der Programmierer in Codezeilen abwechselnd aus werden Sie feststellen, dass Sie mehr Menschen Macht brauchen, als Sie sich leisten können, und das System niemals rechtzeitig abgeschlossen werden. Sie echte Werkzeuge sind nicht Metriken. Sie basieren auf einer überlegenen Methodik, den besten Entwicklern, die Sie einstellen oder schulen können, und der Kontrolle von Umfang und Risiko (wahrscheinlich mit agilen Methoden).
quelle
The take away here is that methodical developers will probably have quick turn around, will write compact code, and have low rework.
Nicht zustimmen. Es ist entweder ein wenig umformuliert oder eine schnelle Abwicklung. Okay, die dritte Option ist Ausbrennen und Verlassen der Entwicklerkarriere.Geben Sie ihm eine bessere Metrik, mit zu arbeiten
Statt LOC , erklärt dies ist die schlechteste Metrik zu verwenden. Dann gib ihm eine Alternative:
Anzahl der Funktionen / Eigenschaften Pro Eigenschaft / Funktion Requests -> NOFF / RFF
Möglicherweise müssen Sie zusätzlich zu NOFF / RFF eine Gewichtung / Normalisierung hinzufügen, um die Anzahl der Anfragen pro Woche zu berücksichtigen.
:) klar das obige ist erfunden, aber irgendetwas ist besser als SLOC ...
quelle
Ich kann Ihnen sagen, dass eine Last von Auftragnehmern für ein großes Projekt schreibt 15000 LOC (jeweils) in einem Jahr. Das ist eine unglaublich grobe Antwort, aber es war für uns von Nutzen, da wir 400.000 bestehenden C ++ LoC haben und wir konnten herausfinden, dass sie alle zu C # Umwandlung nehmen würde uns etwa 26 Mann-Jahre in Anspruch nehmen. Geben oder nehmen.
So, jetzt wir die grobe Größenordnung kennen, können wir besser für sie planen - immer 20 Devs und einem Jahr Arbeit für sie schätzen alle ungefähr richtig sein würde. Vor dem Zählen, hatten wir keine Ahnung, wie lange es dauern würde zu migrieren nehmen.
Also mein Rat für Sie den gesamten Code zur Kasse Sie in einer bestimmten Zeit geschrieben habe (ich hatte das Glück , ein neues Projekt zu Arbeit mit haben), dann eine der vielen Code - Metrik - Tools darauf laufen. Teilen Sie die Zahl durch die Zeit , und man kann ihm eine genaue Antwort geben - wie viel LOC Sie tatsächlich schreiben pro Tag. Für uns, dass kamen pro Tag bei 90 LOC out! Ich denke , wir haben an diesem Projekt eine Menge von Sitzungen und Dokumentation haben, aber dann denke ich , dass wir viele Sitzungen und Unterlagen über die nächsten haben , würden :)
quelle
Sounds über richtig.
/programming/966800/mythical-man-month-10-lines-per-developer-day-how-close-on-large-projects
Wenn Sie das Debuggen, Dokumentieren, Planen usw. berücksichtigen, beträgt der Durchschnitt etwa 10 Codezeilen pro Tag. Eigentlich würde ich 10 Zeilen pro Tag hoch bewerten (dh einen sehr produktiven Entwickler).
Auch wenn Sie an einem Tag ein paar Hundert Zeilen produzieren können (dies ist nicht nachhaltig). Es kann kein Qualitätscode sein, bis Sie dann alle Gerätetests der Dokumentation hinzugefügt und natürlich den Code nach Ihrem Gerätetest debuggt haben, um die Fehler anzuzeigen. Nach alledem sind Sie wieder bei 10.
quelle
Ich vermute, ein Entwickler, der mit einer Sprache wie C # arbeitet, sollte in der Lage sein, ungefähr 10 KB LoCs / Tag zu schreiben / generieren. Ich schätze, das könnte ich machen. Ich würde nur nie.
Was Sie von einem Entwickler erwarten, ist, dass er seine Arbeit in 10 LoCs / Tag erledigt. Weniger Code ist immer besser. Ich oft mal beginnen einen Großteil der Code produzieren und dann Wegschneiden, bis ich den nackten maximal Einfachheit zu erreichen, so dass ich mit negativen LOCS haben tatsächlich Tagen.
Codierung ist in gewissem Sinne wie Poesie. Die Frage ist nicht, wie viele Zeilen ein Dichter schreiben kann, sondern wie viel er in den 14 Zeilen eines Sonetts ausdrücken kann.
quelle
Lassen Sie Ihren Manager damit umgehen oder beginnen Sie mit der Jobsuche.
In alle Ernst, könnten Sie tim es ausgeben, was die Exekutive kann am Ende der richtigen und falsche Methoden bei der Erläuterung eines Projektes Fortschritte in Richtung Abschluss der Messung ein aussichtsloses Unterfangen zu sein. In Wirklichkeit jedoch, wofür Ingenieure und Projektmanager sind.
In der anderen Seite sind die Umstände so , dass die Exekutive-in-Frage IST Ihr Engineering und / oder Projektmanager. Sie haben viel größere und grundlegendere Probleme zu lösen, auch wenn sie sich noch nicht ergeben haben. In diesem Fall kann ein solches Problem als "Warnschuss" für größere Probleme dienen.
quelle
Andere Antworten sind richtig, es ist eine dumme Frage und die Antwort bedeutet nicht einen Mucks. Es ist alles wahr, aber ich weiß zufällig, wie viele Codezeilen ich in ungefähr einem Monat erstellt habe.
Es geht um 3000 Zeilen C # -Code ohne XML-Dokument. Ich implementierte neue Funktionen und bekam diese Menge in einem Monat oder einem Monat und einer Woche. Es ist alles, was in der Quellcodeverwaltung gelandet ist, viel Code wurde geschrieben und dann überarbeitet oder gelöscht.
Ich bin ein C # -Entwickler und versuche, gut darin zu sein, aber ich kann Ihnen nicht sagen, wie objektiv gut ich bin. Ich habe versucht, guten Code zu schreiben und mir viel Mühe gegeben, um die Wartung zu vereinfachen. Ich habe nur ein- oder zweimal Kommentare in diesen Code eingefügt.
Ich weiß nicht, ob es sich um zu viele oder zu wenige Codezeilen handelt, und ich muss sagen, es ist mir eigentlich egal. Es handelt sich um bedeutungslose Daten, die in keiner Weise sicher für die Extrapolation verwendet werden können. Aber ich kenne diese Daten zufällig und habe beschlossen, sie zu teilen.
quelle
Nun, ich bin wie immer ein bisschen zu spät zu dieser Party, aber das ist tatsächlich eine interessante. Ich hatte anfangs den gleichen Gedanken wie die meisten, dass die Frage der Exekutive dumm ist. Ich habe jedoch die Antwort von SK-logic gelesen und festgestellt, dass es sich um eine sinnvolle, unsinnig gestellte Frage handelt. Oder anders ausgedrückt, hinter der Frage steckt ein berechtigtes Problem.
Manager müssen oft versuchen, Machbarkeit, Finanzierung, Personal usw. für ein Projekt zu bestimmen. Das ist ein vernünftiges Problem. Für einen Straightford-Port ist eine Schätzung basierend auf den Codezeilen des Ports geteilt durch die geschätzten durchschnittlichen Codezeilen pro Entwickler und Tag in der Einfachheit ansprechend, aber aus allen auf dieser Seite genannten Gründen zum Scheitern verurteilt.
Ein vernünftigerer Ansatz wäre:
Dies wären die einfachen Schritte, natürlich gibt es viele andere nützliche Aktivitäten, wie die Untersuchung von Portierungswerkzeugen und steckbaren Frameworks, die Erstellung von Prototypen, die Bestimmung der wirklich zu portierenden Komponenten, die Wiederverwendung von Testwerkzeugen und Infrastrukturen usw.
quelle