6

Ich bin für reale Zahlen und Erfahrungen suchen, bitte nehmen Sie diese auch nicht subjektiv:Berechnung, wie viel Zeit Sie durch Abschätzen der Code speichern können Sie in einem Jahr schreiben

Während für etwas anderes suchen, ich happened on an interesting statement, die teilweise wie folgt lautet:

[...] der nationale Durchschnitt 9.000 Codezeilen pro Jahr pro Person [...]

. 210

Ich schreibe viel Code, aber nicht Vollzeit. Wenn ich auf meine Projekte des vergangenen Jahres zurückblicke und eine (sehr) grobe Zählung durchführe (nur Codezeilen, keine Kommentare oder weiße Linien), komme ich für ein Jahr auf etwa 19.000, die es zu einem Projekt machen. Wenn ich Teile davon automatisieren kann, kann ich den Gewinn in Zeit und Geld abziehen.

Für die Schätzung der Zeiteinsparung für größere Projekte brauche ich Durchschnittswerte. Wie viele Codezeilen schreibt der Mensch in einem Jahr durchschnittlich in C# (oder einer anderen Sprache der Wahl)? Betrachten Sie Ihre eigene Situation und würden Sie denken, dass Ihr handschriftlicher Code (teilweise) automatisiert werden könnte und mit welchem ​​Gewinn?

+9

10 Zeilen der Assembly ist nicht dasselbe wie 10 Zeilen von C ist nicht dasselbe wie 10 Zeilen von Ruby. –

+0

Nur eine kleine Bemerkung: Wusste jemand, dass das OS/2 vs Windows-Debakel (IBM vs Microsoft Breakup) teilweise von IBM Produktivität durch Codezeilen gemessen, die Microsoft-Programmierer frustriert? http://en.wikipedia.org/wiki/OS/2#Breakup – Abel

+1

Obligatorisch xkcd: [1] (https://xkcd.com/1205/) [2] (https://xkcd.com/1319/) [3] (https://xkcd.com/1445/). – user4157124

Antwort

3

Erstens korrelieren geschriebene Zeilen nicht gut mit der tatsächlichen Produktivität. Meiner Meinung nach, wenn Sie die Produktivität messen und/oder schätzen wollen, sind Funktionspunkte eine effektivere Messung. Zweitens, wenn eine Metrik über einen weiten Bereich variiert, bedeutet der Durchschnitt im Allgemeinen sehr wenig. In einem Fall wie diesem bedeutet ein geometrisches Mittel im Allgemeinen mehr als ein arithmetisches Mittel, aber ohne (zumindest) etwas über die Varianz/Standardabweichung, es bedeutet immer noch nicht viel.

Ich würde auch bemerken, dass es einige ziemlich ausgeklügelte Modelle gibt, die eine substantielle Forschung durchlaufen haben und sogar an realen Projekten gemessen wurden, um zumindest eine Vorstellung zu bekommen, dass ihre Ergebnisse mit der Realität korrelieren.Zum Beispiel wird das COCOMO II Modell in der Regel viel bessere Ergebnisse als nur Zeilen Code pro Zeiteinheit zu produzieren. Es gibt mindestens eine free online implementation (Edit: Betrachte es, dies erlaubt jetzt entweder LoC oder Funktionspunktbasierte Modellierung). Es gibt auch Werkzeuge wie SoftStar und Function Point Modeler), die ein COCOMO-ähnliches Modell mit Funktionspunkten kombinieren, um (zumindest für mich) ziemlich solide Ergebnisse zu erhalten.

+0

Sehr interessant und gut formuliert. Vielen Dank.Ich mag besonders den Zeiger auf Funktionspunkte, den ich brauchte, als ich ein riesiges Projekt der niederländischen Regierung (Teil eines) Projekts, bei dem alles in FP gemessen wurde (und es funktionierte irgendwie: wenn man einen Faktor 2.4 dazu addierte) das ist eine lange Geschichte ... ;-) – Abel

+0

@Abel: Ein Faktor von 2,4 ist eigentlich ein bisschen besser, als die meisten Methoden hoffen. Wenn Sie versuchen, sich auf Codezeilen zu stützen, werden Sie im Allgemeinen Glück haben, viel näher als ein Faktor 5 zu kommen, und ein Faktor von 10 ist nicht so selten. –

+0

Akzeptieren Sie Ihre Antwort, da es die einzige ist, die sich wirklich damit beschäftigt, Codezeilen als Maß für die Projektplanung oder die Verbesserung der Gewinnauswertung zu verwenden. Ich verstehe, dass die Praxis nicht unbedingt gut ist und sogar böse sein kann. In Situationen, in denen man es benutzen muss oder wo bessere Methoden noch erfunden werden müssen, ist es ein großer Vorteil und ein notwendiges Übel, seine Mängel zu kennen. – Abel

5

18000 würde durchschnittlich etwa 36 Zeilen Code pro Tag durchschnittlich.

Mit nur 36 Zeilen Code pro Tag, was ist das Problem? Das Problem besteht darin, den Code zu debuggen und neu zu schreiben.

NICHTS, was Sie tun können, um die Programmierung zu automatisieren, wird Sie beschleunigen - in der Tat sollte alles, was Sie automatisieren können, wahrscheinlich nicht codiert werden, denn wenn Sie die Eingabe eines Musters in Ihrem Code automatisieren, sollte es ausgeklammert werden.

Wo Sie Zeit sparen können, ist vorsichtiger sein, wie Sie programmieren. Machen Sie Ihr Projekt ein bisschen schneller durch QS - Code in einer expliziteren, typsicheren Sprache und Code klarer.

