Also beim Thema Backend kommen direkt sehr viele Themen, die Du Dir anschauen solltest:
- Ja, Entwurfsmuster sind wichtig. Aber bitte direkt mit Bezug zur Praxis. Irgend welche Theorie anzuschauen und dann nicht zu verwenden führt dann nur zu sowas:
denn das habe ich alles vergessen.
Also wirkliches Doing, dann vergisst man das auch nicht.
Ein Buch, das immer wieder empfohlen wird: "Entwurfsmuster von Kopf bis Fuss"
- Dann sind Unit Tests sehr wichtig. Also schau Dir Test Driven Development (TDD) einmal an. Buchempfehlung wäre da von mir Kent Beck mit "Test Driven Development by example"
- Mit den Unit Tests sind wir bereits in der Thematik Clean Code. Da wäre dann Uncle Bob zu nennen. Gibt dazu auch einige Videos auf YouTube und ich habe da mal eine Playlist zusammen gestellt um die zu sammeln:
Solid Principles by Uncle Bob Martin (youtube.com)
Aber ansonsten natürlich von ihm die ganzen "Clean ..." Bücher: Robert C Martin mit Clean Code, Clean Architecture, ...
Und wenn es um das praktische Erlernen geht:
www.clean-code-developer.de mit den Graden und auf jedem Grad ein paar ausgewählte Prinzipien und Praktiken.
- Datenbanken wurden schon erwähnt. Hier dann halt die Grundlagen (also relationale Datenbanken, dokumentenorientierte Datenbanken ...) aber dann auch die Zugriffe darauf (Also angefangen mit direkten JDBC Abfragen aber dann schnell auch Richtung JPA / Hibernate und dann Nutzung in Frameworks wie Spring oder Quarkus.
- Im Backend ist aus meiner Sicht wichtig, dass man sich auch etwas mit den verwendeten Technologien / Protokollen auskennt. Also so Dinge wie HTTP. Darauf bauen dann auch Dinge wie REST Webservices auf ... Aber in das Themengebiet fallen dann auch Dinge wie z.B. Möglichkeiten, eine Anmeldung zu machen (Basic Auth, OAUTH, ...)
- Frameworks sind schon angeklungen. Da sollte man sich eines aussuchen und das etwas vertiefen. Dabei ist es aus meiner Sicht fast egal, was man nutzt: Jakarta EE, Spring Boot, Quarkus, ... Such Dir eines aus und erarbeite es.
- Architekturen sind auch ein wichtiges Themengebiet. Da wären Schlagworte sowas wie Microservices oder Domain Driven Design.
- Verwendete Technologie: Hier sehe ich zum einen ci/cd Pipelines aber auch die Fragestellung: Wie soll denn später die erstellte Software laufen? Da kommen dann Themen wie Docker und Kubernetes in Frage (also eine Option).
Ich würde somit eher keine neuen Sprachen erlernen sondern bei einer Sprache bleiben und da dann entsprechend vertiefen. Dabei ist es relativ egal, welche Sprache Du nutzt. Java im Backend ist garantiert nicht schlecht und damit machst Du nichts falsch.
Und wenn Du eine Sprache gewählt hast: Vertiefe / meistere diese. Bei Java fällt mir da z.B. direkt Effective Java von Joshua Bloch ein.
Aber auch Themen wie Build Tools (Maven oder Gradle), Entwicklungsumgebungen, ...
(Entwicklungsumgebungen mein nicht, alle möglichen IDEs zu kennen sondern wirklich den Umgang mit einer zu meistern. Da gibt es halt viele Aspekte, denn die IDEs bieten halt sehr viel Unterstützung und es gibt sehr viele Plugins wie z.B. SonarLint...)
Das wäre eine Liste, die mir so direkt einfallen würde und die schon recht gut aufzeigt, welche Bereiche man alles behandeln müsste, wenn man später im Bereich Backend aktiv sein möchte und die ich als notwendig ansehen würde.
Prioritäten sind schwer zu nennen. Man kann ggf. direkt einsteigen mit einem Framework wie Spring Boot und dann parallel an so Dingen wie Clean Code und Entwurfsmuster arbeiten. Das hat den Vorteil, dass man direkt mit der Praxis einsteigt. Denn ganz wichtig: Ohne Praxis geht es nicht.
Und die Themen Interpreter oder Compiler würde ich hier komplett fallen lassen. Das sind Dinge, die Dich im Backend Bereich nicht wirklich voran bringen dürften.