Das HappyCoders-Manifesto:

Ein glücklicher Programmierer folgt seiner Leidenschaft, interessiert sich für die Bedürfnisse anderer und lernt sein Leben lang.

Wie habe ich es geschafft vom seltsamen Nerd mit wenigen Freunden ... von dem, der im Sportunterricht als letztes ins Team gewählt wurde ... von dem, der sich lieber mit dem Zauberwürfel beschäftigte als mit anderen Kindern auf der Straße zu spielen, zum erfolgreichen und gerne gebuchten Programmierer und zum glücklichen Ehemann und Vater dreier Kinder zu werden?

Nach elf Jahren als Hobbyprogrammierer, fünf Jahren als Informatikstudent und 21 Jahren als hauptberuflicher Programmierer und Unternehmer glaube ich, dass es die folgenden drei Prinzipien sind, die die Erfolgreichsten unseres Berufs ausmachen:

Mach das,
was dir Spaß macht
Folge deiner Leidenschaft.
Die Programmierer-Karriere muss nicht zwingend ins Management führen!
Finde heraus,
was Menschen brauchen
Schaue immer hinter das, was die Menschen sagen, das sie wollen. Finde heraus, was sie brauchen, und liefere es ihnen in Top-Qualität!
Investiere in deine Skills
Lerne dein Leben lang.
Kenne deine Programmiersprache,
deine IDE, Tools und Frameworks,
Algorithmen und Datenstrukturen,
Patterns und Prinzipien.
Diese drei Prinzipien stehen hinter allem, was ich tue, und hinter jeder Entscheidung, die ich zu treffen habe – sowohl beruflich als auch privat.

Prinzip 1

Folge deiner Leidenschaft!

Wenn du mit Herz und Seele Programmierer bist, dann folge deiner Leidenschaft. Programmierer-Karriere bedeutet nicht zwingend ins Management aufzusteigen. Es gibt viele Karrieremöglichkeiten, auch außerhalb von Unternehmensstrukturen.

Wir lieben das Programmieren und das Lösen komplexer Probleme

Programmierung ist nicht nur ein Job, es ist unsere Berufung, unsere Leidenschaft.

Mach die Dinge, für die du Talent hast und die du liebst. Bleib deinem Weg treu. Wenn nicht schon geschehen, mach dein Hobby zum Beruf.

Der Erfolg wird dir Recht geben. Und der Erfolg wird dein Selbstbewusstsein stärken.

Wenn du nicht magst, was du tust, dann tu etwas anderes. Wenn du deinen Job nicht magst, such dir einen anderen. Wir Programmierer haben das seltene Glück, uns den Job aussuchen zu können.

Karriere muss nicht Management bedeuten

Mach das, was Dir Spaß macht! Wenn deine Leidenschaft das Programmieren ist, lass dich nicht zum Project Owner, Scrum Master oder Teamleiter machen (außer selbstverständlich, du möchtest das).

Lass Dir nicht einreden, dass die Programmierer-Karriere zwingend ins Management führen muss. Karriere machen, erfolgreich werden und ein sechsstelliges Einkommen erzielen kannst du auch als Programmierer.

Unternehmen zahlen Tagessätze von mehreren Tausend Euro für Experten, die ein bestimmtes Fachgebiet in seiner gesamten Tiefe abdecken. Die z. B. verstehen, warum eine Anwendung bei Tausend Usern noch funktioniert, bei einer Million aber nicht mehr (Stichwort: Concurrency).

Oder die aus einem Java Garbage Collector Log auslesen können, warum die Anwendung mit der Zeit langsamer wird oder gar nicht mehr reagiert, und die in wenigen Tagen Probleme lösen können, für die Inhouse-Teams Wochen oder Monate benötigen.

Karrieremöglichkeiten außerhalb von Firmenstrukturen

Du kannst dich auch außerhalb von Unternehmensstrukturen weiterentwickeln: Werde Speaker auf Konferenzen, werde Committer oder Maintainer eines Open-Source-Projekts, oder entwickle und vermarkte dein eigenes Produkt.

Hab keine Angst, du kannst mit allem klein anfangen.

Vorträge kannst du in deinem Team halten oder deiner lokalen JUG. Oder auf YouTube, wo du jede Szene so oft aufnehmen kannst, bis du zufrieden bist.

Überleg einmal folgendes: Wärst du sehr nervös, wenn du jemandem erklären müsstest, wie eine Schleife funktioniert? Oder was genau der Code tut, den du gerade geschrieben hast? Vermutlich nicht allzu sehr – weil du genau wissen würdest, wovon du sprichst. Wenn du einen Vortrag halten möchtest, sprich über ein Thema, mit dem du dich sehr gut auskennst. Das macht es nicht nur einfacher für dich, es macht dich auch authentischer!

Tipp

Schau Dir einmal den TED-Talk "How Great Leaders Inspire Action" von Simon Sinek an. Inspirierend, nicht wahr? Versuche dann dein eigenes "Warum" zu finden. Z. B. mit Hilfe des Buchs "Finde dein Warum: Der praktische Wegweiser zu deiner wahren Bestimmung".

Prinzip 2

Finde heraus, was Menschen brauchen

Versuche, die Menschen um dich herum zu verstehen – Auftraggeber, Arbeitgeber, Vorgesetzte, Kollegen, Mitarbeiter, die du führst. Versuche herauszufinden, was sie brauchen. Es ist nicht immer das, was sie wollen. Und dann liefere es ihnen in Top-Qualität!

Finde heraus, was dein Arbeitgeber braucht

Auftraggeber (interne sowie externe) kommen oft nicht aus der IT-Welt, und sie sprechen unsere Sprache nicht. Da sie nicht wissen, was technisch alles möglich ist, und wie aufwändig verschiedene Lösungen sind, fällt es ihnen schwer ihre tatsächlichen Bedürfnisse auszudrücken.

Was sie brauchen – das, was einen Wert für sie schaft – ist nicht immer das, was sie sagen, das sie wollen.

Deshalb müssen wir ihnen helfen herauszufinden, was sie brauchen.

Lerne ihre Sprache, und versuche sie nicht mit Fachjargon zu beeindrucken. Versuche die Unternehmenssicht und die Hintergründe hinter ihren Anforderungen zu verstehen. Oft kommen wir Entwickler auf Lösungen, an die der Arbeitgeber oder Kunde nicht denkt.

Versuche nicht deine eigene Agenda durchzusetzen. Du schaffst keinen Mehrwert für deinen Auftrag- oder Arbeitgeber, wenn du das hippste Frontend-Framework einsetzt, die neueste NoSQL-Technologie, mit der nur du dich auskennst – wenn es auch WordPress und MySQL getan hätten.

Halte deine Versprechen, liefere Top-Qualität

Beeindrucke deine Arbeit- bzw. Auftraggeber mit echter Leistung.

Liefere ihnen Produkte in hervorragender Qualität, d. h. stabile, performante, skalierbare, sichere, lesbare und wartbare Software. Das gilt übrigens auch für einen MVP.

Doch finde immer eine Balance zum Aufwand – optimiere nicht zu früh, weder die Performance, noch die Architektur. Durch vorzeitige Optimierung werden oft die falschen Dinge optimiert:

  • Performance von Code-Stellen, die selten ausgeführt werden
  • Code, den der HotSpot-Compiler besser optimieren kann
  • Einsatz des Strategy Patterns, obwohl es nur eine einzige Strategie gibt

Sei gründlich und analysiere Probleme so tiefgehend wie es nötig ist, um sie zu lösen.

Achte auf die Details, und denke immer auch an die Ausnahme- und Grenzfälle.

Teste deinen Code! Sehe es nicht als die Aufgabe eines anderen an deine Bugs zu finden. Und glaube nicht, dass du keine Fehler machst. Jeder von uns macht Fehler.

Begegne deinen Mitmenschen auf Augenhöhe

Was für deine Auftraggeber gilt, gilt auch für Kollegen, Freunde, Familie. Spreche mit allen auf Augenhöhe. Nerve sie nicht mit Fachjargon.

Selbst deine Programmierkollegen kennen wahrscheinlich nicht exakt die gleichen Technologien wie du. Nicht jeder muss die Details der Blockchain kennen, Experte im Frontend-Framework des Jahres sein oder wissen, was ein Jupyter Notebook ist.

Setze keine neuen Technologien ein, nur weil sie gerade hip sind. Sei ein Teamplayer, entscheidet gemeinsam, welche Tools, Frameworks und Libraries ihr verwendet. Respektiere die Entscheidungen deines Teams.

Schieße nicht mit Kanonen auf Spatzen. Springe nicht auf jeden Hype an. Nicht jedes Problem muss mit der Blockchain, reaktiver Programmierung oder künstlicher Intelligenz gelöst werden.

Bleib du selbst, und bleib bescheiden. Es sei denn, du bewegst dich in der Demoszene ;-)

Tipp

Schau dir meine Buchempfehlungen für Persönlichkeitsentwicklung und Unternehmertum an. Z. B. "How to Win Friends and Influence People", "The Lean Startup" und "Nail It Then Scale It!". Selbst wenn du (noch) nicht selbst Unternehmer werden willst. Es hilft ungemein anzufangen, wie einer zu denken!

Prinzip 3

Investiere in deine Skills

Nichts in unserer Wissensgesellschaft ist so wichtig wie Bildung. Investiere in deine Bildung dein ganzes Leben lang. Deine Bildung ist das Kapital, das dir niemals jemand nehmen kann.

Lerne dein Leben lang

Bleib immer neugierig und offen für Neues!

Wie in kaum einem anderen Beruf müssen wir Programmier unser ganzes Leben lang lernen.

Lerne proaktiv! Lege dir ein tägliches Kontingent an Zeit fest, in der du etwas lernst. Mindestens eine halbe Stunde, besser eine Stunde oder mehr. Lese Fachzeitschriften, Bücher, Blogs, belege Kurse.

