Handle nur nach derjenigen Maxime, durch die du zugleich wollen kannst, dass sie ein allgemeines Gesetz werde. — Immanuel Kant
Ethik ist der Teil der Philosophie, der sich mit der Frage befasst: Was soll ich tun? Im Allgemeinen ist diese Frage aber nicht zu beantworten; zu vielfältig sind die Ziele und Interessen, die man im Alltag mit einander vereinen muss.
Viel profaner und in der Regel eindeutig lösbar befasst sich auch die Algorithmik mit der Frage nach dem Was und Wie: Was soll ich tun, um den kürzesten Weg von A nach B zu gehen? Wie kann man einen Text kompakt und gegen Fehler geschützt übertragen? Wie kann ich meinen Zettelkasten am schnellsten alphabetisch sortieren? — Ist das Ziel klar, kann man (meist) einen optimalen Algorithmus angeben, der dieses Ziel erreicht. Man muss höchstens noch abwägen, welches der sich möglicherweise widersprechenden Ziele Vorrang hat.
clafouti / photocase.com
Diese Eindeutigkeit, die der Philosophie und unserem Alltag abgeht ist, in der Mathematik noch deutlicher: Was ist die Wurzel aus Neun? Diese Frage ist eindeutig zu beantworten. Da spielen Weltanschauung und Geschmack keine Rolle. Möglicherweise erfüllt eine Vielzahl von Lösungen die Anforderung: Welche Zahl ergibt Neun wenn man sie quadriert? Bei dieser Frage gibt es zwar zwei Zahlen, die die Aufgabe lösen. Die Menge der Lösungen ist dann aber wieder eindeutig. Auf jede Frage passt genau eine richtige Antwort!
Wenn man tagtäglich mit derlei eindeutig zu beantwortenden Fragen umgeht, erscheint einem diese eindeutige Zuordnung von Frage und Antwort so natürlich, dass man vergisst, dass eine Lösung nicht nur richtig sein, sondern auch vom Publikum als richtig erkannt werden muss. Ganz zu schweigen davon, dass das Publikum ggf. erst einmal erkennen muss, dass sich die gewünschten Ziele widersprechen.
Statt dessen streichen wir Techniker und IT-Architekten Unmögliches stillschweigend aus den Anforderungen, konzipieren für den Rest eine optimale Lösung und erwarten, dass jeder einsieht, dass unsere Antwort richtig ist, sobald wir sie erst einmal gefunden haben. (Salopp gesagt erwarten wir also, dass sich alle Fragen wie die nicht-deterministisch polynomiellen Probleme in der Informatik verhalten.) Was aber bei Dreisatz und Pythagoras noch halbwegs funktioniert, wird bei komplexen Fragen rasch sehr, sehr schwer. Oft ist es dann einfacher, eine leicht verständliche, aber falsche Lösung zu glauben, als uns die Mühe zu machen, die richtige Lösung zu verstehen bzw. zu verstehen, dass gewisse Dinge unlösbar sind.
Es sitzt tief, dieses Missverständnis, dass unsere Wünsche immer widerspruchsfrei und das Richtige immer offensichtlich sein müsse. Nicht nur für uns selbst, auch allgemein glauben wir, dass richtige Lösungen sofort allgemein gefeiert werden, sobald sie um die Ecke kommen. Wir feiern das Genie, dem wir die Idee zuschreiben, anstatt den Lehrer, der uns die Idee erklärt; wir rügen den Spielverderber, der uns die Widersprüchlichkeit unserer Wünsche aufzeigt; wir unterlassen es aber, die Schwätzer zu rügen, die uns mit Halbwahrheiten überschütten.
Right is right even if no one is doing it; wrong is wrong even if everyone is doing it. — Augustinus von Hippo zugeschrieben
Entsprechend alt ist der Wunschtraum, eine Sprache zu schaffen, die Wahr und Falsch für alle leicht erkennbar trennt; eine Sprache, in der wir die von uns mühsam gefundene Lösung so formulieren können, dass sie unmittelbar von allen als wahr erkannt werden kann, in der man Widersprüchliches erst gar nicht verlangen kann.
Wie viele andere versuchte beispielsweise auch Leibniz eine solche perfekte Sprache (Lingua Generalis) zu schaffen, die Konflikte mit mathematischer Präzision auflösen kann: Nieder mit der Rhetorik; lasst uns ausrechnen, wer Recht hat!
Von Leibniz’ Versuch ist wenig geblieben, außer der binären Logik, mit der unsere Computer rechnen; denn im Allgemeinen behindert uns nicht unsere Sprache; vielmehr verstellen uns Zielkonflikte, Vorurteile und unsere eigene Denkfaulheit die Sicht auf die richtigen Antworten.
Wer Implementierungen nachmacht oder verfälscht, oder nachgemachte oder verfälschte sich verschafft und in Verkehr bringt, wird mit Zuchthaus nicht unter zwei Jahren bestraft. — §147 StGB
Es ist einfacher, ein fertig implementiertes Modul zu verwenden, als zu verstehen, warum es funktioniert. Es gibt in der Software-Entwicklung Dutzende alternative Lösungen für scheinbar jedes Problem; entsprechend sehen Viele ihre Aufgabe nur darin, Vorgefertigtes zusammen zu stecken. Welches Modul man wählt ist oft Zufall; kaum einer macht sich die Mühe hinter die peppigen Sprüche auf der Verpackung zu schauen. Die Folge sind fehlerhafte Lösungen für Probleme, die eigentlich längst erledigt waren. Viel hilft eben nicht immer viel. Eine richtige Lösung wird nicht richtiger, wenn man versucht, sie zu verbessern. “Richtig” hat keinen Komparativ, zumindest, solange man sich nicht mit Halbwahrheiten abgeben will.
Excuse me, I am not convinced. — Joseph Fischer
Aus dieser Misere kann uns nur unsere Neugier und Hartnäckigkeit heraus helfen: Warum ist ein neues Framework besser als das althergebrachte? Warum will ich dieselbe Lösung verwenden, die andernorts für ein anderes Problem verwendet wurde? Warum sind meine Annahmen gerechtfertigt? Warum kann dieses Stück Code den Bug nicht verursachen?
Es ist schon alles gesagt, nur noch nicht von allen. — Karl Valentin
Vor allem aber brauchen wir Selbstdisziplin statt Non-Invented-Here: Braucht die Welt wirklich eine weitere Lösung für dieses Problem? Wäre es nicht sinnvoller, die Vorzüge des Existierenden zu loben? War die alte Lösung wirklich falsch? Wenn ja, warum? Oder war die alte Lösung nur anders verpackt? Dann lasst sie uns auspacken, auf dass sie sich jeder in seiner Lieblingsfarbe einpacken kann, denn: Handle stets so, dass die Früchte Deiner Arbeit allgemeines Gesetz werden können! Und zwar ohne dass die Verfechter irgendwelcher Stil- und Geschmacksrichtungen auf die Barrikaden gehen. Manches kann man nicht mehr besser, sondern nur noch anders machen.
Wie gesagt, in der Regel hat jede (gut gestellte) Frage genau eine richtige Antwort, im Zweifel die, dass die Aufgabe unlösbar ist oder es mehrere gleich gute Lösungswege gibt. Den Ausnahmen begegnet man selten in freier Wildbahn. Wir müssen diese Antworten nur finden und uns die Mühe machen, uns von ihnen überzeugen zu lassen. Und wir dürfen uns dabei nicht von den wohlfeilen Sprüchen des Neu-Ist-Noch-Besser überreden lassen. Nicht alles ist Fortschritt was uns als solcher verkauft wird.