Stage 1 of 7 · 10 lessons · ~6 months
Your language and how HTTP works
Get fluent in one backend language and its runtime, and learn exactly what happens between a client and your server. Everything later in this roadmap sits on these two things.
Start: The terminal and GitLessons· one lesson for each topic, in this order
- 1The terminal and GitLesson
- 2Java syntax, classes and interfacesLesson
- 3Collections and genericsLesson
- 4Exceptions and recordsLesson
- 5Maven or Gradle buildsLesson
- 6Threads and virtual threadsLesson
- 7DNS: from a name to an addressLesson
- 8TCP connections and TLSLesson
- 9HTTP requests, responses and headersLesson
- 10HTTP methods and status codesLesson
Start with· follow one of these
- GuideFreeDev.java: Learn Java
Oracle · Beginner
The official path through modern Java: records, collections, generics and exceptions
- CourseFreeJava Programming MOOC
University of Helsinki · Beginner
Free Helsinki course with hundreds of graded exercises, the best way to get fluent
Practise
Keep handy
Also worth your time
The DNS, TCP, TLS and HTTP steps behind every request your backend will handle
Before moving on: Write a small Java command line tool built with Maven or Gradle, with JUnit tests, push it to GitHub in sensible commits, and explain every line of output from curl -v against a real website.

Learn modern Java (17 or later: records, switch expressions, var) and skip old tutorials full of boilerplate. Get comfortable with collections and generics before Spring, because Spring hides a lot of Java behind annotations.