Skip to content

Restructure Content into a Course-Like Format #495

Open
0 of 1 issue completed
Open
0 of 1 issue completed
@ido777

Description

@ido777

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.

Sub-issues

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    Status

    In progress

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions