The System Design Interview

Learn about the key phases in the System Design Interview and how it differs significantly from other technical interviews, such as coding interviews.

We’ll cover the following

    blue-rectangle
    blue-rectangle
    blue-rectangle
    blue-rectangle

    What’s unique about System Design Interviews?

    System Design Interviews are some of the most creative technical interviews. There is no single right or wrong answer to a System Design problem—every problem can have many solutions.

    With many different paths to the same outcome, your reasoning behind the solution (and how you present it) is key to showing your interviewers your technical skill set and ability to collaborate with a team.

    finish

    What does a System Design solution involve?

    The interview is a design process that involves much discussion with your interviewer. Let’s discuss what the design process looks like from a birds-eye view.

    good System Design solution will involve a structured approach. We will provide an example of a structured solution later in the handbook.

    Problem statement

    With a System Design Interview, you begin with a vague problem statement that asks you to design a web service. This statement will likely be something like the following:

    • Design a search engine
    • Design a rideshare app
    • Design a messaging service
    • Design a URL shortener

    Requirements and constraints

    From here, you identify the essential functions of the system you’ve been asked to design. These functions are known as requirements and are categorized into two types:

    • Functional requirements—Specific functionalities that bring the user to the service. These specific functions are directly adjacent to providing the key service.

    • Non-functional requirements—Functionalities that affect the overall operation of the system but are broader system functions that aren’t adjacent to specific functions of a service. Examples include scalability, reliability, usability, security, and performance.

    You also want to understand any constraints for your system. Perhaps a company’s budget is low, which means they can’t afford expensive hardware for their storage solutions.

    Note: To understand the problem, you will need to ask your interviewer questions.

    Designing

    After determining your requirements and constraints, you’ll start designing your system. This will involve identifying the components, technologies, and APIs that will work together to help you achieve your goal. The components can include front-end servers, analytics, and more. We’ll discuss more components later in the course.

    There are many ways to approach a design, and design choices come with limitations. It’s essential that you allow your interviewers to hear your thought process regarding your solution. This includes how you’ve connected the elements of your design to requirements, and how you’ve reasoned through making compromises in your design (these compromises are known as trade-offs, which we’ll discuss in the next chapter).

    Identifying shortcomings

    Finally, you will reflect on your design. Nobody can design a perfect system in less than 45 minutes. If you’re aware of shortcomings in your design, begin to address them and discuss other design choices you could’ve made, or explain your decision based on your understanding of the given requirements and constraints.

    Ideally, you will be getting feedback and conversing with your interviewer both during and throughout the design process. Your interviewer may point out shortcomings or ask about certain choices you made to give you an opportunity to demonstrate and explain your thinking.

    Second iteration

    If time allows, you can also do a second iteration of your design based on your new findings and takeaways.

    Knowing System Design gives you immense perspective. We can picture the difference between knowing and not knowing System Design through the comparison of being a line cook or head chef of a restaurant. The head chef has a broader perspective on the kitchen (system) as a whole. They know each staff member’s role and operations and how they depend on each other. They’re prepared to have backups take over if one person can’t complete their duties. Because it’s not required of them, a line cook usually lacks this vision of the big picture to which they contribute.

    System Design Interview prep: timeline and considerations

    Successfully preparing for the System Design Interview won’t be as simple as memorizing answers. Proper preparation requires internalizing and reflecting on the concepts you are learning. This process takes time and effort—and it cannot be rushed.

    The duration of your preparation will be determined by several factors, including:

    • Your individual circumstances
    • Your learning pace
    • Your daily study routine
    • Your current proficiency level in System Design
    • Your target role
    • Your daily time allocation

     

    If you commit two to three hours a day to your preparation, five days a week, you can expect it to take:

    • 4 to 10 weeks if you’re starting with minimal System Design experience or need more time to absorb and retain information.

    • 3 to 6 weeks if you have some experience.