Die Ausreden

Billige Ausreden sind teuer.

Erhard Bellermann

Jeden Tag höre ich ständig Ausflüchte und Ausreden, wenn es darum geht etwas zu verbessern oder einen Mangel zu beseitigen. Sie verschwenden soviel Energie mit der Tatsache sich rauszureden, anstatt das Problem anzugehen. Sie vergehen sich in jammern, das sie keine Zeit haben und vergessen darüber das arbeiten. Jeden Tag höre ich Ausreden, die in keinem Zusammenhang mit der eigentlichen Thematik stehen. Mit jedem Tag werde ich dieser Ausreden überdrüssiger und mag sie nicht mehr ertragen. Die häufigsten habe ich hier zusammengestellt. Jeder der sie benutzt, sollte mal kurz darüber nachdenken ob es wirklich den Tatsachen entspricht und ob er sich der Blöße jener Aussagen wirklich anheim stellen möchte.

Dafür habe ich keine Zeit
Die häufigste aller Ausreden beklagt den Zeitmangel, nicht zuletzt weil sich die meisten einem ständigen Druck aussetzen und diese Ausrede bei anderen infolgedessen auch gelten lassen. Wenn ich jemanden jedoch auf einen Fehler in einem Kommentar hinweise, der binnen einer Minute eingepflegt ist, wirkt dieses Argument wie ein Schlag ins Gesicht. Dokumentation wird nur gemacht, wenn sie ausdrücklich im Projektplan gefordert wird und Kommentare sind kaum zu finden. An schönen und einfachen Lösungen, die aus diesem Grunde auch weniger Probleme und Änderungsbedarf nach sich ziehen, verschwendet kaum jemand einen Gedanken. Ich höre nur immer: “Ich habe keine Zeit”. Ich hingegen habe dafür Zeit. Die Zeit, fast jede Quellcodezeile zu kommentieren. Warum? Weil ich über mein tun nachdenke und die Kommentare im Normalfall vor dem eigentlichen Code entstehen. Entwickler haben keine Zeit, weil sie sich immer weiter von Anforderungen und von Projektplänen abhängig machen. Wenn ich ein Stück Software entwickeln soll, da plane ich schon Zeit für einen Entwurf, für Kommentare und Test mit ein. Wenn ein Entwickler jedoch behauptet er könne einen Quicksort-Agorithmus für ein Problem bis morgen früh selbst implementieren, so sollten einem schon komische Gefühle, genannt Schmerz, in seinem Stammhirn entspringen. Wie sehr getestet und ausgereift könnte diese Lösung sein. Auch wenn diese Algorithmen gut dokumentiert sind? Klar vermag ich das auch, diese gedankenlose eins zu eins Übertragung eines Algorithmusses. Doch wer garantiert mir keine falschen Annahmen getroffen zu haben? Wer garantiert mir keinen Fehler gemacht oder einem Druckfehler erlegen zu sein? Niemand! Wer nie Zeit für diese Dinge einplant, der wird auch niemals Zeit haben sich weiterzuentwickeln. Er wird immer nur noch mehr aufgebrummt kriegen, weil er maschinengleich irgendwelche Gehirnkrämpfe per Tastatur in den Computer würgt. Das daraus endlose Fehlerlisten entspringen verwundert niemandem und dies wird toleriert. Doch für diese Art von Toleranz habe ich leider keine Zeit!

Das ist historisch gewachsen
Diese Ausrede bereitet mir jeden Tag den meisten Schmerz. Sie ist in den überwiegenden Fällen völlig Gehirnlos runtergebetet. Viele kleine, leicht zu beseitigenden Dinge, werden mir täglich als historisch gewachsen präsentiert. Da sage ich einfach nur “Bullshit” dazu. Wachsen hat etwas mit Evolution zu tun und diese selektiert bekanntlich schlechte Einfälle und Fehlbildungen einfach wieder aus. Aber manche Softwareentwickler halten häufig an so manchem geistigen Durchfall fest und sehen sich nicht genötigt ihn aus der schlauen Evolutionsgeschichte zu streichen. Manche Dinge die mir als historisch gewachsen präsentiert werden, wären nicht mal als Amöbe oder Virus überlebensfähig. Es ist einfach nur totaler Schwachsinn. Bei einem Menschen mögen z.B. Arme und Beine, Kopf und Körper so “historisch” gewachsen sein, weil es sich als nützlich erwies. Aber wer jetzt behauptet, mein schlechter Haarschnitt oder die zerrissene Kleidung sei historisch gewachsen, hat sicherlich Helium ins Hirn geblasen bekommen, damit er aufrecht stehen kann. Viele Dinge einer Software wie z.B. die Grundarchitektur mögen mit der Zeit historisch gewachsen sein. Sie haben sich den Problemen langsam angenähert. Wer mir jedoch falsche Kommentare, sinnlos und Überflüssig verwendete Variablen, unübersichtliche und redundante Funktionen, falsche Dokumentation usw. usf. als historisch gewachsen anpreist, hat schon längst aufgehört zu denken und versteckt sich hinter auswendig gelernten Ausreden. In den meisten Fällen ist es einfach nur Gedankenlosigkeit und Faulheit.

