Um ein erfahrener Programmierer zu werden, benötigt man vor allem Zeit! Zeit um Software zu entwickeln, Zeit um Fehler zu machen, Zeit um die Fehler zu beheben und Zeit um alte Software komplett neu zu entwickeln, sobald man gelernt hat, dass eine gute Software Architektur enorm wichtig ist. Bob Belderbos hat in seinem Artikel How to grow in the craft of programming? einen Plan veröffentlicht, der 7 Schritte für den Weg zum erfolgreichen Programmierer empfiehlt. Diese sind wirklich sehr gut durchdacht und ein toller Wegweiser für den Anfang.

1. Eigene Software schreiben

Man kann nur Programmieren lernen, indem man echt Software schreibt. Anders ausgedrückt, man braucht Praxis. Viel Praxis. Der ideale Einstieg am Anfang sind Bücher. Dort findet man Grundlagen und minimale Programme, die nachgebaut werden können. So erhält man ein Gefühl für die Syntax. Oft findet man auch Übungsaufgaben und Anregungen für Software, die es zu lösen gilt. Optimal um Grundkenntnisse zu erlangen.

Wirkliche Erfahrungen sammelt man jedoch am besten durch kleinere Projekte. Hierbei lernt man im Laufe der Zeit immer mehr Teile und Aspekte einer Programmiersprache kennen. Vor allem entstehen bei Projekten, die keinem Schema aus einem Lehrbuch folgen, Fehler. Das Lösen dieser ersten Fehler ist es, was wirklich Erfahrung bringt. Der Lerneffekt ist bei Projekten, deren Komplexität mit der Zeit immer weiter steigt, am größten. Zudem macht es auch einfach großen Spaß an eigenen Projekten zu arbeiten.

2. Quellcode von anderen lesen

Genau so wichtig wie Software zu schreiben, ist Software von anderen zu lesen. Das kommt später ohnehin immer häufiger vor. Das positive ist, dass man von der Erfahrung von anderen Programmierern viel lernen kann. Software Architektur, Organisation von Quellcode sowie Code Style (Einrückung, Namensgebung für Variablen, usw).

Wer die Logik von anderen Programmierern analysiert, die einzelnen Methoden- oder Funktionsaufrufe logisch nachvollzieht, lernt immer etwas neues. Bob empfiehlt sich selbst dabei folgende Fragen zu stellen:

  • Was würde ich selbst als Programmierer anders machen?
  • Warum würde ich Änderungen vornehmen?
  • Welche kreativen Lösungswege wurden vom Programmierer gewählt?

Wichtig finde ich zudem: Ist man unerfahren, sollte man den Entwickler der Software immer hinterfragen. Nicht jedes Stück Software von anderen ist ein gutes Beispiel. Hilfreich ist in jedem Fall Opensource Software, da hier die Chance hoch ist, dass auf Qualität wert gelegt wird. Zudem kann man im Opensource Bereich immer jemanden Fragen, sollte man mal spezifische Teile nicht verstehen.

3. Niemals ausruhen

Man sollte gleich zu Beginn der Laufbahn als Entwickler lernen, dass man niemals aufhört zu lernen. Es gibt kein Ziel an dem man sagt, jetzt bin ich Programmierer und brauche nicht mehr lernen. Es gibt ständig neue Entwicklungen, neue Programmiersprachen, neue Frameworks und neue Plattformen. Man lernt nie aus.

Bob empfiehlt pro Monat am besten zwei Programmierbücher oder Videokurse zu schauen. Eines sollte rein technischer Natur sein. Ein anderes Buch oder Training sollte sich über Konzepte, Architektur und Programmierstil drehen.

Dazu ist natürlich gerade für Einsteiger zu sagen: nicht überfordern lassen! Im Zweifel etwas langsamer angehen lassen, dafür aber dauerhaft am Ball bleiben.

4. Mentoren und Vorbilder suchen

Um weiter an Erfahrung zu gewinnen, sind geeignete Mentoren sehr wichtig. Es ist sehr wertvoll wenn man Feedback und Ratschläge zum eigenen Quellcode erhält. Zudem ist es wirklich gut sich mit Gleichgesinnten auszutauschen. Man hat Vorbilder, findet Inspiration, stösst auf Begriffe und Techniken die man lernen muss, findet neue Projekte und kann Erfahrungen sammeln. Wer durch örtliche Gegebenheiten oder ähnliches nicht die Gelegenheit hat, andere Entwickler zu treffen, dem sei hier das IRC empfohlen. Vor allem in der Opensource Community haben viele Projekte einen IRC-Channel im Freenode Netzwerk.

5. Lösungsorientiert denken

Wer Software entwickelt, löst damit spezifische Probleme (Anforderungen) von Kunden oder sich selbst. Es führen immer viele Wege nach Rom. Ein wirklich guter Programmierer ist in seiner Nische jedoch nicht nur in der Lage ein Problem irgendwie, sondern auch unter Ausnutzung vorhandener Methoden und Funktionen, zu lösen. Sprich: Man muss lösungsorientiert denken. Bevor man Funktionalität selbst abbildet, sollte man wenn möglich vorhandene Funktionen des Betriebssystems, der Programmiersprache oder des Frameworks verwenden. Das bedeutet, dass man sich mit der Technik die man verwendet auskennt. Daher ist es wichtig sich nicht nur auf einen Teilbereich zu fokussieren, sondern immer auch über den Tellerrand hinauszuschauen.

6. Programmieren für den Anwender

