2005-04-12

Programmieren - Kunst oder Wissenschaft?

Heute morgen ging mir so durch den Kopf: Was ist eigentlich "Programmieren", Kunst oder Wissenschaft? Ist es einfach ein ingenieursmaessiges Vorgehen? Anwenden von Methodik zur Analyse, Design, Strukturierung, Test?

Ja, bestimmt. Das ist schliesslich das Tagesgeschaeft. Das ist auch vielfach die Denkweise des akademischen Informatikers. Sehr mathematisch angehaucht: "Wir haben hier einen Problemraum, und muessen dazu den Loesungsraum identifizieren."
Gerade im MDA-Ansatz werden dann Modelle gezeichnet, Code generiert usw. usw.
Aus Unternehmenssicht, Projektsicht mit Kosten- und Zeitfaktoren, Anforderungs- und Release-Management und all dem ist die Entwicklung einer Software nicht anders zu verstehen als die Entwicklung jeder anderen, realen Maschine. Es werden Zeichnungen angefertigt, daraus Maschinenteile erstellt, diese werden montiert und das Ganze geht in Test und Produktion.

Und doch ... irgendwie geht es mir persoenlich doch anders. Der Umgang mit den UML-Modellen und insbesondere mit dem Quellcode ist fuer mich doch noch mehr. Gerade Quellcode: Ist das doch letztlich irgendwo geschriebener Text in einer Sprache, in der man Sachverhalte ausdrueckt.
Und so empfinde ich tatsaechlich fuer Quelltexte eine gewisse Aesthetik. Ein Programm kann "schoen" oder "haesslich" sein, "ansprechend" oder "abstossend".
Genau wie in literarischen Texten kann man in Programmen Sachverhalte klar und eindeutig auf den Punkt bringen oder um den heissen Brei reden, verschleiern, undeutlich werden.
Man kann in Programmtexten sogar Witze machen. (Ich hoffe, ich stosse bald mal wieder auf ein paar Beispiele, dann mach ich dazu mal eine Seite).
Programmierer, die viel Quelltexte schreiben, entwickeln einen Schreibstil. So kann man unter Kollegen tatsaechlich beim Lesen eines Code-Abschnittes recht treffsicher erahnen, wer ihn geschrieben hat. Ein Autor praegt den Programmtext.
Programmierer entwickeln sich auch weiter, und so kann man Programmtexte eines Programmierers seinen "fruehen" oder "spaeten " Phasen zuordnen. Einfluesse lassen sich erkennen: Der Programmierer lernte eine weitere Sprache oder weitere Designkonzepte, die seinen Stil beeinflusst haben.

Zurueck zur Aesthetik: Tatsaechlich ist es so, dass man (ich?) beim Programmieren mit Empfindungen arbeiten kann, was teilweise in Form von Metaphern geschieht. So wird ein Programm beim Lesen z.B. wie ein schiefes Haus empfunden, bei dem keine Ecke rechtwinklig ist, und alles irgendwie nicht zusammenpasst. Man fuehlt sich wohl beim Lesen, empfindet Orientierung, oder man empfindet eben Orientierungslosigkeit. Man erfasst den Sinn eines Codeabschnittes intuitiv und fuehlt sich wohl, oder man springt von einem Codeabschnitt zum naechsten bei dem verzweifelten Versuch, sich zurechtzufinden und einen roten Faden zu erkennen. Irgendwann landet man wieder am Ursprung und fuehlt sich wie in einem Labyrinth. Ach ja, Metapher: Der Ausdruck "Spaghetti-Code" ist ja allgemeiner Sprachgebrauch in der Programmiererwelt geworden.

Ist Programmieren also doch Kunst? Ich fuer mich habe entschieden: Ja! Auch wenn es Projektleitung und Management vielleicht gar nicht so sehen wollen, denn dann waere es ja nicht durch Regelwerke erfassbar und somit letztendlich nicht lernbar. Genau wie bei einem, der ein Instrument lernen will. Entweder er hat's, dann fliesst es mit jeder neu erlernten Technik aus ihm heraus, oder er hat es nicht, dann kann er zwar Techniken erlernen und brauchbare Musik erzeugen, aber wird immer hinter einer gewissen Grenze zurueckbleiben. Es fehlt dann das "gewisse Etwas". Das aber bereitet Managern Angst, denn das ist nicht planbar und kalkulierbar.

Doch stellen wir nicht immer wieder fest, dass es einzelne wirklich grossartige Programmierer gibt, die ueberraschende Dinge moeglich machen und dabei Code produzieren, der jedem nur als Lehrbeispiel dienen kann?
Und kennen wir nicht auch Programmierer, wo man beim Lesen des Codes leise seinen Kollegen fragt: "Was, der programmiert wirklich schon seit 15 Jahren???".

Warum wohl?

Keine Kommentare: