█
LastWrite
  • > Curriculum
  • > Pricing
  • > For Educators
  • > About
  • > Contact
Log InGet Started

Questions, concerns, bug reports, or suggestions? We read every message, write to us at [email protected].

More ways to reach us →
LastWrite

Structured computer science lessons for aspiring developers and security professionals.

[email protected]

(201) 785-7951

Mon–Fri, 9 AM–5 PM EST

Learn

  • Curriculum
  • Pricing

Company

  • About
  • For Educators & Schools
  • Contact Us

Legal

  • Terms of Service
  • Privacy Policy
© 2026 LastWrite. All rights reserved.
Curriculum/Software Engineering/System Design/What System Design Is and Why It Matters
30 minIntermediate

What System Design Is and Why It Matters

After this lesson, you will be able to: Explain what system design is, why it matters, and the questions a senior engineer asks before writing code.

System design is the work of choosing the components, boundaries, and data flow that determine whether your system will scale, survive, and stay maintainable. It's the single most-tested topic in mid-to-senior engineering interviews, and the most under-taught in school.

This is a free introductory lesson. No purchase required.

Programming vs system design

Programming: given a problem, write code that solves it. System design: given a problem, decide what to build, in what shape, talking to what, with what data, surviving what failures. The code is the LAST step. A senior engineer spends more time on system design than on writing code. The skill is recognizing the design decisions hidden in 'just go build it'.

The questions to ask before designing

1. Who uses it? (5 users vs 5M users is a 6-order-of-magnitude difference.) 2. What's the read/write ratio? (1000:1 reads/writes lets you cache aggressively; 1:1 doesn't.) 3. What does failure cost? (Tweet failing to post vs payment failing.) 4. What's the latency budget? (Real-time chat vs nightly batch.) 5. What's the data shape? (Relational vs document vs time-series.) 6. What's the deploy frequency? (Hourly deploys vs quarterly releases.) Answering these BEFORE drawing boxes is what separates senior from junior.

The four building blocks

Clients (browsers, mobile apps, other services). Servers (web servers, application services, background workers). Data stores (databases, caches, object stores, queues). Connectors (load balancers, API gateways, CDNs, message buses). Every system you'll design is some combination of these four. Learning the catalog of each unlocks the design vocabulary.

The system-design interview format

Standard 45-minute structure: 5 min, clarify requirements (functional + non-functional). 5 min, capacity estimation (users / RPS / data volume). 10 min, high-level design (draw the boxes). 15 min, deep dive on 1-2 components the interviewer cares about. 10 min, bottlenecks, tradeoffs, alternatives. Most candidates fail by skipping clarification and jumping to boxes.

💡 Designs are never 'right'; they're tradeoffs

Every design choice trades against another (consistency vs availability, latency vs throughput, simplicity vs flexibility). The best answer in an interview names BOTH sides of the tradeoff explicitly. 'I'd use Postgres because the data is relational and transactions matter. If we needed sub-10ms p99 reads at 100K RPS, I'd put Redis in front; we'd accept eventual consistency for read replicas.'

Common mistakes only experienced engineers avoid

Jumping to a tech stack before clarifying requirements. Picking microservices for everything because they sound senior. Skipping capacity estimation. 'How many users' is the question that decides everything else. Treating availability and consistency as both-or-nothing rather than a slider. Failing to discuss what BREAKS in your design. Acknowledging failure modes is what makes the design credible.

Quick Check

An interviewer asks 'design Twitter'. What's the FIRST thing you say?

Pick the most senior move.

Back to System Design
Scalability Fundamentals and CAP Theorem→