Zahlenspiele

Wir zählen einfach gern, und das, obwohl sehr viele in der Schule die Mathematik gehasst haben. Politiker zählen Wählerstimmen, Autofahrer die PS und die maximalen km/h ihres Fahrzeuges, und die Flensburger Verkehrssünderkartei zählt unsere Verkehrsverstöße. Viele Menschen zählen gerade jetzt Flüchtlinge und deren Straftaten, um sie mit dem zu vergleichen, was vorher war. Wir leben für die Statistik.

Die (Stimmge-)Wichtigkeit von Politikern, die Stärke des Fahrzeuges oder die Bösartigkeit eines Autofahrers, alles ist für die Zählenden wichtiger als alles andere, wobei die weiblichen Pendants ausdrücklich eingeschlossen sind, denn das ist sicher kein rein männliches Problem.

Auch in der Softwareentwicklung wird gezählt. Unittestabdeckung, zyklomatische Komplexität, Story Points, Velocity, und vieles mehr, nicht zuletzt die Bytes und ihre Abarten, wo immer man auf sie trifft. Wir nennen das allgemein eine „Metrik“. Wer die Links in diesem Absatz nachverfolgt und sich das alles mal durchliest, erhält einen kleinen Einblick zu der Thematik. Dann wird vielleicht auch klar, wieso dieses Thema nicht unbedingt einfach ist. Denn nicht jede als Zahl abbildbare Größe eignet sich gleichermaßen gut als Basis für einen Vergleich. Beachtet man das nicht, vergleicht man sprichwörtlich Äpfel mit Birnen.

Sinnhaftigkeit von Metriken

Bei manchen Programmen, die ich gesehen habe, hatte ich den Eindruck, dass der Originalautor nach der Anzahl seiner Codezeilen bezahlt worden ist. So oft, wie dort augenscheinlich Copy&Paste als Methode verwendet wurde, muss die Anzahl der Codezeilen und vielleicht deren Zuwachs über die Dauer der Entwicklung eine entscheidende Rolle gespielt haben. Doch stellt sich ernsthaft die Frage, ob die „lines of code“ (LOC) wirklich eine sinnvolle Metrik sind.

Ich habe zum Beispiel VBA-Programmcode nach folgendem Muster gesehen. (Bitte verzeiht, dass ich die eigentliche Aktion weglasse, sie ist nicht nur bedeutungslos für das Thema, sondern würde auch die Rechte des Autors verletzen.)

For i = 1 to 100
    ' Hier geschah irgend etwas
Next i

Was für sich genommen noch absolut sinnvoll und verständlich ist, wurde in der Zukunft leider ins Gegenteil verkehrt. Denn der Anwender erkannte zwar, dass dort einhundert mal etwas gemacht wird, aber ihm erschloss sich vermutlich nicht die genaue Syntax. Daher sah der Code für 300 Wiederholungen dann so aus:

For i = 1 to 100
    ' Hier geschah irgend etwas
Next i
 
For i = 1 to 100
    ' Hier geschah irgend etwas
Next i
 
For i = 1 to 100
    ' Hier geschah irgend etwas
Next i

Aus LOC=3 in diesem einfachen Beispiel wurde LOC=11, und das bei im wesentlichen gleichem Funktionsumfang. Bedenkt man, dass der hier als einzelne Kommentarzeile dargestellte Block im Original durchaus ca. 20 Zeilen groß war, wird die Übersichtlichkeit massiv reduziert.

Für einen Programmierer ist so etwas trivial. Ein Nichtprogrammierer wird diesen Code vermutlich folgendermaßen wahrnehmen:

For-Schleife aus der Sicht eines Nichtprogrammierers

Wenn aber jemand die Anzahl der Codezeilen als gute Metrik für die Leistungsfähigkeit des Programms (oder des Programmierers) ansehen würde, dann würde ein völlig falscher Schluss gezogen. Denn ein Softwareentwickler würde eine solche Code-Duplizierung selbstverständlich ablehnen und das Programm in seiner Wertigkeit deutlich herabstufen. Stellen wir uns nur vor, die Kernroutine müsse geändert werden. Dies müsste in obigem Beispiel genau dreimal identisch gemacht werden. Eine unsinnige Vervielfältigung von Arbeit, und fehlerträchtig noch dazu.

Dreisätze

Ein weiteres Zahlenspiel ermöglicht der im Mathematikunterricht ebenso verhasste Dreisatz. Die praktische Anwendung beim Einkaufen ist sicherlich die am meisten genannte Motivation: Die 25-g-Tüte Zimt kostet 1,79 €, die 1-kg-Dose 9,98 €. Welche ist billiger?

Demgegenüber steht der umgekehrte Dreisatz. Eine Badewanne wird durch einen Wasserhahn in 10 Minuten gefüllt werden. Wie lange dauert es, wenn man zwei Wasserhähne öffnet?

Und dann haben wir noch den „irrelevanten Dreisatz“, eine Aufgabenstellung also, bei der dessen Anwendung keinen Sinn macht. Ein Ei hart zu kochen dauert drei Minuten. Wie lange dauert es bei drei, fünf und zehn Eiern? Eine Frau braucht für die Schwangerschaft neun Monate, wie lange brauchen drei Frauen dazu?

Nicht mehr ganz so einfach ist es, wenn völlig unterschiedliche Aspekte für Metrik und Interpretation herangezogen werden: Redakteur Müller veröffentlicht 100 Artikel im Monat, Redakteur Meier nur einen. Wer schreibt die besseren Texte? Diese Frage ist so einfach nicht zu beantworten. Nach welchem Kriterium die Qualität eines Textes beurteilt wird, ist eine Frage der Zielvorstellung. Ist es die Anzahl der Worte, die Leserzahl, die Anzahl der Rechtschreibfehler oder die Anzahl Klicks auf die enthaltenen Werbebanner? Oder ist es gar die „innere Qualität“, die sich so furchtbar schlecht in Zahlen ausdrücken lässt?

Vielleicht ist es dieser zuletzt genannte Punkt, weshalb wir so gern mit Zahlen herumspielen, mag deren Aussagekraft auch noch so gering sein, denn sie suggerieren eine Vergleichbarkeit, wo in Wahrheit keine ist.

Es ist einfach herrlich, wieviel Zeit wir mit sinnlosen Vergleichen verbringen. Dieser Artikel hat laut WordPress 752 Worte. Es muss also ein guter Artikel sein.


SmallInvoice Logo

Ähnliche Artikel:

AuthorChristoph Jüngling

Selbständiger Softwareentwickler und Seminarleiter

One thought on “Zahlenspiele

  1. Sehr interessanter Artikel von dir.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

7 − sechs =