CodeGym /Kurse /C# SELF /Der Weg des Programmierers

Der Weg des Programmierers

C# SELF
Level 7 , Lektion 6
Verfügbar

1. Karriereleiter

Programmierer haben ebenfalls Abstufungen je nach Qualifikation. Früher wurden Begriffe wie „Coder“, „Programmierer“ und „Hacker“ verwendet, aber heute greifen alle auf englische Bezeichnungen aus der amerikanischen IT zurück.

Für Entwickler gibt es 6 Hauptstufen:

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

Je nach Land und sogar Unternehmen können einige Parameter variieren, aber die Grundidee ist ungefähr folgende:

  • 🌱 Intern Software Engineer — das sind Praktikanten. Sie befinden sich im Lernprozess des Programmierens, haben keine kommerzielle Erfahrung und keine Erfahrung mit großen Projekten. Normalerweise arbeiten sie unter Anleitung erfahrener Kollegen. Ihre Hauptaufgabe ist es, die Codebasis und die Grundlagen der Softwareentwicklung zu lernen, einfache Codierungsaufgaben zu erledigen und am Testing teilzunehmen.
  • 🐣 Junior Software Engineer — das sind bereits Programmierer, aber ohne ernsthafte kommerzielle Erfahrung oder weniger als ein Jahr Erfahrung. Arbeiten unter Anleitung erfahrener Entwickler, implementieren Teile von Projekten und nehmen an Code-Reviews teil. Diese Phase der Karriere konzentriert sich auf die Vertiefung technischer Fähigkeiten und das Verständnis der Projektaufgaben.
  • 🦾 Middle Software Engineer (oder einfach Software Engineer): haben mehr Eigenständigkeit bei technischen Entscheidungen, sind verantwortlich für bedeutende Projektteile, beginnen Mentoring für weniger erfahrene Kollegen und beteiligen sich aktiv an Architektur-Diskussionen. Normalerweise haben sie 2–5 Jahre praktische Erfahrung.
  • 🧑‍🔬 Senior Software Engineer: sind verantwortlich für die Planung und Umsetzung komplexer Systeme, bieten Mentoring und Leitung innerhalb des Teams, nehmen an der strategischen Projektplanung teil und vertreten das Team im Kontakt mit Kunden und anderen Stakeholdern. Normalerweise haben sie 5–10 Jahre Erfahrung.
  • 🧠 TechLead: trägt die Verantwortung für das endgültige technische Ergebnis des Projekts, leitet die Entwicklung, löst die schwierigsten Aufgaben, sorgt für die Einhaltung technischer Standards und koordiniert die Entwickler.
  • 🏆 Principal Software Engineer: arbeitet auf höchstem technischen Niveau, ist oft an der Entwicklung der technischen Strategie des Unternehmens beteiligt, entwickelt innovative Lösungen und setzt technische Standards. Er dient als Hauptmentor für technische Leiter und ist ein Schlüssel-Experte bei komplexen technischen Fragen.

Das ist interessant. Bei großen Firmen gibt es manchmal zusätzliche Rollen und Unterrollen. Zum Beispiel bei Google:

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

2. Lego-Produkte

Vor langer Zeit (1975) schrieb Niklaus Wirth, der Schöpfer der Pascal-Sprache, das Buch „Algorithms + Data Structures = Programs“. Seitdem hat sich vieles verändert. Das moderne Softwareprodukt ist nicht mehr das, was es vor 10 Jahren war, und schon gar nicht das, was vor 20 Jahren war. Über 1975 braucht man gar nicht erst zu sprechen — seitdem sind 50 Jahre vergangen ⏳

Der moderne Programmierer schreibt keine Programme mehr manuell. Er setzt sie eher aus fertigen Komponenten (Libraries) zusammen und schreibt Code, der diese Komponenten miteinander interagieren lässt🧩. Moderne Software kann aus Dutzenden und Hunderten von Programmen bestehen. Einige laufen auf dem Computer des Nutzers, auf seinen mobilen Geräten, der Großteil aber auf Servern in Rechenzentren.

Viele dieser Programme, wie Web-Server oder Datenbanken, sind bereits geschrieben. Sie müssen nur richtig konfiguriert werden, damit sie funktionieren, wie sie sollen. Mit der Zeit kann der Konfigurationsprozess so komplex werden, dass er fast zur Entwicklung wird. 🤦‍♂️

Programmierer kämpfen ständig mit sich selbst. Anstatt wieder ähnlichen Code in verschiedenen Programmen zu schreiben, entwickeln sie Libraries, die konfigurierbar sind (an die eigenen Bedürfnisse anpassbar), und binden sie dann in alle erforderlichen Stellen ein.

In den letzten 20 Jahren wurden sehr viele Libraries, Frameworks und Open-Source-Repositories geschrieben. Es sind wirklich Millionen. Und jetzt gilt es als schlechter Stil, alles von Grund auf neu zu programmieren. Stattdessen sollte man eine Anwendung aus hochwertigen, bewährten Lösungen zusammenstellen — Libraries, Frameworks, Packages und Modules 🧱

Doch auch dieser Ansatz wird zunehmend veraltet. Der Trend der letzten 10 Jahre ist der Umzug in die Clouds, große Rechenzentren, die deinen Programmen alles bieten, was sie brauchen. Willst du eine Datenbank? Wir haben Hunderte zur Auswahl. Willst du einen seltenen, einzigartigen Web-Server? Gibt es auch! Jeder Wunsch gegen Bezahlung.

3. „Ich bin Ingenieur“ © Elon Musk

img

Es ist nicht mehr nötig, komplexe und langweilige Sachen selbst zu schreiben. Wenn du eine Funktionalität brauchst — dafür gibt es bereits fertige Libraries und Frameworks. Deine Aufgabe: a) über ihre Existenz Bescheid wissen, b) die passende Variante finden (es gibt oft mehrere, mit unterschiedlichen Qualitäten und Nuancen), c) verstehen, wie man sie in das eigene Projekt integriert 🎓

Dadurch wird die Arbeit nur interessanter. Jetzt kannst du 10-mal schneller neue Funktionen zum Produkt hinzufügen. Vor 30 Jahren hast du, wenn du einen Web-Server brauchte, ihn von Grund auf geschrieben. Vor 20 Jahren hast du ihn gekauft, installiert und konfiguriert. Und heute? Einfach im Cloud-Portal Azure oder AWS einloggen und den gewünschten Service aktivieren 🌐

Das ist übrigens einer der Gründe, warum C# so beliebt ist. Es eignet sich nicht nur für die Entwicklung großer Lösungen, sondern auch zum „Kleben“ verschiedener Komponenten — über .NET gibt es Integrationen mit fast allem, sei es Datenbanken, Microservices, REST API, Message Queues oder Cloud-Services.

Entsprechend hat sich auch der Beruf des C#/.NET-Entwicklers schon lange in einen Fullstack .NET Software Engineer verwandelt. Für moderne Entwickler ist es wichtig zu verstehen, wie Datenbanken (SQL Server, PostgreSQL, MongoDB usw.) funktionieren, um die Interaktion richtig aufzubauen. Man muss wissen, wie Frontend (HTML, CSS, JavaScript/TypeScript, Blazor) funktioniert, um die Kommunikation mit dem Backend in C# zu konfigurieren. Und natürlich ist Docker heute Standard in der Branche. 🐳

Moderne Entwicklung unterscheidet sich grundsätzlich sehr von der vor 20 Jahren. Ein Programmierer schreibt nur noch etwa 50 % seiner Zeit Code, der Rest geht für Dokumentation, das Lernen neuer Technologien, Design und Teamarbeit in Meetings drauf. Einzelkämpfer sind schon eher die Ausnahme.

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