Software-Psychologie erforscht den Superprogrammierer:

"Die besten Ideen kommen unter der Dusche"

16.12.1983

"Es war einmal ein Mann, der behauptete, daß man auf einer Schreibmaschine viel schneller schreiben könne, wenn man nicht auf die Tastatur schaue. Man hielt ihn für verrückt". Dieses Beispiel brachte Gerald Weinberg,. Erfinder des "Human Factor" auf dem Software-Gebiet, im letzten Jahr auf einer Tagung in Gaithersburg/USA. Weinberg muß es wissen: Als er vor erst zwölf Jahren sein Buch "The Psychology of Computer Programming" veröffentlichte, wurde er ebenfalls von der Fachwelt für verrückt erklärt.

Heute gilt er als Stammvater einer Bewegung, die insbesondere in den USA, zunehmend aber auch in Europa, an Bedeutung gewinnt, die die Symbiose zwischen Informatik und Psychologie pflegt. Was Weinberg in seinem Referat klarmachen wollte, ist die Tatsache, daß das Selbstverständliche von morgen das ist, was wir heute für Spinnerei halten. Weinberg richtete einen flammenden Appell an die tausend Teilnehmer: "There are strange people somewhere doing strange things - whatch for them!"

Deutsche Wissenschaftler haben die Suche aufgenommen. Wir haben eine größere Anzahl von "Superprogrammierern", Softwareentwicklern, die in ihrer Leistungsfähigkeit weit über dem Durchschnitt liegen, sehr intensiv befragt. Der größte Teil dieser Leute ist heute freiberuflich tätig oder besitzt eine kleine Firma. Was bei den Interviews herauskam, erschien uns zunächst kaum glaublich, aber das Bild verdichtete sich von Gespräch zu Gespräch.

Erste Ergebnisse wurden in diesem Sommer veröffentlicht. Im September fand in Neubiberg bei München der erste Workshop zu diesen Fragen statt. Thema: "Programmieren mit der rechten Hirnhälfte", womit die Koordination unseres rationalen Denkens mit der Seite unseres Denkorgans gemeint ist, der wir die Fähigkeit wie Kreativität, Intuition und Sponaeität zuordnen. Bemerkenswert war das außerordentlich starke Interesse der Teilnehmer aus der Industrie.

Geänderte Bewußtseinszustände

Es erscheint erwiesen, daß man sehr viel schneller, zuverlässiger und transparenter programmieren kann, wenn man dabei in einen Bewußtseinzustand geht, der nicht ganz dem üblichen Wachbewußtsein entspricht. Programmierer, die das können, begeben sich in Zustände extremer Konzentration, die von den Arbeitskollegen gelegentlich als Trance empfunden werden, weil die Betreffenden nicht mehr ansprechbar sind. "Man könnte eine Kanone neben mir abfeuern, ohne daß mich das stören würde", ist eine typische Äußerung eines solchen Mannes. Die Befragten berichteten von einem Verlust des Zeitgefühls (läuft um einen Faktor 10 schneller), sowie von einer großen Anzahl typischer psychischer und physischer Symptome.

Seltsame Erlebnisse von Spitzenprogrammierern

Für den Neurophysiologen handelt es sich um Zustände, die durch das Auftreten sogenannter Alphawellen im EEG gekennzeichnet sind. (Alphazustände werden auch zum Erlernen zum Beispiel von Sprachen genutzt. Entsprechende Methoden sind unter Superlearning oder Suggestopädie bekannt geworden.)

Die außergewöhnlichen Leistungen, über die die Superprogrammierer berichteten, konnten zum Teil bestätigt werden. 1200 Statements fehlerfrei pro Tag sind nachgewiesen, wobei sich "fehlerfrei" auf vermeidbare Logikfehler bezieht, nicht auf gelegentliches Vertippen und auf Dinge, die der Mann nicht wußte.

Die Interviews hinterlassen den Eindruck, daß wirklich hervorragendes Programmieren etwas völlig anderes ist, als wir gemeinhin annehmen. Es scheint außerordentlich viel mit Gefühl, mit Intuition, mit Kreativität zu tun zu haben. Hier ein paar typische Aspekte, die zu denken geben:

Jedem der programmiert, passiert es bisweilen, daß er nachts im Bett, wenn er nicht schlafen kann, einen Fehler in seinem Programm findet. Haben Sie sich einmal gefragt, wie für Sie ein Programm aussieht, das Sie offensichtlich so "klar vor Augen" haben, daß Sie Fehler darin finden können? Die wenigsten Menschen können beschreiben, was sie wahrnehmen, sind aber sicher, daß es kein Listing ist. Aber es gibt Ausnahmen.

Ein Informatikstudent sagt zum Beispiel:

