Das Unternehmen gibt dir keine Wahl
„Man sagt, Python sei heutzutage Trend. Sollen wir auch Python nutzen?“ Kann ein neuer Entwickler so etwas im Unternehmen sagen? Unmöglich.
Vor der Einstellung konnte ich meine Sprache selbst wählen. Ich nutzte Python, weil es bei Coding Challenges (Tests) vorteilhaft war, und vertiefte mich in Java, weil es hieß, damit finde man leicht einen Job im Web-Bereich. Aber die Realität in dem kleinen Team, in das ich nach dem harten Bewerbungsprozess kam, sah anders aus.
Der Tech-Stack des Unternehmens stand bereits fest. Der Legacy-Code lief auf Java (Spring Boot), die Oberfläche wurde mit JavaScript (Vue.js) gezeichnet, und plötzlich landete auch noch die Wartung einer Android-App auf meinem Tisch, sodass ich XML und ein anderes Java anfassen musste.
Ich habe das nicht gewählt. Die Umgebung (Framework) hat mir diese Sprachen aufgezwungen. Anfangs hatte ich Angst vor der Flut an fremden Sprachen und Syntaxen. Aber als ich mich durch den Code kämpfte, realisierte ich eine wichtige Tatsache:
„Huch? Das ist doch genau das gleiche Konzept wie damals in Java?“

Grammatik ist anders, das Wesen ist gleich (Concept Transfer)
Während des Studiums hatte ich C nur kurz gestreift und mich dann tief in Java eingegraben. Als die Bewerbungsphase begann, hörte ich in der Community: „Python ist der König bei Coding Challenges“, also schlug ich zum ersten Mal ein Python-Buch auf.
Anfangs war die Syntax fremd, aber überraschenderweise gewöhnte ich mich innerhalb weniger Tage daran. Nicht, weil Python einfach war. Sondern weil ich durch Java bereits das ‚Wesen der Programmierung‘ verstanden hatte.
- Python List: „Moment mal, das ist doch einfach Javas
ArrayListgemischt mitStackundQueue?“ - Python Dictionary: „Das ist doch exakt wie Javas
HashMap. Speicherung als Key-Value-Paare.“
Ich lernte die neue Sprache nicht von ‚Null‘ an. Es war eher so, als würde ich auf meiner mentalen ‚Java-Landkarte‘ einfach neue ‚Python-Ortsnamen‘ eintragen. In der Pädagogik nennt man das ‚Transferlernen‘ (Transfer of Learning). Je tiefer man eine Sprache beherrscht, desto schneller versteht man andere Sprachen.
Auch UI ist am Ende eine Baumstruktur (Tree)
Diese Erfahrung zahlte sich auch in völlig anderen Bereichen aus. Als Student hatte ich mir mit der Erneuerung der Uni-Homepage etwas Taschengeld verdient und dabei HTML und CSS angefasst. Damals dachte ich nicht, dass das meiner Entwicklerkarriere helfen würde.
Doch nach dem Jobeinstieg musste ich plötzlich die UI der Android-App anpassen. Android nutzt XML als Markup-Sprache für die UI. Da es meine erste Mobile-App war, war ich nervös, aber als ich den Code öffnete, musste ich lachen.
<!-- Android XML -->
<LinearLayout orientation="vertical">
<TextView text="Hello World" />
<Button text="Click Me" />
</LinearLayout>
<!-- HTML -->
<div style="display: flex; flex-direction: column;">
<span>Hello World</span>
<button>Click Me</button>
</div>
Nur die Tag-Namen waren anders. Die Struktur – „Kind-Elemente in ein Eltern-Element packen und mit Attributen das Layout bestimmen“ – war exakt dieselbe wie in HTML. Da ich den DOM-Tree und das Box-Modell verstanden hatte, konnte ich auch das Android-Layout schnell meistern.

