Oct 15, 2021
How to Succeed in a System Design Interview
Software companies often test candidates on system design during interviews. It's now a standard part of how they figure out if someone can actually build real systems, not just write code on their own.
We recently hosted an event where a senior engineer and manager (L5/SDEIII) from a FAANG company ran a mock system design interview. The interviewee was an experienced developer (L4/SDEII) from another major tech company. Over a hundred software developers attended to watch and learn.
The interview lasted about an hour, and it was different from most system design content you'll find online. If you've watched YouTube videos on this topic, you might have noticed the same patterns we saw. Here's how our mock interview compared to what you typically see in online resources:
| A typical system design interview video online | Our mock system design interview |
|---|---|
| Requirements are quickly gathered within the first 5 minutes, and written down as "functional requirements" and "non-functional requirements" | We spent 15 minutes breaking down high-level requirements into multiple critical user journeys |
| Detailed system design typically satisfies the full requirements | Detailed system design focused on just one of several user journeys |
| Little to no discussion comparing alternative technology choices, such as what database to use (MySQL, DynamoDB, etc.) | The interviewer and interviewee discussed consistency and performance characteristics of DynamoDB. The interviewer also expected additional alternatives to be presented, with clear justifications for design choices |
After the interview wrapped up, our interviewer shared the essential skills he looks for in candidates. These aren't official FAANG rubrics, just observations from someone who's conducted many interviews across different companies and projects.
Soft skills:
- Gathering requirements
- Making decisions and justifying tradeoffs
- Describing the solution using concise language and accurate technical terms
Hard skills:
- Design quality: scalability, reliability, and efficiency (for L4/SDE II and L5/SDE III roles)
- Essential knowledge about existing software solutions and hardware capabilities (for L4/SDE II and L5/SDE III roles)
- Project lifecycle awareness, such as how a project is developed and maintained (primarily for L5/SDE III roles)