Außerdem werden Ihre Codedaten so weit wie möglich optimiert und vollständig berücksichtigt, obwohl dies die von Ihnen gelieferte LOC reduziert. Dadurch wird das Leben für jeden einfacher und das Projekt schneller.

Automatisieren Sie nicht die Codeeingabe - wenn Sie können, machen Sie es falsch!

Eine andere Möglichkeit, darüber nachzudenken - jede von Ihnen erstellte Codezeile muss debuggt und gewartet werden. Warum versuchst du, Wege zu finden, um jedem MEHR Arbeit zu geben, wenn du einfach nur vollständig faktorisierten Code erstellen kannst (Die Eingabe von vollständig faktorisiertem Code kann nicht automatisiert werden - so ziemlich per definitionem).

+0

(Ich habe nur ein paar Tage/Monat programmiert, der Tagesdurchschnitt ist anders) Ich denke, Sie haben sehr interessante Punkte gegen die Automatisierung. Die Verwendung von Data-Mapping-Software zur automatischen Generierung spart mir das Schreiben von POCOs und der generischen Klassen (S # arp-Architektur). Die Implementierung von INotifyPropertyChanged für jede Eigenschaft könnte leicht automatisiert werden. Andrew Hunt im Pragmatischen Programmierer? Sagt "automatisieren, wo Sie können". Gute automatische Code-Generierung sollte Zeit sparen, sollte aber selbst getestet werden. – Abel

+0

Btw, ich war gestern anscheinend ein bisschen müde, oder du: 19000/36 = 527 Tage? ;-) – Abel

+0

Ja, ich denke, die Mathematik scheint wirklich aus. Wenn ich das LOC in einem Versandprodukt durch die Mannstunden teile, die ich dafür ausgegeben habe, neige ich dazu, etwas im Bereich von 1-4 Zeilen pro Tag zu bekommen. Auf jeden Fall sollte das Entfernen von Standardbausteinen, anstatt es zu automatisieren, das Hauptziel sein - es ist der Unterschied zwischen Schaden an Ihrem Projekt und dessen Hilfe. Ich habe fast immer einen Weg gefunden, es loszuwerden - zum Beispiel mag ich Access-Objekte wirklich nicht und ersetze sie durch Datenstrukturen oder etwas Ähnliches. Ich suche ständig nach Praktiken, die es mir ermöglichen, einen faktorisierten Code zu schreiben. –

3

Dies ist die Art der Metrik, über die in der Mythical Man Month gesprochen wird. Die Schätzung von Projekten in Man-Days/Months/Years oder das Zählen von Codezeilen als Produktivitätsmerkmal garantiert Ungenauigkeit bei der Berichterstellung.

+0

Ah, mein Lieblingsbuch! Ja, ich liebe MMM immer noch. Jeder Bericht, nicht nur dafür, hat einen Ungenauigkeitsfaktor. Den Faktor zu kennen hilft, den Bericht gut zu interpretieren. – Abel

-2

Das ist eigentlich eine BS-Frage. Selbst SLOC-Anhänger werden dir gestehen, dass SLOC-Produktivitätsschätzungen nur in ähnlichen Umgebungen gültig sind. Es variiert nicht nur nach Programmiersprache, sondern auch nach Branche, Entwicklungsumgebung, Anwendung usw.

Insofern SLOC-Zahlen nichts wert sind, ist es nur innerhalb desselben Entwicklungsteams, das an ähnlichen Projekten arbeitet.

+2

Ich würde nicht einverstanden sein, eine Frage BS die Minute zu geben, die Antwort ist "tue es nicht weil ...". Guter Rat ist oft willkommen. Als ich zum ersten Mal meinen Reifen reparierte, bekam mein Vater viele BS-Fragen von mir. Gern beantwortete er sie und ich konnte es lernen. Ich wusste nichts über SLOC, ich habe etwas gelernt. – Abel

+1

Was noch schlimmer ist, Produktivität hängt nicht unbedingt direkt mit LOC zusammen. Jeder hat eine Fünfzig-Zeilen-Funktion gesehen, die jemand geschrieben hat, weil er die einfache Fünf-Zeilen-Lösung nicht sehen konnte. –

1

Ich glaube, die Rate für LOC hängt stark von der technical debt im Projekt.

Ich habe ein Projekt (SQL), das 27KLOC ist (plus 4K mehr für die Unterstützung). Bei der Arbeit an diesem Code über 7 Monate habe ich 3K net new LOC zum Projekt hinzugefügt, mit ungefähr 14KLOC, die nur für Wegwerf-Tests geschrieben wurden (Tests zur Isolierung von Anomalien, nicht Unit-Tests).

Je nachdem, wie Sie messen, schreibe ich 29KLOC/Jahr ((3K + 14K)/7Monate * 12Monate) aber produzieren nur 5KLOC/Jahr (3K/7Monate * 12Monate).

Betrachtet man den Code (27KLOC) als Schulden, haben wir Code, der 7% (2KLOC) im Wegwerfcode monatlich generiert, oder 88% (24KLOC) pro Jahr.

Angenommen, ich kann weiterhin ein ganzes 29KLOC/Jahr produzieren, und unter der Annahme, dass die Kosten für die Pflege des Codes bei 88%/Jahr bleiben, ist mein persönliches Projektlimit 33.000 Codezeilen. Darüber hinaus werde ich meine ganze Zeit damit verbringen, Zinsen für meine technischen Schulden zu zahlen, Wegwerf-Codes zu schreiben und Netto-Null-LOC zu produzieren.

Glück, dass die letzte 3KLOC ein Refactoring war, was meinen Zinssatz senken sollte.

+0

+1 interessante Analyse, fügt etwas zur Diskussion und meine Gedanken zu diesem Thema, danke! – Abel