Over time, we’ve identified two major challenges most candidates face when it comes to system design questions. Candidates either:
- Approach questions in a chaotic way and get ratholed, or
- Lack solid understanding of how to properly design architectures that scale.
Fixing these two problems is going to be our focus throughout this course. By the time you’ve finished all sections, you’ll be exceptionally well-equipped to tackle any system design question.
The System Design Process
First things first: we’ll kick off by replacing chaos with a structured approach to system design. The System Design Process described in the next section takes care of that, as it describes all the steps you need to follow from hearing the problem to declaring it solved.
The System Design Process is the equivalent of the Algorithm Design Canvas in the domain of system design questions.
Designing Scalable Architectures
With the right process in place, we’ll move on to destroying the second obstacle to your dream job. We’ll spend a significant amount of time on building up your knowledge and intuition around designing scalable architectures.
Scalability is the 4th step of the System Design Process. We are spending a disproportionate amount of time on it simply because this is where candidates struggle the most.
To beef up your scalability knowledge, we’ve selected some of the best readings and videos available online. They’ll teach you the theoretical underpinnings of designing systems that scale. Then, we’ll focus on looking at a ton of real-life practical examples of some of the Internet’s most popular websites: Instagram, TripAdvisor, Salesforce.com, StackOverflow, and many others.
Before diving into the main content of this course, let’s bierfly outline what system design questions look like.