Magische Grenze von 10 Lines of Code im Linux Kernel


https://www.heise.de/ct/artikel/Die-Neuerungen-von-Linux-4-14-3831941.html
Das Buch „The Mythical Man-Month“ genießt unter Programmierern Kultstatus. Es enthält viel wares und zum ersten Mal wurde dort die Größe „Lines of Code“ diskutiert. Das Fazit lautete damals, dass ein durchschnittlicher Programmierer rund 10 Lines of Code am Tag schreibt. Bis heute wird diese Zahl von vielen als zu niedrig angesehen und behauptet, man könnte gut 500 Codezeilen am Tag schreiben, insbesondere wenn automatische Codegeneratoren verwendet werden. In einem früheren Blogpost habe ich schon die realen Werte von Microsoft Windows untersucht wo im Schnitt die Programmierer rund 6 Zeilen Code am Tag erstellt haben. Aber auch das als effizient geltende Linux Projekt schafft es nicht oberhalb von 10 Lines of Code pro Tag zu kommen. Die aktuellen Zahlen gibt es auf https://www.developer-tech.com/news/2017/jul/05/linux-kernel-412-developers-added-795-lines-code-hour/ Danach kommen pro Tag 19093 Codezeilen hinzu, die von 1821 Developern erstellt wurden. Macht nach Adam Riese einen erstaunlich niedrigen Wert von 10,48 Lines of Code pro Kopf und Tag. Ungeachtet dessen erklimmt der Linux Kernel in jeder Version neue Hürden und kaum jemand wird behaupten, dass dort nicht effizient gearbeitet wird, oder Greg Kroah-Hartman ein Anfänger wäre, der noch nicht richtig in C programmieren kann.

Ich glaube die Verwunderung über 10 LoC/Day kommt daher, dass über Softwareentwicklung meist Leute diskutieren die an den Universitäten arbeiten und selber noch nie Software entwickelt haben. Das eingangs zitierte Buch wurde nicht von einem Akademiker geschrieben sondern von einem IBM Angestellten. Die Vorstellung man könnte am Tag 500 Lines of Code erzeugen und womöglich noch Metaprogramming mit Haskel einsetzen ist wohl eine Vorstellung die so nur an den Universitäten gelehrt wird. Man teilt sie, wenn man sich einer Gruppe zugehörig fühlt welche für sich die Deutungshoheit reklamiert und eine sehr verzerrte Sicht auf die Wirklichkeit besitzt.

Meine Prognose lautet, dass man die 10 Lines of Code natürlich wird steigern können. Aber nur sehr mäßig. Vielleicht wird sie in 5 Jahren auf 11 Lines of Code pro Tag angestiegen sein, weil besser klar ist, was ein Kernel eigentlich ist und wie man richtigen C-Code schreibt. Der eigentliche Anstieg der Produktivität basiert jedoch auf einer anderen Größe: Zahl der Entwickler. Je mehr Coder man für den Linux Kernel abstellt und die in das Projekt integriert, desto schneller steigt die absolute Zahl an Codezeilen an. Noch vor ein paar Jahren waren es nur 1000 Developer die regelmäßig commits beigesteuert haben, heute weißt die Statistik einen Wert von 1800 aus.

Der Name Greg Kroah-Hartman wurde schon erwähnt. In einem Vortrag hat er einmal gezeigt wie genau sein täglicher Arbeitsablauf aussieht. Er hat damals auf der Commandline mal auf die Schnelle neue Commits in den Master-Tree übertragen und nebenbei noch am Sourcecode herumeditiert. Die Zuschauer waren beindruckt, weil das extrem Profi-mäßig daherkam. Was in dem Vortrag leider nicht erwähnt wurde ist, dass auch die Produktität von Kroah-Hartman nicht oberhalb von 10 Lines of Code am Tag liegt. Es macht eben einen Unterschied ob man Patches die jemand anderes geschrieben hat und die bereits jemand als korrekt bezeichnet hat, in das git repository einpflegt oder ob man richtige Software from scratch schreibt. Hätte Hartman damals in seinem Vortrag Kernel Programmierung unter Live-Bedingungen gezeigt, dann wäre über die Zeitdauer des gesammten Vortrags genau eine neue Zeile hinzugekommen. 10 Stunden Arbeit täglich geteilt durch 10 Codezeilen macht 1 Zeile pro Stunde. Rein statistisch gesehen bedeutet es, dass man pro Minute ein Byte anfügt. Also sehr gemächlich die Tastatur bedient. Was Hartman wohl eher demonstriert hat war, was passiert wenn man die Produktivität von 1800 Developern zu einem ganzen kombiniert. Es also mittels git schafft, dass man am Tag nicht 10 Zeilen Code neu dazufügt sondern 10×1800=18000 Zeilen. Dort kann man tatsächlich live Zuschauen wir das Projekt immer größer wird. Die Kernel Developer bilden einen virtuellen Superprogrammierer, der ziemlich schnell auf der Tastatur ist und perfekten C-Code schreibt. Jeden Tag erweitert er den Kernel massiv.

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s