Product-Minded System Design and Observability Roadmap

Design systems that scale and can be understood in production, with a habit of tying choices to product needs.

10 milestones · ~132 hours total

  1. 1

    Requirements and estimation

    ~8h

    Clarify functional and non-functional needs, estimate traffic and storage with simple back-of-envelope maths.

    Practice this →
  2. 2

    Networking and API design

    ~12h

    HTTP, DNS, load balancers, REST vs gRPC vs GraphQL, idempotency and versioning.

    Practice this →
  3. 3

    Storage choices

    ~16h

    SQL vs NoSQL, indexing, replication, partitioning and picking a database based on access patterns.

    Practice this →
  4. 4

    Caching and CDNs

    ~10h

    Cache-aside, write-through, eviction, invalidation problems and what to put behind a CDN.

    Practice this →
  5. 5

    Asynchronous systems

    ~14h

    Queues, pub/sub, event-driven design, retries, dead-letter queues and at-least-once delivery.

    Practice this →
  6. 6

    Scalability and consistency trade-offs

    ~14h

    Horizontal scaling, sharding, the CAP theorem, eventual consistency and rate limiting.

    Practice this →
  7. 7

    Classic design exercises

    ~24h

    URL shortener, news feed, chat service and notification system, written up with diagrams and trade-offs.

    Practice this →
  8. 8

    Observability: logs, metrics and traces

    ~14h

    The three signals, OpenTelemetry, useful dashboards and latency percentiles.

    Practice this →
  9. 9

    Reliability and cost awareness

    ~10h

    Failure modes, graceful degradation, SLOs and simple cost estimates for the design choices you make.

    Practice this →
  10. 10

    Product thinking in design

    ~10h

    Link design decisions to user impact, choose what to build first, write a short design doc and defend your trade-offs.

    Practice this →