CodeGym /Kurse /JAVA 25 SELF /Der Weg eines Programmierers

Der Weg eines Programmierers

JAVA 25 SELF
Level 7 , Lektion 6
Verfügbar

1. Karriereleiter

Auch bei Entwicklerinnen und Entwicklern gibt es Abstufungen je nach Qualifikation. Früher verwendete man Begriffe wie „Coder“, „Programmierer“ und „Hacker“, heute nutzt man jedoch die englischen Bezeichnungen aus der US‑IT.

Für Entwicklerinnen und Entwickler gibt es 6 grundlegende Stufen:

  • Intern Software Engineer
  • Junior Software Engineer
  • Middle Software Engineer
  • Senior Software Engineer
  • TechLead
  • Principal Software Engineer

Von Land zu Land und sogar von Unternehmen zu Unternehmen können einige Parameter variieren, aber im Kern sieht es etwa so aus:

  • 🌱 Intern Software Engineer – das sind Praktikantinnen und Praktikanten. Sie befinden sich im Prozess des Erlernens der Programmierung, haben weder kommerzielle Erfahrung noch Erfahrung in großen Projekten. In der Regel arbeiten sie unter Aufsicht erfahrenerer Kolleginnen und Kollegen. Ihre Hauptaufgabe bei der Arbeit besteht darin, die Codebasis und die Grundlagen der Softwareentwicklung zu erlernen, einfache Codieraufgaben zu erledigen und beim Testen mitzumachen.
  • 🐣 Junior Software Engineer – sie sind bereits Entwicklerinnen und Entwickler, jedoch ohne ernsthafte Berufserfahrung oder mit weniger als einem Jahr Erfahrung. Sie arbeiten unter Anleitung erfahrenerer Entwicklerinnen und Entwickler, setzen Teile von Projekten um und nehmen an Code-Reviews teil. Diese Karrierestufe konzentriert sich auf die Vertiefung technischer Fähigkeiten und das Verständnis von Projektaufgaben.
  • 🦾 Middle Software Engineer (oder einfach Software Engineer): haben mehr Eigenständigkeit bei technischen Entscheidungen, sind für bedeutende Teile des Projekts verantwortlich, beginnen mit dem Mentoring weniger erfahrener Kolleginnen und Kollegen und beteiligen sich aktiver an Architektur-Diskussionen. Üblicherweise 2–5 Jahre Praxiserfahrung.
  • 🧑‍🔬 Senior Software Engineer: sind für die Konzeption und Umsetzung komplexer Systeme verantwortlich, sorgen für Mentoring und Führung innerhalb des Teams, beteiligen sich an der strategischen Projektplanung und vertreten das Team häufig in der Kommunikation mit Kundinnen/Kunden und anderen Stakeholdern. Üblicherweise 5–10 Jahre Erfahrung.
  • 🧠 TechLead: trägt die Verantwortung für das technische Endergebnis eines Projekts, führt die Entwicklung, löst die schwierigsten Aufgaben, stellt die Einhaltung technischer Standards sicher und koordiniert die Arbeit der Entwicklerinnen und Entwickler.
  • 🏆 Principal Software Engineer: arbeitet auf dem höchsten technischen Niveau, ist häufig an der Gestaltung der technischen Strategie des Unternehmens beteiligt, entwickelt innovative Lösungen und legt technische Standards fest, dient als wichtigste Mentorin bzw. wichtigster Mentor für technische Führungskräfte und ist Schlüsselfachperson bei komplexen technischen Fragestellungen.

Das ist interessant. Große Unternehmen können zusätzliche Rollen und Unterrollen haben. Zum Beispiel gibt es bei Google folgende Rollen:

  • Staff Software Engineer (L6): hat erheblichen Einfluss auf die technische Ausrichtung des eigenen Bereichs.
  • Senior Staff Software Engineer (L7): arbeitet an groß angelegten, komplexen Projekten und bestimmt die strategische Richtung der technologischen Entwicklung im Unternehmen.

2. LEGO-Produkte

Vor langer Zeit (1975) schrieb Niklaus Wirth, der Schöpfer der Programmiersprache Pascal, das Buch „Algorithmen + Datenstrukturen = Programme“. Seitdem hat sich vieles geändert. Ein modernes Softwareprodukt ist nicht mehr das, was es vor 10 Jahren war, und schon gar nicht das, was vor 20 Jahren war. Über 1975 müssen wir gar nicht reden – seitdem sind 50 Jahre vergangen ⏳

