Backend engineer roadmap

All fifteen stages, from what HTTP does to choosing a database, the hard parts of distributed systems, and designing a system in an interview. Start here if you are not sure which path fits.

Stages
15
Topics
163
Core
91
Done
0
Path
Level

Core and recommended topics. Optional ones stay hidden; they pay off after you have run a few services in production.

  • Core: needed for most jobs of this kind
  • Recommended: worth learning early
  • Optional: learn it when your work needs it

Stage 1

The internet and HTTP

Most confusion about backends starts here. Before you can debug a 502 or choose between gRPC and REST, you need a clear picture of what happens between a client and your server: DNS, then TCP, then TLS, then HTTP, and the response coming back the same way.

Stage 2

OS and networking foundations

Processes, threads, file descriptors and memory. When a service misbehaves in the middle of the night, the people who can fix it usually know what the kernel is doing below the language runtime.

Stage 3

Version control

The basic commands take an afternoon. Understanding commits as a graph, and the difference between rebase, cherry-pick and revert, is what you need on the day a release has to be rolled back.

Stage 4, pick one

Pick a language

Backend jobs ask for fluency in one language, not five. Go is a sensible default. Rust gives the strongest safety guarantees and takes longer to learn. Node.js makes sense when you share code with a web frontend, and Java, Python and C# run a large share of company backends. Pick one you can defend in an interview; the others can come later.

Stage 5

Design principles and patterns

The vocabulary code reviews use. Knowing SOLID means understanding what a reviewer means when they say a change breaks the open-closed principle, not reciting the five letters. The same goes for KISS, YAGNI, DRY, the twelve-factor app and the classic design patterns.

Stage 6

APIs and protocols

REST is the default, and most systems also use at least one of gRPC, GraphQL or WebSockets. Each suits a different problem. Knowing what each costs in latency, bytes on the wire and work to operate tells you when to use it.

Stage 7

Databases

The choice that is hardest to undo. Know the range from a single Postgres instance to a sharded, distributed store, and the signs that it is time to move along it. Move too early and you add complexity for nothing; move too late and the migration happens under pressure.

Stage 8

Caching

Fast systems cache at several layers. The skills here are choosing the layer, deciding what a TTL should be, and surviving the moment a popular key expires and thousands of requests reach the database at once.

Stage 9

Web security

This stage won't make you a security specialist. The aim is to know enough about the OWASP Top 10, OAuth, CORS, JWTs and basic cryptography to avoid shipping the common mistakes.

Stage 10

Testing

Habits matter more than the framework. Two help most: write a failing test before you fix a bug, and give integration tests more weight than unit tests. Unit tests catch the bugs you thought of; integration tests catch the ones users find.

Stage 11

Containers and orchestration

Docker is everywhere and Kubernetes runs much of production. You can be productive with both in a few weeks. Knowing how they work (namespaces, cgroups, the kubelet and the scheduler) is what helps on the day a pod won't start and the logs say nothing useful.

Stage 12

Scaling out

The techniques for handling more traffic than one machine can: load balancing, sharding, replication, autoscaling and serving from the edge. Each solves one problem and brings new ones, and knowing those trade-offs matters more than knowing the tools.

Stage 13

Distributed systems

Here backend work becomes less about being correct and more about staying correct when parts fail: consensus, replication, ordering and idempotence. Senior interviews usually touch several of these topics.

Stage 14

Observability

Logs, metrics and traces, plus two methods: USE for resources and RED for requests. Together they cover most of what an on-call engineer needs. The harder part is adding the instrumentation before the incident, so the data is there when you need it.

Stage 15

System design

Knowing the components is different from designing with them. You get better by working through common problems out loud, such as a chat service, a news feed, a URL shortener and object storage, and defending each choice. Designing Data-Intensive Applications is the book to read first.

After this roadmap

  • System design playbookDesign problems worked from start to finish, such as a chat service, a news feed and a URL shortener.
  • SimulatorsModels of Raft, consistent hashing, caches, load balancers and B-trees that run in the browser.
  • CodexLonger study pages on databases, networking, operating systems, distributed systems and Kubernetes. Many topics above link into it.

Published Updated Change history