Aaron Fischer Ingenieur, Vater, Heimwerker, Problemlöser

11 September, 2011

Ein Versuch, die Motivation von Open Source zu erklären

Gedanken

Der Grund, warum ich leidenschaftlich programmiere hat mehrere Gründe. Zum einen ist es diese absolute Gleichheit und Fairness, mit der man unermüdlich konfrontiert wird. Jeder startet mit denselben Grundvoraussetzungen. Es wird niemand bevorzugt, weil er einen Anzug trägt und viel Geld hat oder benachteiligt, weil er einen langen Bart und eine verschlissene Jeans trägt.

Compiler und Interpreter kann sich jeder kostenlos aus dem Internet herunterladen und installieren. Auf den meisten Computern sind bereits eine Hand voll davon installiert. Überall wo ein Browser läuft, wird eine mächtige Programmiersprache bereits mitgeliefert. Den geeigneten Texteditor gibt es ebenfalls gratis dazu. Damit hat jeder Programmier die gleichen Voraussetzungen und jedes Programm beginnt mit einer leeren Datei in einem einfachen Texteditor. Keiner kann sich eine bessere Startposition erkaufen oder irgendwoher stehlen. Jeder fängt gleich an. (Mal abgesehen von Biblitheken o.ä.)

xkcd xkcd #743

Was man dann daraus macht, hängt vom Programmierer ab. Man kann sich daran versuchen, die perfekte Symphonie zu komponieren oder man wirft mit Farbeimer um sich wie die Blue Man Group. Der Charakter des Programmierers spiegelt sich in seinem Code wider, so fällt auch schnell auf, wenn der eine Dinge vom anderen abkupfert. Natürlich gibt es auch den Mainstream der Best Practices, der versucht vordefinierte Formen zu liefern, so dass möglichst viele mit dem Code klar kommen. Für welchen Weg man sich entscheidet oder ob man von allem etwas nimmt, kann jeder für sich selbst entscheiden.

Das Programmieren im Allgemeinen fängt eigentlich schon viel früher an. Man hat eine Idee oder sucht eine Lösung für ein bestimmtes Problem. Man schleicht um das Problem, schaut es von allen Seiten an und versucht es zu knacken. Das Gefühl, die perfekte Lösung gefunden zu haben, ist dann als hätte man gerade den Weg aus einem richtig schweren Sudoku gefunden. Es gibt immer unzählige Möglichkeiten und Lösungswege; Stürzt man sich direkt auf das Problem, stellt man meist irgendwann fest, dass ein anderer Weg sinnvoller gewesen wäre. In solchen Fällen muss man dann eine harte Entscheidung treffen: Zurückrudern, weitermachen oder umbauen? Oft ergibt sich auch während der Programmentwicklung ein besserer Weg, da man das Problem besser verstanden hat und deshalb die Lösung besser vor Augen hat. Das ist auch der Grund, warum die meiste Software mehrere Evolutionsstufen (Versionen) durchlaufen, bis sie stimmig und performant sind.

Grundvoraussetzung dazu ist natürlich, dass man seine Werkzeuge die man verwendet verstanden hat und damit umgehen kann. (Würde man einem Zahnarzt trauen, der seine Instrumente nicht im Griff hat?) In den allermeisten Fällen ist nicht der Computer schuld, sondern der Programmierer hat seine Wünsche nicht korrekt geäußert -- oder nicht gewusst wie man sie äußert. Es hat aber nicht nur etwas mit Wissen und Ausdrucksfähigkeit zu tun, sondern auch sehr viel mit Kreativität und dem Mut seine Gedanken zu verwirklichen. Feige Programmierer erkennt man daran, wenn sie stets auf altbewährtes setzen und Probleme immer nach dem gleichen Muster zu lösen versuchen. Nicht jedes Programm zählt Zahlen in Zellen und Spalten zusammen. Es gibt so unglaublich schöne Software, die nicht nur von außen schön aussieht, sondern auch als Programmcode ein Genuss sind sie zu lesen.

Die theoretische Informatik versucht seit Jahren vergeblich zu beweisen, dass die Anzahl der möglichen Programme endlich sei, schafft es aber nicht. Das ist ein schönes Gefühl -- das Gefühl unbegrenzter Möglichkeiten.