Wird ein Programm geschrieben, existiert immer mindestens eine Zielgruppe von Anwendern, die es später benutzen. Vor und bei der Entwicklung muss man daher immer daran denken, welche Art von Mensch mit der Software arbeitet, und welche Anforderungen sie an dass Programm stellen. Man sollte nicht, nur weil man es kann, Funktionalität einbauen die ohnehin nie verwendet wird. Gleichzeitig ist auch wichtig, dass nicht die Fähigkeiten und Kenntnisse der Kunden in Vergessenheit geraten. So sollte z.B. für nicht-technische Anwender die Benutzerschnittstelle anders gestaltet werden, als die Schnittstelle einer Software für Programmierer.

7. Die richtigen Tools verwenden

Mit der Zeit lernt man wo sich wiederholende Tätigkeiten anfallen. Die sollte man so gut es geht automatisieren. Z.b. kann man sich eine Datenbank mit Codeschnippseln aufbauen, eine eigene Bibliothek mit wichtigen Klassen erstellen, usw. Aber auch bei der Arbeit selbst kann man sich das Leben einfacher machen. Nach und nach sollte man herausfinden, mit welcher Software man am besten täglich arbeitet. Ein ausgereifter Editor, der viele Dinge über Shortcuts ermöglicht, Quellcode einrückt, Syntaxfehler anzeigt und ähnliches, sparen viel Zeit.

Kommentare (12)

  • bob

    5 Jahren ago

    thanks for the translation / building upon my article

    • jbrinkmann

      5 Jahren ago

      You’re welcome! I really enjoyed your article and thought it could be a great starting point for readers here as well 🙂

  • Christian Hanne

    5 Jahren ago

    Punkt 3 ist nur zu wahr und lässt sich auch schön auf eigenen Code anwenden. Wenn man sich eigenen Code nach ein paar Monaten noch einmal anschaut und keine Ideen für Verbesserungen hat, dann hat man sich wahrscheinlich nicht genug weiterentwickelt.

    • jbrinkmann

      5 Jahren ago

      Hehe, ja 🙂 Vielen dank für Deinen Kommentar! Freut mich 🙂

  • Raven

    4 Jahren ago

    Bereits in Schritt 1 wird empfohlen dem Schema eines Lehrbuches zu folgen, nun ist meine Frage welches Lehrbuch, oder ähnliches, zu empfehlen ist? Bitte um Rückantwort per E-mail, falls möglich.
    Vielen Dank für’s Übersetzen, sehr gut.

    • jbrinkmann

      4 Jahren ago

      Hallo und vielen Dank für den Kommentar! Es kommt ganz darauf an, in welche Richtung es gehen soll!

  • Pascal

    4 Jahren ago

    Mich beschäftigt dieselbe Frage wie Raven: Welches Buch?
    Da gibt es natürlich einige Faktoren zu berücksichtigen. Zuerst einmal sollte es in meinem Fall eher in Richtung Spieleentwicklung gehen, irgendwann auch beruflich und aufwendigere Spiele. Momentan bin ich noch Schüler, womit das nächste “Problem” ins Spiel kommt: keine Arbeit, also kein richtiges Einkommen und dementsprechend kein übermäßiges Budget.
    Zum Scgluss noch eine Frage: Macht ein “normales” Informatikstudium in diesem Fall Sinn? Und gibt es in Österreich Alternativen zu Game Academy & Co?

  • Vanja

    4 Jahren ago

    Nun ja, irgendwie könnte man den Artikel auch auf viele andere Berufsgruppen umlegen. Ein Handwerk kann man lernen, Programmierer werden auch. Allerdings wird immer nur der erfolgreich und gut in seinem Job, der auch Spaß dabei hat. Da kommt die Motivation ins Gespräch. Denn diese kommt im Grunde nie von außen, sondern immer nur von innen. Wer mit Begeisterung bei der Sache ist, schreibt früher oder später gute Programme. Vielleicht sollte man dennoch am Rande mal erwähnen, dass es schon ein paar besonderer intellektueller Fähigkeiten bedarf, um gut und auf hohem Niveau zu programmieren. Aber das lernt sich auch nicht von heute auf morgen, sondern mit dem altbekannten Learning by Doing. Auch der talentierteste Musiker kommt ohne Übung nicht weiter. Programmieren funktioniert nur, wenn man Spaß daran hat und wirklich gut wird. In diesem Beruf ist es sehr wichtig, großes Interesse zu entwickeln, sich immer weiter zu bilden. So hat das der erfolgreiche Game-Programmierer Shane Grüling einmal ausgedrückt.

    • Jan Brinkmann

      4 Jahren ago

      Vielen Dank für den ausführlichen Kommentar! Freut mich sehr.

      In der Tat ist es natürlich so, dass Programmieren früher oder später kein Malen nach Zahlen ist. Allerdings gibt es eine ganze Reihe verschiedener Stufen der Komplexität. Jemand der HTML/CSS entwickelt, muss vor allen Dingen viel Wissen aneignen. Webentwicklung ist sicher bereits um einiges schwerer, aber am Ende unter Umständen weniger komplex als reine Anwendungsentwicklung. Die wird wieder durch Treiberentwicklung übertroffen, usw. Spieleprogrammierung ist ebenfalls stark komplex, vor allem wegen der beteiligten Mathematik.

      Dennoch ist es ein Handwerk, dass bis zu einem gewissen Grad (je nach Person und verfügbarer Zeit unterschiedlich) gemeistert werden kann. Das Zitat gefällt mir sehr gut!

      Noch einmal, vielen lieben Dank für den Beitrag! 🙂

  • ercanlo

    3 Jahren ago

    Ich bin erst 14 und wollte damit anfangen nur ich weiß nicht wie und auch nicht wo können sie mir da ein paar Tipps geben bitte

Leave a Comment to Jan Brinkmann Cancel reply

Your email address will not be published.