Philosophie: Coding for Fun

Ich spreche ja oft von Begeisterung, die mich beim Programmieren und Texte schreiben erfüllt. Leider ist es insbesondere den Menschen um mich herum gar nicht so leicht zu erklären warum. Aber es läuft wohl alles darauf hinaus, im Text oder Quell-Code meinen ganz eigenen Ausdruck zu finden - einen Ausdruck, der dann für mich steht und anhand dessen man später einen Zugang zu dem bekommen kann, was mich zum Zeitpunkt der Entstehung wirklich bewegte.

Ähnlich wie ein Maler den Moment aus dem richtigen Blickwinkel für immer festhält, der von besonderer Bedeutung ist, so bildet die von mir entwickelte Software Lösung wiederholbar das gewünschte Ergebnis ab. Dabei kann das Bild später viele Menschen erneut auch an anderen Orten in dieselbe Perspektive versetzen. Bei mir versetzt nun Software den Anwender in eine Perspektive, aus der er das richtige Ergebnis bequem sehen und erreichen kann.

Aber so wie den einfachen Kunst-Konsumenten in erster Linie nur die Wirkung der Darstellung interessiert, verhält es sich auch mit den Otto-Normal Anwendern meiner Programme. Entspricht das Ergebnis ihren Vorstellungen oder werden sie sogar übertroffen, ist alles gut. Und Ende. Findet sich jedoch ein Sachverständiger, bekommt der ganz persönliche Ausdruck noch einmal eine tiefere Ebene.

Jetzt bin ich aber leider kein Kunst-Sachverständiger, der an dieser Stelle zum Vergleich weitere Ebenen von Gemälden glaubhaft wiedergeben kann. Daher möchte ich nun vielmehr ein paar Ebenen von Software-Lösungen veranschaulichen, die jeweils auf die eine oder andere Weise Betonung verdienen.

Problembeschreibung

Idealerweise sieht man dem Programm deutlich an, welchem Problem es sich widmet. Dabei steigt der WOW-Effekt mit der Problem-Komplexität bei gleichzeitiger Schlichtheit seiner Beschreibung.

Handhabbarkeit

Der potentielle Endanwender braucht, auch wenn er Experte seines Fachs ist, rein für die Anwendung an sich keine extra Ausbildung. Programm-Interaktionen müssen also intuitiv gestaltet sein und ohne Umwege zum Ziel führen.

Flexibilität

Eine Lösung zeichnet sich besonders aus, wenn sie auf andere/ähnliche Probleme übertragbar ist. Oder zu Mindes dann, wenn sie leicht hinsichtlich neuer/ähnlicher Probleme anzupassen ist.

Wiederverwendbarkeit

Programm-Komponenten (Module) und Teil-Lösungen, die sich an anderer Stelle wiederverwenden lassen, erhöhen den Nutzen nicht nur über die Zeit hinaus. 

Die aber tatsächlich am tiefsten berührende Ebene ist:

Transparenz

Mit meinen eigentlich sehr angenehmen Vorstellungen von möglichen Lösungswegen stehe ich anfänglich zunächst recht isoliert da. Schließlich teilt keiner die Freude an der Schönheit der Lösung mit mir und zeigt stattdessen oft ziemlich viel Verständnislosigkeit. - Frust-Potential garantiert.

Aber dann fange ich an und drücke im Quell-Code direkt aus, wie ich mir den Lösungsweg vorstelle bis mir der Computer mit hoffentlich zufriedenstellenden Ergebnissen erstes Feedback gibt. Und ist letztendlich der Anwender von den Ergebnissen freudig angetan, teilt auch er mein Verständnis für das Lösungsergebnis. Womit sich aller Frust in Wohlgefallen auflöst.

Macht sich nun jedoch jemand die Mühe - vielleicht sogar mit mir - dem Entwickler - zusammen im Dialog heraus zu finden, was mich zu dem oder dem Lösungsschritt bewegt hat, entsteht eine Verbindung zu den Gedanken, Irrungen und Wirrungen aber auch Aha-Effekten, die sich in mir während der Problemlösung abgespielt haben.

Mit jemandem so dieselbe Perspektive zu teilen, aus der sich der Lösungsweg in all seiner Schönheit offenbart, gibt mir ein sehr erfreuliches Gefühl von Verständnis. Und dann endlich versteht auch jemand meine konstruktiv-kreative Sicht auf das Problem.


Nachtrag

Neben der philosophischen Betrachtung erlebe ich beim Entwickeln aber vieleicht auch nur einfach einen Zustand, den Mihály Csíkszentmihályi mit dem Begriff Flow bezeichnet.