Der moderne Programmierer schreibt Programme nicht mehr von Hand. Man setzt sie eher aus fertigen Bausteinen (Bibliotheken) zusammen und schreibt Code, der diese Teile miteinander interagieren lässt 🧩. Moderne Softwareprodukte können aus Dutzenden bis Hunderten von Programmen bestehen. Einige davon laufen auf dem Computer der Nutzerinnen und Nutzer bzw. auf deren mobilen Geräten, der Großteil hingegen – auf Servern im Rechenzentrum.

Viele dieser Programme, etwa ein Webserver oder eine Datenbank, sind bereits geschrieben. Man muss sie nur korrekt konfigurieren, damit sie wie gewünscht funktionieren. Mit der Zeit kann der Konfigurationsprozess allerdings so komplex werden, dass er faktisch zur Entwicklung wird. 🤦‍♂️

Entwicklerinnen und Entwickler kämpfen ständig mit sich selbst. Anstatt ähnlichen Code immer wieder in verschiedenen Programmen zu schreiben, entwickeln sie Bibliotheken, die sich konfigurieren (anpassen) lassen, und binden sie dann überall dort ein, wo sie benötigt werden.

In den letzten 20 Jahren wurden von Entwicklerinnen und Entwicklern sehr viele Bibliotheken, Frameworks und Open‑Source‑Repositorys geschrieben – tatsächlich Millionen. Und heute gilt es als schlechter Stil, den gesamten Code von Grund auf neu zu schreiben. Stattdessen soll man ein Programm aus hochwertigen und bewährten Lösungen – Bibliotheken, Frameworks, Paketen und Modulen – zusammensetzen 🧱

Aber auch dieser Ansatz veraltet bereits. Der Trend der letzten 10 Jahre ist der Umzug in die Cloud, große Rechenzentren, die Ihren Programmen alles bereitstellen, was sie brauchen. Möchten Sie eine Datenbank? Davon gibt es Hunderte zur Auswahl. Wollen Sie einen seltenen, einzigartigen Webserver – gibt es auch! Jeder Wunsch – gegen Bezahlung.

3. „Ich bin Ingenieur“ © Elon Musk

img

Man muss komplexe und langweilige Dinge nicht mehr selbst schreiben. Wenn Sie eine bestimmte Funktionalität benötigen – dafür gibt es bereits fertige Bibliotheken und Frameworks. Ihre Aufgabe: a) von deren Existenz wissen, b) eine passende Variante finden (es gibt oft mehrere Alternativen mit unterschiedlicher Qualität und unterschiedlichen Nuancen), c) verstehen, wie man sie in das eigene Projekt integriert 🎓

Die Arbeit ist dadurch nur interessanter geworden. Jetzt können Sie neue Funktionalität zehnmal schneller in ein Produkt bringen. Vor 30 Jahren, wenn Sie einen Webserver brauchten, haben Sie ihn von Grund auf geschrieben. Vor 20 Jahren – gekauft, installiert und konfiguriert. Und heute – Sie gehen einfach ins Cloud‑Portal von Azure oder AWS und schalten den gewünschten Service ein 🌐

Das ist übrigens einer der Gründe für die Popularität von Java. Es eignet sich nicht nur hervorragend für die Entwicklung großer Unternehmenslösungen, sondern auch zum „Verkleben“ verschiedener Komponenten – über das reiche JVM‑Ökosystem gibt es Integrationen praktisch mit allem: Datenbanken, Microservices, REST‑APIs, Nachrichtensysteme, Cloud‑Dienste, Analyseplattformen.

Dementsprechend hat sich der Beruf Java Software Engineer längst in den Fullstack Java Developer verwandelt. Für moderne Entwicklerinnen und Entwickler ist es wichtig zu verstehen, wie eine Datenbank (PostgreSQL, MySQL/MariaDB, MongoDB u. a.) funktioniert, um die Zusammenarbeit sinnvoll zu gestalten. Man sollte verstehen, wie das Frontend (HTML, CSS, JavaScript/TypeScript, React, Angular) aufgebaut ist, um den Austausch mit dem Backend‑Teil in Java (Spring Boot, Micronaut, Quarkus) einzurichten. Und natürlich geht ohne Docker heute nichts mehr – das ist inzwischen Branchenstandard 🐳.

Moderne Entwicklung unterscheidet sich insgesamt stark von dem, was vor 20 Jahren war. Programmiererinnen und Programmierer schreiben höchstens 50 % ihrer Zeit Code – der Rest geht für das Lesen von Dokumentation, das Lernen neuer Technologien, das Entwerfen und die Teamarbeit in Meetings drauf. Einzelentwicklerinnen und ‑entwickler sind eher die seltene Ausnahme.

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION