How to pass system design interviews: drive the design

Learn how to pass system design interviews by driving the design. Discover strategies to lead discussions, prioritize challenges, propose solutions, and showcase your technical and strategic problem-solving skills.

How to pass system design interviews: drive the design

System design interviews are designed to challenge your problem-solving and leadership skills. They require you to take initiative, focus on the critical challenges, and guide the conversation toward practical, meaningful solutions.

The key to standing out is to drive the design

Driving the design means leading the discussion, identifying and prioritizing the most important aspects of the system, and making thoughtful decisions that showcase both technical expertise and strategic thinking. This is what sets senior engineers apart—the ability to navigate ambiguity with confidence and tackle complex problems head-on. 

Step 1: Start with the problem, not the script

Many candidates begin interviews by following a fixed order: APIs, data models, architectural diagrams, and so on. While these steps are useful, sticking to a script can lead you to miss the unique challenges of the problem at hand. 

For example, designing a messaging app for group communication involves specific issues like handling notifications for large groups or ensuring message consistency across devices. If you follow a generic script, you might spend too much time on less relevant aspects, like load balancing, and miss the core problem entirely.

Instead, focus on understanding the problem’s requirements. Ask clarifying questions to identify the key issues. For example, in a group messaging app, you might ask:

  • What’s the size of typical groups? Are we designing for 3 users or 100?
  • How active are these groups? Are they sending hundreds of messages per minute or fewer?
  • What is the expected behavior if two people message each other at the same time?

These questions help uncover the most important challenges, like handling notifications for large groups or ensuring message consistency.

Step 2: Prioritize the hardest problems first

It’s natural to avoid the most intimidating challenges and focus on quick wins first. But ignoring the toughest issues early on might lead to incorrect design choices or give the impression that you’re unaware of the system’s core challenges.

Take our group messaging app example. The hardest problem might be efficiently delivering a single message to hundreds of users in a group. If you leave this for last, you risk running out of time or missing the opportunity to showcase your ability to solve complex problems. Tackling this issue early demonstrates your ability to identify priorities and address complex problems head-on.

Step 3: Lead with options and trade-offs

One of the best ways to show ownership in a system design interview is by proposing solutions rather than relying on the interviewer to guide you. After asking clarifying questions and identifying challenges, present specific options for tackling the problems and evaluate their pros and cons.

For example, to solve the “fan-out” problem of sending a notification for a message to hundreds of users in a group, you might consider these options:

  • Option A: Make one call per user to the notification service. Simple but scales poorly.
  • Option B: Have the notification service look up group membership. Reduces calls but adds complexity.
  • Option C: Include group membership in the call to the notification service. Efficient but requires larger payloads.

State your recommendation (e.g., Option C) and back it up with reasoning. For example, “Even in large groups of 100 users, the payload size remains manageable, making this the most efficient choice.”

Step 4: Build the high-level design around key challenges

Once you’ve addressed the hardest problem, structure the rest of your design around it. 

For the group messaging app, the high-level design might include:

  1. Messaging server: Handles user requests and routes them to other services.
  2. Group membership store: Maps users to groups for quick lookups.
  3. Notification service: Delivers messages to users efficiently.
  4. Message storage: Maintains a single source of truth for message threads.

Focus your discussion on how these components work together to solve the key challenges identified earlier.

Step 5: Avoid over-asking for permission

Asking clarifying questions is essential, but relying too heavily on the interviewer for direction can make you seem unsure or hesitant. Interviewers expect you to take ownership of the design and make decisions. Questions like “Which approach should we take?” or “What do you think we should do here?” shift responsibility back to the interviewer and undermine your leadership in the discussion.

Driving the design means taking ownership of decisions. Once you’ve chosen a path forward, commit to it and guide the conversation confidently. Instead of asking the interviewer what they think, propose solutions and explain their trade-offs. For example, instead of asking, “Which option should we choose for the notification system?” say, “I believe Option C is the best fit based on the trade-offs, and here’s why.”

Get holistic interview prep with Formation

Despite the challenging economy, we've been able to help our Fellows land life-changing roles. Formation’s Mentors come from some of the best tech companies in the world, and the personalized career coaching and supportive community make for a great support system.

If you’re having trouble navigating your job search on your own, apply here and get unconditional support from a team of engineering mentors, technical recruiters, career coaches, and more.