Description
The original Primer content will be reorganized from a loose collection of topics into a coherent curriculum that guides a reader in it's learning path, mirroring a course or handbook.
Justification: Learners (especially beginners) can be overwhelmed by the current flat list of system design topics. Already 4 years ago people suggested it as an important improvement see donnemartin#598 for example.
Moreover, Alex Xu’s 4-step interview approach emphasizes understanding requirements and high-level design first – the Primer should reflect this by teaching foundational knowledge before diving into complex design details. A course-like structure can also highlight prerequisites (for example, one should grasp caching and database basics before tackling a full system design case study) and incorporate exercises in a sensible order.
Implementation Steps:
-
Create Navigable Sections: Break the monolithic README into multiple markdown files. For example:
README.md
can become a high-level overview and Table of Contents linking to each section.- Create
01-intro-basics.md
,02-core-concepts.md
,03-intermediate.md
,04-case-studies.md
, etc., or even one file per major topic for easier maintenance. This not only improves readability (no single huge page) but also allows parallel contributions on different sections. - Ensure each file has a clear header and uses consistent formatting. Introduce numbering or ordering in file names for clarity.
-
Align with Alex Xu’s 4 Steps: Weave the interview methodology into the structure:
- Start the course with a page explaining the 4-step system design process (understanding the problem, proposing high-level design, deep dive, wrap-up). This sets the stage for using that approach throughout.
- In each design case study, explicitly break down the solution write-up into those four parts (with headings like “Step 1: Clarify Requirements” where the problem is defined, “Step 2: High-Level Design” where main components are outlined, etc.). This ensures the often-neglected initial stages (clarifying requirements, defining scope) are covered every time, teaching the habit to readers.
- Provide checklists or key questions for each step in a design. For instance, after the Introduction, include a one-page “Design Interview Checklist” that readers can use: e.g. a list of questions to ask for Step 1 (functional vs non-functional requirements), a list of fundamental choices to consider in Step 2, etc.
-
Prerequisite Linking: Within the content, add cross-links where appropriate. For example, at the start of “Design a URL Shortener” case, add “Prerequisites: It is recommended to understand caching and database sharding (see Core Concepts) before tackling this design.” This signals the course-like dependency structure and guides self-learners.