"Ein Programm ist für mich eine dreidimensionale Treppenstruktur, um die ich herumgehen und in die ich hineinsteigen kann. Wenn ich einen Fehler finden will, muß ich mich seitlich danebenstellen, um die richtige Perspektive zu haben."

Und was geht in Ihnen vor, wenn Sie ein Programm trockentesten? Dazu erklärt derselbe Mann:

"Ich bin selber der Rechnerkern. Ich werde zu einem Punkt. so laufe ich durch das Programm: durch Schleifen, Sprünge etc. Ich führe das Programm aus. Hinterher bin ich ablolut sicher, daß das Programm, soweit ich es trockengetestet habe, richtig ist. Es kann ja nicht falsch sein, weil es richtig ausgeführt wurde!

Auf die Frage, wie er dabei den Überblick behalte, fällt ihm ein:

"Ich existiere zweimal, einmal als Punkt außerhalb des Programms und einmal als der bewegte Punkt."

Er ist nicht der einzige, der Erlebnisse preisgibt, die wir eher in einer Zen-Meditation vermutet hätten. Andere berichten, daß sie "zu dem Programm werden". Andere haben das Gefühl, aus ihrem Körper herauszutreten und sich beim Programmieren über die Schulter zu schauen. Einer unserer prominentesten Vertreter der Informatik meinte dazu:

"AIs ich noch viel programmierte, konnte ich das auch!" (Vielleicht ist er bereit, seinen Namen preiszugeben, wenn mehr Leute sich zu dieser sehr wertvollen Fähigkeit bekennen.)

Ästhetik und Fehler

Gute Programmierer haben allgemein einen ausgeprägten Sinn für Ästhetik. Das Programm muß schön sein, elegant, ein inneres Bedürfnis nach künstlerischem Selbstausdruck befriedigen. Damit ist keineswegs die äußere Form gemeint wie das Einrücken am Zeilenanfang. Was gemeint ist, laßt sich schlecht in Worten ausdrücken, hat aber viel mit Optimalität, Transparenz und Korrektheit zu tun. Interessant ist die Feststellung, daß gute Programmierer offensichtlich ihr ästhetisches Gefühl gezielt zum Testen von Programmen einsetzen und sich von darauf verlassen. Bevor sie ein Programm logisch im Detail analysiert haben, achten sie auf ihre Gefühle:

"Ich arbeite sehr wesentlich mit Ästhetik. Wenn ich einen Fehler finde so stimmt da etwas an der Gestalt nicht. Es ist etwas mit der Ästhetik: falsch."

Oder umgekehrt:

"Wenn ich ein solches Programm sehe weiß ich einfach daß es "wasserdicht" ist. Ich sehe das! Man kann das vergleichen mit der Fähigkeit, in einem deutschen Text Rechtschreibefehler zu finden ohne den Text wirklich zu lesen. Fehlerhafte Wörter sehen komisch aus fremdartig."

Oder als praktische Anwendung:

"Es gibt Programme die sind praktisch nicht testbar (zum Beispiel Interruptsteuerung in SPL). Da muß ich einfach draufschauen und wissen, daß sie o. k. sind. Wenn ich das sehe dann stimmt das auch."

Nach allem, was wir darüber hörten, scheint Ästhetik mehr zu sein als nur ein subjektives Empfinden. Gute Programmierer fühlen auch spontan ein Gefühl der Vertrautheit mit gutgeschriebenen fremden Programmen. Assoziationen zur Kunst bieten sich an.

Der Effekt, daß einem die besten Ideen nicht beim angestrengten. Nachdenken kommen, sondern beispielsweise unter der Dusche, ist allgemein bekannt. Spitzenprogrammierer nutzen ihn offenbar gezielt aus.

"Wenn ich eine Weile vergeblich nach einem Fehler suche, ergreift die Sache Besitz von mir. Sofern ich den Fehler nicht finde gibt es einen Punkt, an dem ich weiß daß ich die Sache abbrechnen sollte. Wenn ich anschließend schlafe und aufwache habe ich den Fehler gefunden. Er ist einfach da! Aber das geht nur, wenn ich ohne Wecker aufwache. Das funktioniert sowohl beim Konstruieren eines Programms als auch beim Implementieren und Testen."

Traum und Schlaf

Arbeit im Schlaf wird nicht nur für die Fehlersuche, sondern auch für jede Art vom Problemlösung genannt. Weinberg selber schreibt dazu:

"Ich nutze regelmäßig Träume, um spezielle Probleme zu lösen - nicht immer erfolgreich aber zu etwa 7(...) Prozent."

Auch er vermeidet es, einen Wecker zu benutzen, weil ihm dann die Lösungen verlorengehen. Er nimmt Probleme gezielt mit in den Traumzustand und hat sein morgendliches "Aufstehritual" so eingerichtet, daß die Lösungen Gelegenheit haben, ihm einzufallen.

