A strong process is crucial to successfully solving system design questions. We broke it down into four steps:

  • Scope the problem: Don’t make assumptions; Ask questions; Understand the constraints and use cases.
  • Sketch up an abstract design that illustrates the basic components of the system and the relationships between them.
  • Think about the bottlenecks these components face when the system scales.
  • Address these bottlenecks by using the fundamentals principles of scalable system design.

What’s next?

With a solid process in your brain, you now need to move on to making it work in practice. You’ll need to understand the fundamental components of scalable systems, how to solve common bottlenecks, and how to make your high-level design less abstract. This is going to be the focus of the next section!