Usually, the System Design interviews are lengthy and cover a lot of complex components. This makes it very easy to get lost in small things and miss out on the big picture. Therefore, it becomes very important to structure your interview in a way such that you can easily convey the whole picture without wasting time on anything which does not add value.

Below is the structure that I follow, and you could try the same.

Drive the interview

Make sure you are the one driving the interview and not your interviewer. This does not mean that you do not let them speak, but rather, you should be the one doing most of the talking, proactively calling out issues in your design before the interviewer points it out, handle the edge cases that the interviewer might poke you on etc.

FRs and NFRs

Clearly call out the Functional and Non-Functional requirements. The intent is that the requirements should be big enough that makes the problem challenging and also finite enough that you can build a system that fulfills those requirements within the stipulated time. From the Non Functional side, try to make a system that works at a very large scale. What’s the fun in designing a system which works at a low scale?

Before finalizing the FRs and the NFRs, get them reviewed with your interviewer to make sure they do not want to add/ remove something. At times, interviewers do have some particular use cases in mind that they want to go over.

Capacity Estimation

Check with your interviewer if they want to get into this. A lot of people prefer to skip the calculations and focus more on the design, assuming a large enough approximate number for the number of cores required or the amount of disk required etc.

Plan

Based on the FRs and NFRs, come up with these things:

  1. User Interaction Points.
  2. Latency/ Availability/ Consistency requirements at each of the user interaction points.
  3. A quick analysis estimating if it’s a read-heavy interaction or a write-heavy interaction.
  4. Based on the above three, come up with what all services you’ll need and what kind of databases you can use to store the data that each of these services owns.

#software-architecture #system-design-interview #programming #coding #software-development

System Design Interview Checklist — A Gateway to FAANGs
3.15 GEEK