Häufiger wird von spontanen Gefühlen berichtet, ob irgendwelche schwierige Sache, die man noch nicht genau kennt, machbar ist oder nicht. Ein hervorragender von uns interviewter Software-Mann verlaßt sich völlig auf dieses Gefühl und hat sich nach seinen Aussagen, wenn ihm ein "NEIN" signalisiert wurde, noch nie damit getäuscht. Die Richtigkeit dieser Behauptung wird sich kaum überprüfen lassen, jedoch waren wir Zeuge eines eindrucksvollen Beispiels: Es ging um eine äußerstschwierige Sicherheitsfrage gegen über Systemfehlern im unbekannten Dschungel zwischen Betriebssystem und Datenbanksystem auf einem Großrechner. Nach nur einer Stunde Zuhören erklärte der Mann zur allgemeinen Verblüffung, daß die Aufgabe lösbar sei. Wir brauchten sechs Wochen intensiver Detailarbeit, um den Beweils dafür zu erbringen. Zufällig fehlte keine der zahlreichen Voraussetzungen, um eine trickreiche Lösung zu ermöglichen.

Menschen wie du und ich

Wer sind die Spitzenprogrammierer? Sollten wir mit der Entwicklung des Software-Engineering nicht den einsamen Künstler längst hinter uns gelassen haben? Spitzenprogrammierer sind keine Hacker, sondern eher das Gegenteil. Es sind keine Menschen, die sich vor ihren sozialen Schwierigkeiten in die Scheinwelt ihrer Programme flüchten, sondern gerade sie stehen mit beiden Beinen von im Leben. Es sind sehr angenehme und verantwortungsvolle Mitmenschen. Die meisten berichten von einem glücklichen Familienleben, in dem sie auffallend viel Zeit ihren Kindern widmen, von denen sie liebevoll sprechen. Sie haben paradoxerweise im allgemeinen keineswegs übertrieben lange Arbeitszeiten - selbst wenn sie freiberuflich tätig sind - sondern gehen breitgestreuten kulturellen Interessen nach. Wir fanden zwar individuell Vorliebe für ungestörte Nachtarbeit und lange zusammenhängende Arbeitszeitblöcke, aber auch gegenteilige Neigungen. Insgesamt machten die Leute den Eindruck hervorragender körperlicher und psychischer Gesundheit. Sie sind, wie man sagt, "voll da"!

Die quantitativen Spitzenleistungen beim Programmieren erscheinen spektakulär. Sie sind jedoch, weder für die Betroffenen, noch für uns, das wichtigste Phänomen. Wir haben sie nur deshalb so herausgestellt, weil sie - im Gegensatz zu den anderen Attributen - leicht meßbar und belegbar sind. Wichtig erscheint indes das hohe Maß an Kreativität und Effizienz über das gesamte berufliche Spektrum hinweg.

Auf dem Workshop kam die Ansicht auf: "Eigentlich sind diese Leute viel zu schade zum Programmieren", was jedoch von den Betroffenen nur teilweise akzeptiert wurde. Sie verstehen sich zwar nicht als Codierer, sind aber davon überzeugt, daß diese Phase für sie selber nicht fehlen darf, wenn sie Spitzenleistungen erbringen wollen.

Die Tatsache, daß die Superprogrammierer in der Regel als Einzelkämpfer auftreten, sagt nicht, daß sie zur Teamarbeit nicht fähig seien. Natürlich muß es - sowohl für den Spitzenmann als auch für den Rest des Teams - frustrierend sein, wenn allzu auffällige Qualitätsunterschiede bestehen und Delegieren und Kontrollieren für sie viel aufwendiger ist als Selbermachen.

Freiberufliche Superprogrammierer arbeiten mit ihren Auftraggebern offensichtlich hervorragend zusammen, und es gibt Hinweise darauf, daß sie es auch miteinander tun. Interessant war die Stimmung, die auf dem Neubiberger Workshop nach langen Diskussionen mit den eingeladenen "Stars" aufkam: Das sind ja Menschen wie du und ich!" Das Wort von der "Entmystifizierung des Superprogrammierers" machte die Runde. Die Entmystifizierung fand auch aus der Gegenrichtung statt: Viele der Teilnehmer erkannten nach und nach, daß auch sie über entsprechende Erfahrungen und Ergebnisse verfügen, wenn auch nicht so extrem und vielleicht nicht gerade beim Programmieren.

Ist Superprogrammieren erlernbar?

