12 Topics to Truly Understand System Design
Post by Fernando Franco — 12 topics to learn system design properly, one per week
“Most engineers learn system design by memorizing diagrams for the interview. The moment the question changes, it all falls apart.”
The 12-Week Curriculum
| Week | Topic | Key Focus |
|---|---|---|
| 1 | Requirements | From vague problem to clear design — the step everyone skips |
| 2 | Back-of-the-envelope | Estimate capacity before you design |
| 3 | Latency & Throughput | The two numbers everything trades against |
| 4 | Availability | Design for high availability and measure it |
| 5 | Scaling Techniques | Server clones, functional partitioning, data partitioning |
| 6 | Load Balancers | Use them well in distributed systems |
| 7 | Caching | Read/write strategies, invalidation, TTL done right |
| 8 | Replication | Single-leader, multi-leader, leaderless |
| 9 | Sharding | Faster, more scalable, more available data layer |
| 10 | Consistency Models | They decide your whole design |
| 11 | Why Distributed Systems Fail | Common failure modes and blast radius |
| 12 | Raft | How consensus actually works |
Key Takeaway
Don’t memorize diagrams. Learn the fundamentals — requirements, tradeoffs, failure modes. Then any design question becomes solvable.
Source
Each week has a detailed LinkedIn post with links (see original post).