System designAdvanced6h

Systems thinking.

Latency, throughput, bottlenecks, and reasoning about scale.

What is systems thinking?

Systems thinking is reasoning about a service as a whole — how its parts interact, where work piles up, and what happens under load — rather than one function at a time. It is the mental model behind every architecture decision and every system design interview.

Why it matters

As systems grow, the hard problems move from "is this code correct?" to "does this design hold up at scale?" Engineers who think in systems anticipate bottlenecks, single points of failure, and cascading failures before they happen. This thinking is what gets you past the senior bar.

What to learn

  • Latency, throughput, and how they trade off
  • Bottlenecks and Little's Law in plain terms
  • Single points of failure and redundancy
  • Statelessness and why it enables scale
  • Back-of-the-envelope estimation
  • Caching, queues, and replication as scaling tools
  • Failure modes and graceful degradation

Common pitfall

Designing for a scale you do not have, adding queues, shards, and microservices for a few hundred users. The complexity slows you down and introduces failure modes you would not otherwise have. Design for the next order of magnitude, not a thousand times your real traffic; you can evolve when the load is real.

Resources

Primary (free):

Practice

Take a feature you have built and sketch how it would handle 100x the traffic. Identify the first bottleneck, estimate it with rough numbers, and name one change — cache, queue, replica — that addresses it. Done when you can talk through the bottleneck and the fix without hand-waving.

Outcomes

  • Reason about latency, throughput, and bottlenecks together.
  • Spot single points of failure in a design.
  • Estimate capacity with back-of-the-envelope math.
  • Choose a scaling tool that fits the actual bottleneck.
Back to Backend roadmap