Ja und nein! Sicherlich kann man nicht aus jemandem einen "Star" machen, der nicht die geistigen und handwerklichen Voraussetzungen zum Programmieren mitbringt. Andererseits braucht jemand, der diese Bedingung erfüllt, im eigentlichen Sinne nichts hinzuzulernen. Im Gegenteil: Er muß von den psychischen Mechanismen loslassen, die ihn daran hindern, sein kreatives Potential voll zu entfalten. Die meisten von uns haben zwar hin und wieder eine Sternstunde, in der sie wirklich "voll da" sind, aber die meiste Zeit brennen wir mehr oder weniger auf Sparflamme.

In den letzten Monaten haben wir nicht weniger als fünf verschiedene Ansätze kennengelernt, von denen einige unsere Theorie auf geradezu verblüffende Weise stützen. Ein spezielles Zweieinhalb-Tage-Training für bereits gute Softwareleute wird in Kürze angeboten.

Wie bereits angedeutet, haben wir festgestellt, daß Fähigkeiten und Erfahrungen, ähnlich denen, wie sie von einzelnen Spitzenleuten berichtet werden, offensichtlich sehr viel weiter verbreitet sind, als das allgemein bekannt ist. Software-Leute geben sich nach außen sehr rational und nüchtern. Sie besitzen sicherlich eine gewisse Scheu davor, vor Kollegen "mystische Erfahrungen" auszupacken. So kommt es, daß wir alle. miteinander ein wenig das Märchen von des Kaisers neuen Kleidern aufführen und unser Bild vom Programmierer nicht ganz zutrifft. Ein weiterer Hinweis darauf sind die unterschiedlichen Reaktionen der Leute, wenn sie von unseren Untersuchungen erfahren. Zwischen emotionsgeladener Ablehnung ("das ist doch alles Quatsch!") und Euphorie ("das kann die Lösung all unserer Probleme sein!") finden wir immer wieder den trockenen Kommentar von Praktikern: "Na und! Kann man denn ein gutes Programm auch anders schreiben?"

Es braucht wohl nicht besonders betont zu werden, wie wichtig ein zutreffendes Bild von dem, was Programmieren und Softwareentwicklung wirklich ist, für die Zukunft unserer Branche ist. Wir denken dabei nicht nur an Ausbildung und Trainings, sondern auch an das gesamte Gebiet des Software-Engineerings: Sind unsere Phasenpläne, unsere Organisationsstrukturen oder unsere Tools wirklich den Menschen angemessen, die damit zu tun haben!

Aufruf zur Mitarbeit

Uns geht es nicht in erster Linie um quantitative Leistungssteigerung, um mehr LOC pro Manntag. Sicherlich: Die Aussicht auf erhöhte Leistungsfähigkeit der Mitarbeiter, auf zuverlässigere und transparentere Produkte, machen unsere Ideen wirtschaftlich attraktiv. Unser Ansatzpunkt ist jedoch mehr Menschlichkeit und Zufriedenheit in einem Bereich, der bis heute weitestgehend vom Denken in Maschinen beherrscht wird. Wir möchten zeigen, daß der Mensch in der Software-Entwicklung weit weit mehr ist als eine "Programmiermaschine", die wir - leider - noch nicht durch eine Art Supertool ersetzt haben. Wenn uns das wirklich klar ist, werden wir auch weniger geneigt sein, ihn wie eine Programmiermaschine zu behandeln. Dabei können Sie uns helfen.

Es liegt uns zur Zeit ernsthaft daran, so viel wie möglich an empirischem Material über das zu sammeln, was beim Programmieren wirklich vor sich geht, um eine breite Basis für eine wissenschaftliche Auswertung zu erhalten.

Sie brauchen sich dazu nicht wie ein Superprogrammierer zu fühlen, und es muß auch kein spektakulärer Beitrag sein: Auch kleine Steine formen ein Mosaik. Vielleicht erinnern Sie sich an einem einmaligen Flash, für den sie keine rechte Erklärung haben. Vielleicht haben Sie einmal ein perfektes Programm unter Alkohol- oder Medikamenteneinfluß geschrieben und wissen nicht wie. Natürlich muß es sich nicht um Codieren handeln. Auch bei Kundengesprächen, beim Warten von Programmen und selbst bei der Literatursuche geschehen offensichtlich seltsame Dinge.

Bitte schicken Sie uns eine möglichst genaue Beschreibung des Phänomens. Lesbare Handschrift genügt. Wir werden dann gegebenenfalls mit Ihnen näheren Kontakt aufnehmen. Natürlich möchten wir Ihre Erfahrung weiterverwerten und eventuell veröffentlichen, werden es jedoch, ohne ihre ausdrückliche Erlaubnis, nur in einer Weise tun, in der Ihre Anonymität unbedingt gewahrt bleibt.

Dr. Molzberger ist Professor für Informatik an der Hochschule der Bundeswehr, München.