Der SLOC-SCHOCK
Gerade schaute ich mich ein wenig auf koders.com um. Wer die Seite kennt, weiß bestimmt, dass zu den dort aufgelisteten Projekten immer eine kleine Statistik angezeigt wird, die u.A. über den Anteil der im jeweiligen Projekt verwendeten Programmiersprachen, geschätzte Entwicklungskosten etc. informiert. Und da blieb mein Auge mehrfach hängen, als ich (mal wieder) feststellte, welche Kosten da auch für kleine Projekte (ein paar wenige Tausend Zeilen Code) aufgeführt werden. Da packte mich die Neugier: ich installierte mir David A. Wheeler's Programm sloccount. Dieses Programm leistet genau oben Beschriebenes, sprich es zählt die Physical Source Lines of Code (SLOC), also Programmquelltext minus Kommentare minus trivialem wie HTML, SQL, CSS usw., listet eine kleine Statistik über die verwendeten Programmiersprachen auf und wagt einige Schätzungen über den Entwicklungsaufwand anzustellen.
Für meinen bisher im Rahmen der Diplomarbeit entstandenen Code der wäre das also:
SLOC Directory SLOC-by-Language (Sorted)
2020 app ruby=2020
1319 test ruby=1319
603 db ruby=603
61 config ruby=61
4 public ruby=4
0 components (none)
0 doc (none)
0 lib (none)
0 log (none)
0 script (none)
0 templates (none)
0 tmp (none)
0 top_dir (none)
0 vendor (none)
Totals grouped by language (dominant language first):
ruby: 4007 (100.00%)
Total Physical Source Lines of Code (SLOC) = 4,007
Development Effort Estimate, Person-Years (Person-Months) = 0.86 (10.31)
(Basic COCOMO model, Person-Months = 2.4 * (KSLOC**1.05))
Schedule Estimate, Years (Months) = 0.51 (6.07)
(Basic COCOMO model, Months = 2.5 * (person-months**0.38))
Estimated Average Number of Developers (Effort/Schedule) = 1.70
Total Estimated Cost to Develop = $ 20,616
(average salary = $10,000/year, overhead = 2.40).
WHOW! sag ich da nur! Bei den Zahlen kriegt man ja locker einen SLOCkauf ;-) -- also mal abgesehen davon, dass die Entwicklungszeit schonmal um bald eine Größenodnung höher angesetzt wird als was ich bisher aufgewendet habe, sind die Entwicklungskosten (wie ich mal mit einem Jahresgehalt von 10'000$ bzw. €) angesetzt habe) von rund 20'000 Währungseinheiten schon beachtlich. Wer bezahlt das am Ende?
Aber mal abgesehen vom Preis: Ich arbeite seit nunmehr rund 1.5 Monaten an dem Programm. Bei meiner tatsächlichen täglichen Arbeitszeit kommt man vielleicht auf 2.5-3 Monate. Das würde also entweder bedeuten, dass ich ein überaus kongenialer Superprogrammierer wäre (oh yeah...!), oder -- vielleicht geringfügig realistischer -- mir das RAILS-Framework bislang rund 7-8 Monate Arbeit abgenommen hat.
Wenn man sich obige Zahlen genauer anschaut, fällt auf, dass für das gesamte app/views-Verzeichnis nicht ein SLOC gezählt wird -- OK, es handelt sich dabei hauptsächlich um HTML, aber hey -- das ist längst nicht alles a) autogeneriert und b) mit einem dubiosen WYSIWYWETG-Programm erstellt! ein [cat find app/views/
| wc -l ] ergab, dass es sich dabei um immerhin 6607 Zeilen handelt, wovon ich mal behaupte, mindestens 1800-2000 Zeilen selber geschrieben (OK, und Copy&Pasted :-)) zu haben. Da fällt eigentlich auch nicht mehr so sehr ins Gewicht, dass von den 1300 Zeilen unter test/ vielleicht nur 350 Zeilen von mir selbst stammen.
Interessehalber hab ich auch mal ein mittlerweile verabschiedetes Projekt von vor 1-3 Jahren (eine Vereins-Internetplattform in PHP) in sloccount gefüttert. Unter dem Strich kamen da fast runde 24'000 Zeilen Code, 67 Monate Entwicklungsaufwand und ca. 107'000 € Entwicklungskosten bei heraus (mit Jahresgehalt für Studi = schlappe 8'000 EUR gerechnet) -- Kann man sowas eigentlich als Spende von den Steuern absetzen? ;-) (interessanterweise wurde die Plattform innerhalb von rund 3.5 Jahren entwickelt -- 67 Monate entsprechen aber mehr als 5 Jahren ... also doch Superkräfte? :-D)
Was sagen hier die erfahrenen Entwickler von InnoQ zu? Wie schätzt ihr euren Aufwand ab? Sind diese Zahlen reine Fantasie? Der eine oder andere wie auch immer geartete Kommentar würde mich da schon interessieren.