Code ist ein Werkzeug
Gastbeitrag von Simon Bäse
Hi, ich bin Simon. Ich bin Mathematiker, Backend-Entwickler bei der Ehrenamtsplattform youvo.org (opens new window) und in verschiedensten Software-Projekten involviert. Hier ist mein erster Gastbeitrag, den ich zu diesem Handbuch hinzufügen möchte.
Motivation durch Frustration
Für viele AnfängerInnen ist die größte Hürde beim Programmieren das Programmieren an sich. JedeR mit ein wenig Programmiererfahrung kennt das Gefühl, wenn man mehrere Stunden an einem Stück Code friemelt und beim Ausführen endlich das gewünschte Resultat angezeigt wird. Diese Glücksmomente solltest Du bewusst erleben – sie sind ein wichtiger Motivator. Natürlich werden Dir einige dieser Erfolge nach einer gewissen Zeit nicht mehr den Kick geben, aber ich kann Dir vergewissern, dass sie nicht ausbleiben. Ich habe schon öfters zum Erstaunen meiner KollegInnen vor meinem Computer in Euphorie die Arme hochgerissen und „Fuck Yeah!“ gerufen, weil mein Code funktioniert.
Stetige Reflektion
Richtig gut Programmieren lernst Du aber erst, wenn Dein Arbeitstag hier noch nicht zu Ende ist. Dass Dein Code funktioniert, heißt nicht, dass dieser auch gut ist (siehe hierzu Kapitel 3). Ich möchte hier aber nicht erklären, was guten Code ausmacht, sondern diese Aufgabe an Dich weitergeben. Du solltest Dich immer fragen:
- Welches Problem löst dieser Code?
- Welche Schritte werden benötigt, um das Problem zu lösen?
- Wie interagiert der Code mit anderen Bestandteilen des Programms?
- Ist die Lösung sexy?
Die ersten drei Fragen erscheinen selbstverständlich. Es ist jedoch wichtig diese wissentlich zu beantworten. In der ersten Woche meines Studiums meinte einer meiner Professoren: „Ihr dürft niemals vergessen an welchem Problem Ihr arbeitet!“ Damals habe ich nicht erwartet, dass ich mich so oft an diesen Satz zurückbesinnen würde. Wenn die Lösung nicht offensichtlich ist, verliert man sich leicht auf dem Weg dorthin. Und nach hunderten Fehlversuchen arbeitet man häufig in die falsche Richtung. Sich dann zurück auf die Ausgangsfrage zu konzentrieren und einen klaren Pfad zur Lösung zu erarbeiten, ist eine Herausforderung. Dazu gehört, die nötigen Schritte gedanklich zu antizipieren und seine Gedanken so zu abstrahieren, dass sie als Code formuliert werden können. Das gilt natürlich nicht nur für den Codeblock, an dem Du gerade arbeitest, sondern für die Gesamtheit Deines Programms. Diese Fähigkeiten wirst Du jedoch erst erlernen, wenn Du sie jedes Mal trainierst.
Die vierte Frage wirst Du häufig mit „Nein” beantworten müssen. Das kann verschiedene Gründe haben. Oft erfüllt Code einfach nur seinen Zweck und bietet nicht viel Raum für Kreativität. Manchmal muss einfach nur eine Lösung her und Faktoren, wie Performance, Komplexität oder Flexibilität, haben vorerst keine Priorität. Aber, allem voran entsteht exzellenter Code meist erst nach mehreren iterativen Überarbeitungen.
Befriedigung durch Ideen
Bald wirst Du dann feststellen, dass wirklich befriedigender Code, nicht durch die Aneinanderreihung von Befehlen, sondern durch gute Ideen zustande kommt. Dazu muss der Code zu Deinem Werkzeug werden. Du solltest darauf hinarbeiten nicht gegen den Computer kämpfen zu müssen, sondern ihn für die Lösung Deiner Probleme zu verwenden. Natürlich kann ich auf meine eigenen Erfahrungen zurückschauen und mit Gewissen sagen, dass ich zu Anfang viel Zeit aufwenden musste, um das nötige Know-how zu erlangen. In der Mathematik ist es so gut wie unmöglich ein korrektes Programm zu schreiben, wenn man nicht jedes Detail durchdacht und verstanden hat. Dafür ist aber die Grenze zwischen Problemlösung und Code klar zu erkennen. Wenn ich heutzutage an einer Fragestellung in der Mathematik arbeite, verbringe ich mehr als 90% der Zeit auf dem Papier. Die Programmierung am Ende ist lediglich der Transfer von den Ideen zu Codezeilen. Das ist ein Extrembeispiel und häufig kann das Schreiben eines Programms auch dazu dienen einer Problemlösung näher zu kommen. Das Prinzip findet sich aber in allen meinen Projekten wieder. Ich kann Dir sogar versprechen, dass das pure Programmieren langweilig sein wird, wenn es nicht mit einer echten herausfordernden Aufgabe verbunden ist.
Es ist ein langer Weg um dieser Arbeitsweise näher zu kommen und auch die erfahrensten ProgrammierInnen werden immer wieder auf ein Problem stoßen, das qualvoll lange nach einer Lösung schreit. Die Zeit auf der Suche solltest Du als Investition sehen und nach der erfolgreichen Lösung bewusst in die Reflektion gehen. Es wird Dir helfen eine analytische Denkweise zu entwickeln und langfristig zu mehr und besseren Ideen führen. Die wahre Schönheit am Programmieren ist das Problemlösen. Der wahre Spaß kommt durch Herausforderungen.