14 stages · 163 topics · 91 core
Roadmap

Become a backend engineer.

All fifteen stages. The complete arc — what HTTP is doing, how to pick a database, what makes distributed systems hard, and how to walk into a design interview and not freeze. Start here if you're not sure. Each topic links to a Semicolony deep dive, simulator, or handbook entry where one exists, and to a curated external resource where it doesn't. Follow the arc in order, or jump to wherever you're stuck.

FOUNDATIONSPRINCIPLESBUILD & SECURESCALE & DISTRIBUTEDESIGNGoJS/TSRustPythonJava010203040506070809101112131415startbackend engineer
Core (the spine) Recommended (strong upside) Optional (pick if relevant)

Path
Level

Core plus the recommended layer. The optional stops stay hidden — they pay off after you've shipped a couple of production services.


Jump to a stage

01
Stage

The internet & HTTP

What actually happens when you type a URL.

Most backend confusion comes from missing this layer. Before you can debug a 502 in production or pick sensibly between gRPC and REST, you need a real picture of what a packet does between your machine and the origin server. DNS, TCP, TLS, then HTTP, and the response coming back the same way.

02
Stage

OS & networking foundations

Where requests turn into syscalls.

Processes, threads, file descriptors, memory pages. When a service is misbehaving at two in the morning, the engineers who can fix it usually share the same superpower: they know what the kernel is actually doing underneath the runtime.

03
Stage

Version control

How code moves through time and across people.

Git, in practice. The basic commands are an afternoon. The mental model of the commit DAG, plus the difference between rebase, cherry-pick, and revert, is what you actually need the day a deploy breaks and you have to rewind a release branch with the team watching.

04
Branch · pick one

Pick a language

Depth in one beats breadth in five.

Backend roles ask for fluency in one of these, not all five. Go is the pragmatic default. Rust if you want the safest concurrency story and can afford the steeper curve. Node when sharing code with the web tier matters; Java, Python, and C# still run most of the enterprise stack. Pick the one you can defend in an interview. The others can come later.

05
Stage

Design principles & patterns

How to make code that doesn't rot.

The shared vocabulary every code review runs on. SOLID isn't about reciting five letters. It's about hearing "this violates Open-Closed" in a pull request and seeing what the reviewer means without breaking stride. Same with KISS, YAGNI, DRY, the twelve-factor app, and the patterns book on every senior shelf.

06
Stage

APIs & protocols

How services talk to each other.

REST is the default; every modern stack also has at least one of gRPC, GraphQL, or WebSockets in it. Each one's shaped for a different problem. Knowing what each costs in latency, bytes on the wire, and operational surface, plus when to reach for it, is the difference between an architecture that ages well and one that bends under its own weight at year three.

07
Stage

Databases

Where state lives, and what makes it hard.

The choice that's hardest to undo. Know the spectrum from a single Postgres on RDS to a sharded distributed store with secondary indexes. More importantly, know the signals that tell you it's time to move up that spectrum. Migrate too early and you've added complexity for nothing. Migrate too late and you're looking at a six-month outage backlog.

08
Stage

Caching, layered

From a hashmap to a global edge fabric.

Every fast system caches at four or five layers. Picking which layer to cache at, deciding what your TTL actually means, and recovering when a popular key expires and fifty thousand requests hit the origin in the same second: those are the operational skills that turn a snappy product into one that survives a launch.

09
Stage

Web security

The threats most backend incidents come from.

You won't become a security expert from this page. Security is its own seven-year apprenticeship. The goal here is more modest: know enough of OWASP, OAuth, CORS, JWT, and the basics of crypto to not be the engineer who shipped the bug that landed the company in the press.

10
Stage

Testing & quality

The tests that actually catch bugs.

The test framework matters less than the habits. Two rules go a long way: write the test before the fix, and weight integration tests heavier than unit tests. Unit tests catch the bugs you imagined; integration tests catch the bugs your customers actually find.

11
Stage

Containers & orchestration

The shape every production deploy ends up in.

Docker is universal; Kubernetes is what most production stacks run on. You can be productive with both at a surface level in a few weeks. Knowing what's happening underneath (namespaces, cgroups, the kubelet, the scheduler) is what saves you the day a pod won't start and the logs aren't helpful.

12
Stage

Going horizontal

When one box stops being enough.

The handful of techniques that turn "works on my laptop" into "works at a million requests per second." Load balancing, sharding, replication, autoscaling, edge. Each one solves a real problem and adds three new ones. Knowing the trade-offs is what separates engineers who scale systems from engineers who just add more boxes.

13
Stage

Distributed systems

When your single service becomes a cluster.

The point where backend engineering stops being mostly about correctness and starts being about correctness under failure. Consensus, replication, ordering, idempotence. Every senior loop reaches for at least three of these. The return on investment for time spent here is enormous.

14
Stage

Observability

Knowing what your system is doing, in production.

Three signals (logs, metrics, traces) plus two methodologies (USE for resource saturation, RED for request health). Together they cover most of what an on-call rotation actually needs. The harder skill isn't the tooling; it's instrumenting your service ahead of the incident so the data is already there when you go looking.

15
Stage

System design: putting it all together

The interview, and the day job.

Reading about components and designing with them are different skills. You build the second one the same way you'd learn chess: work through the canonical problems out loud: chat, feed, URL shortener, object storage. Defend every choice. The book to read first is <em>Designing Data-Intensive Applications</em>.

Core

Worked problem: URL shortener

The Hello World of distributed systems. Base62 keys, collision resistance, a CDN in front, the redirect path under ten milliseconds. Looks simple; gets interesting once the traffic is real.

Playbook URL shortener playbook