Preparing for a System Design Interview
System Design Interviews are becoming increasingly common across various companies, not just limited to FAANG giants. Many teams, particularly when hiring for senior roles, are adopting these interviews to make informed hiring decisions. It is crucial not only to grasp the fundamental purpose of such interviews but also to learn how to navigate common pitfalls.
To shed light on this topic, we had the privilege of sitting down with three accomplished leaders who have a remarkable track record in conducting and evaluating System Design interviews. We spoke with Csaba Okrona from Personio, Vadym Kukhtin from Delivery Hero and Łukasz Szmit from Next Matter. These seasoned professionals not only provided insightful answers to our core questions but also shared valuable tips to help you prepare for a System Design interview if you have one on the horizon.
Core purpose of a System Design Interview
Participating in a system design interview without a deep understanding of its core purpose is akin to sending out a resume with incorrect contact details — it significantly diminishes your chances of success.
According to Csaba and Łukasz, these interviews are structured to assess an applicant’s comprehension of systems. Typically, you’ll receive a rather abstract prompt like “build a Twitter clone” or “if you were to build a data centre in the moon how would you do it?” a task clearly impossible to accomplish in a brief 30–60-minute interview. However, the objective is not completion but rather an evaluation of your grasp on design principles, your ability to break down complex tasks into manageable components, and your awareness of potential trade-offs and points of failure within such a project.
Csaba emphasised that it’s more of a simulation to gauge how well you can collaborate with a team rather than an expectation of achieving perfection.
Vadym concurred during our conversation, highlighting that system design interviewers pay close attention to your capacity to pause and align with requirements. It’s about taking a broad concept and methodically building a comprehensive understanding. This involves using probing questions to clarify, gaining insights into the existing architecture, and leveraging your communication skills to ensure clarity. Vadym explained that many issues stem from a lack of effective communication, so before diving into any task, consider what you don’t yet know.
Mistakes you might be making
If you haven’t had the opportunity to participate in such an interview before and receive constructive feedback, this section aims to provide insights into common pitfalls others have encountered, helping you avoid these missteps.
Going too deep in tech too quick
All three explained that many candidates face challenges in these interviews because they often hesitate to inquire and seek clarification. Csaba pointed out that a lack of understanding of the product requirements and scale at a high level, combined with a premature focus on specifics, can lead you astray.
Łukasz too has seen it many times over where a candidate latches onto the technology too quickly. Instead, if you are given an abstract question go down one level like a ladder, and explore what you don’t know first to build up the information you need to piece together a solution.
Vadym added that if you find yourself unsure about which questions to ask, it’s beneficial to begin with a broader perspective. Observe the interviewer’s response, then gradually delve deeper, piece by piece, with each positive reaction from the interviewer serving as affirmation that you are heading in the right direction.
Staying silent throughout
While it might seem logical to take the lead and silently code away during the interview, the truth is that interviewers are keen to hear about your thought process. They want insights into why you’re choosing one path over another, what’s progressing smoothly, and perhaps what’s not.
As Csaba previously highlighted, this interview is essentially a simulation to assess what it would be like to collaborate with you. It doesn’t imply that you need to be talking incessantly, but it’s essential for the team to feel confident that your approach aligns well with the existing team dynamics.
Being too rigid
The interviewer typically begins with a broad overview, affording you the opportunity to inquire and elicit more details through questions. However, it’s crucial to note that interviewers themselves will naturally provide insights, making course corrections and offering real-time feedback, as Vadym pointed out.
Failing to recognise these cues and not responding to them is a prevalent error that our guests have observed on numerous occasions. The interviewer is present to guide you, particularly if you encounter difficulties. It’s advisable to heed their advice and maintain flexibility throughout the interview. Your ability to adapt and respond constructively to feedback is a valuable skill that prospective teams will be evaluating.
Lack of solution awareness
In a high-pressure situation, it’s common to become fixated on a particular solution, often the first one that comes to mind. However, this initial solution may not always be the most optimal one. Without thorough investigation and discussion, neither you nor the interviewer can be certain.
This lack of solution awareness entails not considering all aspects of your proposed solution and assuming that it is flawless, a pitfall Csaba has encountered numerous times. With limited time available, achieving a perfect solution is unlikely, and there will inevitably be limitations.
Csaba recommends embracing vulnerability and acknowledging potential weaknesses in your solution. Allocate some time at the end of the session, perhaps around 5 minutes, to review and address these limitations.
Giving up too soon
The last error we’d like to address based on our discussions is one that Vadym and Łukasz touched upon, and upon further reflection, it’s a mistake we have seen developers do often: prematurely giving up.
The system design interview is undeniably challenging, and if you lack a deep understanding of complex systems, it can be a daunting experience. However, it’s crucial not to throw in the towel entirely. Instead, consider what you do know and how your existing knowledge can steer the conversation. Even if you’re struggling, Łukasz mentioned you can speculate, the interviewer will likely pick up on this and offer guidance. This holds true even if you’re applying for a senior role; it’s perfectly acceptable to follow their lead and continue from where you can.
Even if you don’t achieve a perfect solution or even a passing grade, the act of persisting and putting forth an effort can have valuable outcomes. It might not secure you the immediate job opportunity, but it could open doors elsewhere within the company.
Remember, never give up; view every opportunity as a chance to learn and grow.
Tips from the professional
We have explored the true purpose of a system design interview and explored the pitfalls you should be mindful of but now let’s turn the attention to actionable tips you can adopt to help you prepare for your next meeting.
In reality, tackling a complex system comprehensively requires real-world experience. Simply reading an article won’t suffice to pass these technical interviews, as Csaba pointed out.
If you lack in-depth experience but have encountered systems in passing, it’s worth considering reaching out to friends or acquaintances with deeper expertise and asking if they can mentor you. Learning about the intricacies of complex systems and benefiting from their exposure can be immensely valuable.
If you have the opportunity, it’s advisable to practice with someone who actively conducts these types of interviews. As Csaba emphasised, focus less on the technical aspects and more on behavioural skills and real-time listening.
Vadym suggested a proactive approach before your next system design interview. Reach out directly to the company and inquire if they provide potential topics for discussion during the interview. While they may not always share these topics, asking might give you a head start on what to concentrate on. In the same conversation, inquire about the interview’s core focus — whether it involves creating an entire app, working on a specific part of an app, or resolving an existing problem. This approach aims to gather as much information as possible to aid in your preparation, acknowledging that not asking guarantees you won’t know.
As a general guideline, if you don’t receive the answers, you hope for from the above questions, Vadym explained that most companies are likely to present a problem related to their own organisation. Conducting thorough research on the company can provide clarity on what you might expect in this regard.
Lastly, Łukasz suggests you look at system design questions, not to know how to answer them exactly as you won’t receive the same question but to understand what to look out for, the core elements– even if you feel you know this, refreshing that knowledge and bringing it to the surface could be the difference in a high-pressure simulation like an interview.
For some further readings our guests recommended:
- https://github.com/donnemartin/system-design-primerhttps://github.com/yuqli/system-design-interview
- https://bytebytego.com/?fpr=techinterviewhandbook
- https://www.designgurus.io/course/grokking-the-system-designintervie
- How to Crack Any System Design Interview — YouTube
System design interviews are becoming a permanent fixture in the interview process for many teams. By honing your focus, refining your preparation techniques, and applying your knowledge effectively, you can certainly gain an advantage over those who merely participate without adequate preparation.
However, as previously highlighted, these interviews entail more than just your ability to prepare and code. We highly recommend actively seeking one-on-one guidance from experts who regularly conduct such interviews. Learning from their experience can provide valuable insights into how you can uniquely contribute and enhance your individual value through your knowledge and skills.
As always, thank you to our guests, please share within your network if you feel there is value to be gained and let’s collectively bring simplicity to the chaos of recruitment.