Lese nicht nur passiv, sondern wende das Erlernte aktiv an. Wenn du Artikel über neue Features deiner Programmiersprache liest, dann programmiere die Listings nach anstatt sie bei GitHub herunterzuladen. Lass dir eigene Beispiele einfallen. Präsentiere das Erlernte in Brownbag-Session in deinem Team! Nur so verstehst du wirklich, was du gelesen hast.

Tipp

Lernen lässt sich gut mit körperlichen Tätigkeiten kombinieren. Ich höre Hörbücher beim Joggen und im Fitness-Studio (geeignete Hörbücher findest du in meinen Buchempfehlungen) und lese Fachzeitschriften und Blogs in der Straßenbahn auf meinem Arbeitsweg.

Kenne die Grundlagen deines Handwerks, spezialisiere dich auf wenige Schwerpunkte

Viele glauben, dass Programmierung eine Kunst ist. Dem stimme ich zu. Doch auch Künstler müssen ihr Handwerk beherrschen. Deshalb geht nichts über eine solide Informatikausbildung, in der ein breites Grundlagenwissen vermittelt wird.

Jeder Programmierer sollte nicht nur mindestens eine Programmiersprache und das sie umgebende Ökosystem sehr gut kennen, sondern zumindest auch die folgenden Grundlagen beherrschen:

  • Algorithmen und Datenstrukturen
  • Relationalen Datenbanksystemen (Stichwort: ACID)
  • Versionsverwaltung
  • Testing
  • Debugging
  • Design Patterns
  • Entwicklungsmethodiken (z. B. Scrum)

Außerdem solltest du mindestens eine IDE sehr gut beherrschen, sowie die Tools, die du tagtäglich einsetzt, wie z. B. Git, Maven und statische Code-Analyse-Tools wie z. B. Checkstyle.

Beschäftige dich mit Prinzipien wie Clean Code und Test-Driven Development.

Du musst nicht ein Experte für alles sein. Spezialisiere dich im Laufe deiner Karriere auf die Schwerpunktthemen, die dir liegen und Spaß machen. Hier ein paar Beispiele:

  • Ein konkretes NoSQL-System
  • Ein spezifisches Java-Enterprise-Framework, wie Spring oder Jakarta EE
  • Fortgeschrittene Java-Themen wie Concurrency, Garbage Collection, Memory Management, Reflection

Und verliere nicht den Blick über den Tellerrand! Behalte immer einen Überblick darüber, was um deine Spezialgebiete herum passiert. Kenne auch andere NoSQL-Systeme und deren Unterschiede zu deinem Favoriten. Wenn du Spring-Experte bist, bleib über die Jakarta EE-Entwicklung auf dem Laufenden (und umgekehrt).

Investiere in deine Bildung

Investiere in dich, deine Bildung, deine Zukunft. Nicht nur Zeit, sondern auch Geld.

Nimm auch kostenpflichtige Angebote wahr, z. B. die Teilnahme an Kursen. Ich kann sowohl Online- als auch Classroom-Kurse empfehlen.

Online-Kurse haben den Vorteil, dass du das Tempo selbst bestimmst und dass sie oft erschwinglicher sind als Classroom-Kurse.

Classroom-Kurse haben den Vorteil, dass du aus deinem Programmiereralltag herauskommst und dich bis zu mehrere Tage lang auf das Lernen fokussieren kannst.

Du selbst hast die Verantwortung für deine Zukunft! Schiebe sie nicht auf deinen Arbeitgeber. Wenn er dir Schulungen ermöglicht, ist das sehr gut. Wenn nicht, dann mach sie trotzdem – auch auf eigene Kosten!

Tipp

Da ich keine eigenen Kurse im Angebot habe, empfehle ich dir die fortgeschrittenen Java-Kurse von Heinz Kabutz, Autor des berühmten JavaSpecialists-Newsletters.

(Ich bekomme für diese Empfehlung keine Provision. Ich empfehle die Kurse, weil ich sie selbst alle intensiv durchgearbeitet habe und dabei sehr, sehr viel gelernt habe.)

Zusammenfassung

Hier noch einmal die drei Prinzipien zusammengefasst:

  1. Folge deiner Leidenschaft! Viele Programmierer haben auch außerhalb der Management-Laufbahn eine erfolgreiche Karriere.
  2. Begegne allen Menschen auf Augenhöhe. Höre über das hinaus, was sie sagen, und sei immer daran interessiert, was sie wirklich brauchen. Liefere es ihnen in exzellenter Qualität.
  3. Investiere in deine Zukunft: Lerne dein Leben lang. Kenne dein Handwerk und dessen Grundlagen in voller Breite, und spezialisiere dich auf einige wenige fortgeschrittene Themen.

Von diese Prinzipien haben ich mich die letzten Jahrzehnte leiten lassen. Ich bin überzeugt davon, dass ich meinen Erfolg diesen Prinzipien zu verdanken habe und dass sie auch dir zum Erfolg verhelfen können. Ich wünsche auch dir ein glücklicher Programmierer zu sein.

Happy Coding!

Svens Unterschrift