Das ist nicht von mir
Diese Ausrede signalisiert mir sofort eins: “Ich habe keine Zeit und keine Lust mich mit diesen anderen Dingen zu beschäftigen. Ich fühle mich mit meinem Arbeitspensum schon weit überfordert. Darüber jetzt selbstständig nachzudenken könnte ja die Folge haben, dass man sich genötigt sieht den Mangel zu beseitigen. Warum sollte ich den Bullshit von anderen verbessern, wenn ich doch in der gleichen Zeit viel eigenen gedankenlosen Bockmist verzapfen kann?”
Dies ist ein typisches Problem. Die Abgrenzung und Abschottung von allem anderen. Missstände aufzudecken trauen sich die wenigsten. Und einen Fehler zu beheben, der ihnen nicht ausdrücklich zugetragen wurde, wäre vertane Zeit, da ja niemand bemerken würde wie fleissig sie waren. Vielleicht orientieren sich diese Entwickler immer noch an dem Leistungssystem aus der Schule. Wo man für eine erledigte Aufgabe einen Stempel oder Aufkleber in sein Heftchen bekommen hat. Und man bekommt halt keinen Aufkleber, wenn man einen Fehler bei seinem Kollegen korrigiert. Nachher bekommt er noch einen Stempelchen für das was er ja nicht selbst getan hat. Ungeheuerlich! Auch wenn jetzt Programmteile von einem anderen Entwickler übernommen wurden und dort Fehler enthalten sind, sehen sich die meisten Entwickler nicht dazu gezwungen dies zu bereinigen. Sie halten dann seit Jahren eine Softwarekomponente in der Hand und fragt man, warum jenes oder dieses so schlecht sei, erhält man als antwort: “Ja, das weiss ich, aber ich habe es so übernommen!”. Da möchte ich schreien!

Wenn es erst läuft, ändere ich das
Diese Ausrede höre ich auch ständig. Jenen ist die Tugend des Vordenkens nicht gegeben. Sie bekommen eine Aufgabe und noch bevor ein keimender Gedanke in einer der unzähligen Gehirnwindungen entstehen kann, wird dieser mit “einfach tun” betäubt. Egal welche Aufgabe man ihnen gibt, sie öffnen ihre Entwicklungsumgebung und fangen an regelrecht den Code in die Tastatur zu kacken. Sie implementieren irgendwas und irgendwie. Meldet man bei manchen Teilen vorher bedenken an, heisst es: “Ja, wenn es erstmal fertig ist, werde ich da nochmal bei gehen!” oder so ähnlich. Jedoch passiert dies weder bei der Entwicklung selbst, noch wenn es irgendwie zum Laufen gebracht wurde. Denn dann getraut man sich ja keine Änderungen mehr zu machen, weil ja alles zusammenbrechen kann. Wieder entstand ein unwartbares und nur leidlich funktionierendes Codefragment, welches in der braunen Suppe des Ganzen zu einem ungenießbaren Brei vergährt. Manchmal würden nur zwanzig Minuten Vordenkens genügen um viel Unheil abzuwenden. Ein paar grobe Abschätzungen um Speicher- und Laufzeitverhalten, würden andere Wege nötig machen. Aber es wird immer nur nachgedacht und Fehler gefixed. Selten wird sich die Zeit genommen etwas von Anfang an richtig zu machen.

Sicher ist Sicher
Dieses ist eine ziemliche Angstausrede. Immer wieder stoße ich auf Programmteile, wo unnötiger Code enthalten ist. Der nie mehr Durchlaufen werden kann oder auch nur einfach nicht verwendete Variablen. Auf die Frage: Warum entfernst Du das nicht, bekommt man sehr oft die Antwort: “Man weiß ja nie, die Software wurde so getestet und obs dann noch genau so funktioniert ist nicht abzusehen!”. Hallo? Wenn ich Softwareentwicklung so betreibe, das nicht durchlaufener Code oder das entfernen von unbenutzten Variablen zum Programmabsturz führen kann, frage ich mich doch ernsthaft was wird da getrieben? Wie verschroben muss man seine Software gestalten, das die Panik entsteht, diese Programmteile seien von so enormer Wichtigkeit für die Laufzeiteigenschaften? Ich kann dafür weder Verständnis noch Mitleid aufbringen. Ich bin zwar ein Verfechter von defensivem Programmieren und man sollte auch eine ausgeprägte Paranoia haben. Aber ein und die selbe Variable in einer Funktion fünf mal auf größer Null abzufragen, aus Sicherheit, ist mir nicht mehr transparent. Sorry.

Das machen wir immer so
Bei so einer Antwort wird mir das ganze Desinteresse des Gegenübers mit einem Schlag klar. Dies zeugt davon nicht einmal etwas in Frage zu stellen oder nach besseren Lösungen zu suchen. Schön im Strom schwimmen und es so machen wie es immer gemacht wird. So wie es alle machen. Oder zumindest in der eigenen Vorstellungswelt glauben das es alle so machen. Dies vereinfacht die Weltsicht natürlich ungemein, jedoch trägt dies kein Stück zur Probremlösung bei. Im Gegenteil. Solchen Deliquenten entgegne ich immer gerne mit den entwaffnenden Fragen: “Wer genau macht das so?”, “Warum wird es genau so und nicht anders gemacht?” oder “Welche Alternativen gäbe es zu diesem Vorgehen denn noch?”. Dann müssen diese Geister ihre ganze Unwissenheit preisgeben und gestehen keine Ahnung zu haben. Nur mit dem Strom zu schwimmen, was natürlich bewusst keine Wahrhaben will. Deshalb werden sie meistens ungehalten und leicht agressiv. Denn sie merken dann, das in das Wespennest ihrer Unkenntniss und Gleichgültigkeit gestochen wurde.