6.1 Karriereleiter
Auch Programmierer haben je nach Qualifikation Abstufungen. Früher wurden Begriffe wie „Coder“, „Programmierer“ und „Hacker“ verwendet, aber heute sind alle auf amerikanische IT-Bezeichnungen umgestiegen.
Für Entwickler gibt es 6 Hauptabstufungen:
- Intern Software Engineer
- Junior Software Engineer
- Middle Software Engineer
- Senior Software Engineer
- Tech Lead
- Principal Software Engineer
Die Parameter können je nach Land etwas abweichen, aber das Grundprinzip ist ähnlich:
Intern Software Engineer — das sind Praktikanten. Sie sind noch im Lernprozess des Programmierens, haben weder kommerzielle Erfahrung noch Erfahrung in großen Projekten. In der Regel arbeiten sie unter der Aufsicht erfahrenerer Kollegen. Ihre Hauptaufgabe bei der Arbeit besteht darin, den Codebase und die Grundlagen der Softwareentwicklung zu lernen, einfache Codierungsaufgaben zu erfüllen und an Tests teilzunehmen.
Junior Software Engineer — das sind bereits Programmierer, aber ohne ernsthafte kommerzielle Erfahrung oder mit weniger als einem Jahr Erfahrung. Sie arbeiten unter der Anleitung erfahrenerer Entwickler, setzen Projektteile um und nehmen an Code-Reviews teil. Diese Karrierephase konzentriert sich auf die Vertiefung technischer Fähigkeiten und das Verständnis von Projektaufgaben.
Middle Software Engineer (oder einfach Software Engineer): haben mehr Autonomie bei technischen Entscheidungen, sind verantwortlich für bedeutende Projektabschnitte, beginnen mit der Betreuung weniger erfahrener Kollegen und nehmen aktiver an Architekturgesprächen teil. In der Regel haben sie 2–5 Jahre praktische Erfahrung.
Senior Software Engineer: sind verantwortlich für das Design und die Implementierung komplexer Systeme, bieten Mentoring und Führung innerhalb des Teams, beteiligen sich an der strategischen Projektplanung und vertreten häufig das Team in der Kommunikation mit Kunden und anderen Stakeholdern. In der Regel haben sie 5–10 Jahre Erfahrung.
TechLead: als technischer Leiter sind sie für das endgültige technische Ergebnis des Projekts verantwortlich, leiten die Entwicklung, lösen die schwierigsten Aufgaben, stellen die Einhaltung technischer Standards sicher und koordinieren die Aktivitäten der Entwickler.
Principal Software Engineer: arbeitet auf dem höchsten technischen Niveau, oft an der Gestaltung der technischen Strategie des Unternehmens beteiligt, entwickelt innovative Lösungen und setzt technische Standards, dient als Hauptmentor für technische Führungskräfte und ist ein Schlüsselexperte in komplexen technischen Fragen.
Große Unternehmen können zusätzliche Rollen und Unterrollen haben. Zum Beispiel gibt es bei Google solche Rollen:
- Staff Software Engineer (L6): hat einen erheblichen Einfluss auf die technische Politik seiner Abteilung.
- Senior Staff Software Engineer (L7): arbeitet an umfangreichen und komplexen Projekten, bestimmt die strategische Richtung der technologischen Entwicklung im Unternehmen.
6.2 Lego-Produkte
Vor langer Zeit (1975) schrieb Niklaus Wirth, der Schöpfer der Sprache Pascal, ein Buch namens „Algorithmen + Datenstrukturen = Programme“. Seitdem hat sich viel geändert.
Ein modernes Softwareprodukt ist nicht mehr das, was es vor 10 Jahren war und schon gar nicht das, was es vor 20 Jahren war. Über 1975 brauchen wir gar nicht zu sprechen: seitdem sind 50 Jahre vergangen.
Ein moderner Programmierer schreibt keine Programme mehr manuell. Er setzt sie vielmehr aus fertigen Teilen (Bibliotheken) zusammen und schreibt Code, der diesen Teilen hilft, miteinander zu interagieren.
Moderne Softwareprodukte können aus Dutzenden und Hunderten von Programmen bestehen, von denen einige auf dem Computer des Benutzers, auf dessen mobilen Geräten laufen, der Großteil jedoch auf Servern in Rechenzentren.
Viele dieser Programme, wie Webserver oder Datenbanken, sind bereits geschrieben. Sie müssen einfach richtig konfiguriert werden, damit sie richtig funktionieren. Obwohl dieser Konfigurationsprozess im Laufe der Zeit so kompliziert werden kann, dass er sich de facto in Entwicklung verwandelt. 🤦♂️
Programmierer kämpfen ständig mit sich selbst. Anstatt denselben Code immer wieder in verschiedenen Programmen zu schreiben, erstellen sie Bibliotheken, die auf ihre Bedürfnisse angepasst (konfiguriert) werden können, und binden sie einfach an allen erforderlichen Stellen ein.
In den letzten 20 Jahren haben Programmierer sehr viele Bibliotheken, Frameworks und Open-Source-Repositories erstellt. Es gibt Millionen davon. Und jetzt gilt es als schlechter Stil, den gesamten Code von Grund auf neu zu schreiben. Stattdessen sollst du ein Programm aus qualitativ hochwertigen und erprobten Lösungen zusammenstellen — Bibliotheken, Frameworks, Pakete und Module.
Doch auch dieser Ansatz wird bereits altmodisch. Der Trend der letzten 10 Jahre ist der Umzug in die Cloud — große Rechenzentren, die deinen Programmen alles bieten, was sie brauchen. Willst du eine Datenbank? Wir haben Hunderte zur Auswahl. Möchtest du einen seltenen einzigartigen Webserver — den habe ich. Jeder Wunsch für dein Geld.
6.3 „Ich bin Ingenieur“ (c) Elon Musk
Es ist nicht länger notwendig, komplizierte und langweilige Sachen zu schreiben. Wenn du jetzt eine coole komplizierte Funktionalität benötigst, gibt es immer eine Bibliothek dafür. Du musst nur: a) wissen, dass sie existiert, b) die richtige finden (es kann Dutzende von Varianten unterschiedlicher Qualität geben), c) herausfinden, wie man sie in dein Projekt integriert.
Die Arbeit ist durch diesen Ansatz nur noch interessanter geworden. Jetzt kannst du 10 Mal schneller neue Funktionalitäten in ein Produkt einfügen. Vor 30 Jahren, wenn du einen Webserver benötigtest, musstest du ihn schreiben. Vor 20 Jahren — kaufen, installieren und konfigurieren. Und jetzt — einfach ins Cloud-Admin-Panel gehen und einschalten.
Das ist übrigens einer der Gründe für die Beliebtheit von Frontend. Ein komplexer Backend kann jetzt mit JavaScript unter Verwendung von Node.js geschrieben werden oder du „schaltest“ einfach verschiedene Dienste in Cloud-Rechenzentren ein. Frontend ist nicht so stark von den Einschränkungen des Backends abhängig geworden und hat sich voll entfaltet. Und gemessen an seiner Beliebtheit macht es seinen Job hervorragend.
Und die Berufsbezeichnung hat sich von Frontend-Entwickler zu Frontend Fullstack Software Engineer gewandelt. Ein moderner Frontend-Entwickler sollte verstehen, wie eine Datenbank funktioniert, um korrekt damit arbeiten zu können. HTML & JavaScript, NginX kennen, um die Arbeit des Frontends mit dem Backend zu konfigurieren. Und Docker ist ein Muss — das ist jetzt einfach ein Branchenstandard.
Die moderne Entwicklung sieht überhaupt nicht mehr so aus wie vor 20 Jahren. Ein moderner Programmierer schreibt Code nicht mehr als 50 % seiner Zeit. Die restliche Zeit liest er Dokumentationen, lernt neue Technologien und nimmt an Meetings (Besprechungen) teil. Einzelkämpfer-Programmierer sind längst Geschichte.
GO TO FULL VERSION