How to answer architecture and system design interview questions

Not so long ago I have applied for a senior position in one of big IT companies. The recruitment process consisted of several parts: online coding and 4 interviews. One of them was architecture + system design interview. How did I do? Well, the polite way to say it, would be that I did not ace this part… However, there was a silver lining to this – I did get an extensive feedback on what did I do wrong.

I think that system architecture questions are not easy for people with strong programming background, as they are intentionally vague and indeterminate. We are not used to this level of abstraction, we need more details to work with! On the other hand, programmers like to dive right into the problem, and then iteratively ameliorate it, until the solution if finely tuned. This is not a good approach for solving a vast issue during a less than 60 minutes job interview. Often, this is not even the question of solving an issue, but more about elaborating on it, seeing the big picture, predicting what could go wrong. But at the same time giving a concrete solution, using a precise technology.

Here are some of the main takeouts for tackling a system design interview question:

  • gather the requirements before even thinking about the solutions, ask many questions about potential users, about what is significant for the company – the issue is deliberately indistinct, to see if you can take a step back, look at the big picture and be able discover and adapt to clients requirements
  • try to predict the problems and bottlenecks in the design, tell the recruiter that you see them and you know how to fix or mitigate them
  • do not use the buzz words or propose the technologies you know nothing about, it will be immediately visible if you just quote a catchphrase but do not have any deeper knowledge
  • take advantage of the background you come from, don’t be afraid to emphasize your strengths and show that you feel confident in certain domains, but admit if there are things you don’t know about – it is not a weakness, if it is a conscious unawareness

Below are some of the video resources that I found useful in investigating the system design and architecture interview question: