Putting It Together: a fundamental approach to system design
Foundations of Practical System Design
System Design Course for Junior Engineers
Kay Ashaolu
Lesson Overview
We go over how we will introduce a new way of approaching system design through case studies
These case studies, and the technology agnostic Building Block approach is formulated to inspire "Senior level intuition" for junior engineers
Intuition is built when seeing the same Building Blocks used in different case studies
Recap: From Bits to Systems
Everything in our digital world breaks down to zeros and ones.
At the lowest level, data is either:
Stored
(as sequences of zeros and ones) - Storage units
Processed
(instructions that transform or utilize those zeros and ones) - Task units
Fundamental Building Blocks
Combine storage and tasks to create meaningful components.
These components (building blocks) can be servers, databases, or other well-known constructs.
Each building block exists to fulfill a specific purpose in the system.
Intuition Over Specifics
The purpose of this course is to develop intuition, not to memorize implementations.
By understanding the building block concept, you can reason about any system, regardless of technology specifics.
This intuition helps you adapt, compare, and even switch technologies when necessary.
The Next Step: 15 Case Studies
We will explore
15 different applications
you interact with in everyday life.
Each case study:
Presents requirements and what we want to build.
Shows how to compose Building Blocks (Task units + Storage unit) to meet those requirements.
Seeing many examples builds strong intuition, just like in real life.
Starting With Requirements
Real-world system design starts with defining requirements.
You determine what the system should do, who uses it, what it stores, and what tasks it performs.
The case studies will simulate this process:
Read the prompt.
Understand the scenario.
Identify key needs.
Matching Requirements to Building Blocks
Once requirements are known, we combine Building Blocks to meet them.
We introduce Building Blocks as the combination of Task units (computation, logic) + Storage units (data persistence, structure).
Over time, you’ll see patterns: certain Building Blocks appear repeatedly to solve common problems.
Not About the "Best" Design
There are many valid ways to design a system.
We focus on understanding the fundamental reasoning process:
Identify what you need to store.
Identify what tasks you need to perform.
Utilize the best Building Blocks to architect your system
Identifying Patterns in Systems
After examining multiple examples, you’ll recognize repeating patterns:
Common Building Blocks appear in different contexts.
Similar trade-offs and considerations emerge regardless of the domain.
Building Long-Term Intuition
Study all 15 case studies to develop a deep, flexible intuition.
Refer to the provided guide under this video listing Building Blocks and their real-world technology counterparts.
Over time, you’ll understand:
What each technology really provides.
How to swap or adjust building blocks as needs evolve.
Your Next Steps
Approach each case study with an open mind.
Key: Focus on the Building Block concepts rather than think about which specific technology implements those building blocks
With each example, grow your intuition, making you more confident and versatile in system design.
Made with Slides.com