Frameworks hat mir die Uni nicht beigebracht
Was mich tatsächlich mehr verwirrte als die Sprache, war die Existenz von ‚Frameworks‘. In der Uni lernte ich nur ‚Basiskondition‘ wie C-Syntax, Datenstrukturen, Algorithmen und Sprachtheorie. Natürlich hatte ich Namen wie ‚React‘ oder ‚Spring‘ gehört. Weil alle sagten „React ist das Beste“, kaufte ich mir sogar blind ein Buch.
Aber ich legte es weg, bevor ich die Hälfte gelesen hatte. Ich verstand einfach nicht, warum man den Code so schreiben muss. „Warum kann ich nicht einfach eine Funktion erstellen und aufrufen? Warum muss ich eine Component erben und alles in eine render-Funktion packen? Warum habe ich keine Kontrolle?“
Damals kannte ich den entscheidenden Unterschied zwischen ‚Bibliothek (Library)‘ und ‚Framework‘ nicht.
- Was die Uni lehrte (Library-Stil): Ich schreibe den Code und hole mir Werkzeuge (Funktionen), wenn ich sie brauche. (Hausbau nach eigenem Plan)
- Was die Firma nutzt (Framework-Stil): Das Werkzeug (Framework) ruft mich. Ich muss meinen Code nur in die vorgegebenen Lücken füllen. (Montage eines Fertighauses)
Wenn das Studium lehrte, wie man frei mit dem Hammer umgeht, dann war das Framework in der Praxis wie eine riesige Fabrik, die sagt: „Wir hämmern, du steckst nur den Nagel in dieses Loch.“ Da ich das Konzept der ‚Umkehrung der Steuerung‘ (Inversion of Control – IoC) nicht kannte, wirkte das Buch wie Alien-Sprache auf mich.
Kennst du die Sprache, siehst du das Framework
Aber als ich in die Praxis geworfen wurde und gezwungen war, Frameworks zu nutzen, stieß ich auf eine paradoxe Wahrheit. Egal welch komplexe Magie Spring Boot wirkt, am Ende besteht es aus ‚Java-Code‘.
Die @Autowired-Annotation, die wie Magie Abhängigkeiten injiziert, ist im Grunde eine Anwendung der Java-Reflection-Technologie. Das reaktive System von Vue.js nutzt auch nur JavaScript-Objekte und Property-Überwachung.
‚Wenn die Sprache (Basis) stark ist, durchschaut man die Funktionsweise des Frameworks (Anwendung).‘
Ich stürzte mich ohne Wissen über die MVC-Struktur von Spring in den Job, aber dank meines Java-Verständnisses konnte ich mich schnell anpassen: „Ah, das Framework führt meinen Code für mich aus. Ich muss ihm nur die Objekte nach diesen Regeln hinwerfen.“ Hätte ich damals, als ich das React-Buch weglegte, solidere ‚JavaScript-Grundlagen‘ gehabt, hätte ich verstanden, warum React so aussieht, wie es aussieht.
[Tipp] Ein Rezept für unentschlossene Studenten
„Welche Sprache soll ich lernen?“ Das ist eine der häufigsten Fragen in der Community. Man muss nicht ein Leben lang nur eine Sprache oder ein Framework nutzen. Aber paradoxerweise gilt: Um viele gut zu können, muss man zuerst ‚eines richtig tief graben‘.
Wenn du ein Student bist, der sich nicht entscheiden kann, schlag die Bücher zu und öffne sofort eine ‚Jobbörse‘.
- Suche die Stellenanzeige (Job Description) einer Firma, zu der du willst, oder die dir gefällt.
- Wähle einen dort genannten ‚Tech-Stack (Sprache & Framework)‘ aus.
- Lerne diesen einen Stack wirklich tiefgehend.
„Diese Firma nutzt Spring, aber jene nutzt Node.js, was soll ich tun?“ Das ist egal. Lerne irgendetwas richtig. Wie gesagt, das Wesen der Programmierung ist übertragbar. Wer Spring gemeistert hat, passt sich schnell an, auch wenn die Firma Node.js verlangt. Aber wer überall nur mal reingeschnuppert hat, wird bei jedem neuen Framework wieder ganz unten anfangen müssen. Statt zu grübeln, wähle eine Technologie, die der Markt verlangt, und grabe tief. Das ist der schnellste Weg.
[Code Verification] Die Sprache ist anders, der Speicher ist gleich
Lass uns im Code bestätigen, dass im Computer das Gleiche passiert, auch wenn die Sprachen verschieden sind. Javas ArrayList und Pythons list haben unterschiedliche Syntax, aber die Art und Weise, wie sie den Speicher vergrößern (Dynamic Array), ist identisch.
Java:
// Java: Wenn voll, vergrößere um das 1,5-fache und ziehe um.
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
// Intern: Array erstellen -> Daten hinzufügen -> Wenn Platz fehlt, größeres Array erstellen und kopieren
Python:
# Python: Wenn voll, vergrößere um ca. das 1,125-fache + X und ziehe um.
my_list = []
my_list.append(1)
# Die interne Logik ist fast identisch mit Java (nutzt Array-Reallocation-Logik von C)
Egal welche Sprache wir nutzen, die Arbeitsweise des digitalen Logistikzentrums (Computer) ändert sich nicht. Die Regeln, wie der Arbeiter (CPU) das Lager (Speicher) nutzt, sind universell.
Fazit: Neugier statt Angst
Im Leben eines Entwicklers kommt zwangsläufig der Moment, in dem man eine ungewollte Sprache oder ein Framework nutzen muss. Wirst du dann weglaufen und sagen: „Ich bin Java-Entwickler, ich hasse Python“?
Sprache ist keine Religion, sondern ein ‚Werkzeug‘. Und das Framework ist die ‚Werkstatt‘, in der wir dieses Werkzeug nutzen. Wer die Erfahrung gemacht hat, eine Sprache (Muttersprache) tief zu durchdringen, lernt die Handhabung neuer Werkzeuge im Nu.
Also hab keine Angst, wenn dir die Firma morgen einen fremden Tech-Stack aufzwingt. Nur die Hülle ist anders, der Kern darin ist derselbe, den du bereits kennst. Da wir nun die Angst vor Sprachen beseitigt haben, tauchen wir im nächsten Beitrag tief in die echte Welt ein, in der der Code lebt: in den ‚Speicher (Memory)‘. Wenn du weißt, wo dein Code im RAM steckt und wie er dort rollt, wird die Barriere der Sprachen noch niedriger werden.