Also appreciative of Dima's discussions here; I've received feedback in the most too, and I have learnt the following from prior experiences : (A) Briefly discuss the read-write ratio, to establish whether we need to worry about a ready-heavy system, a write-heavy system, or both being equally heavy/light. (B) Briefly discuss the major concern : is it transactions, or both transactions and storage? Not all highly distributed systems need you to worry about storage requirements ( e.g. there's no data retention requirement or a need for persistent storage in the problem ). (C) Telling your interviewer that you will discuss capacity planning, but only after knocking out the HLD - High Level Design - and data tier sections in more depth. Some interviewers will still want to discuss capacity planning, but we can save that to the end after sufficient design iteration conversations.
Also appreciative of Dima's discussions here; I've received feedback in the most too, and I have learnt the following from prior experiences :
(A) Briefly discuss the read-write ratio, to establish whether we need to worry about a ready-heavy system, a write-heavy system, or both being equally heavy/light.
(B) Briefly discuss the major concern : is it transactions, or both transactions and storage? Not all highly distributed systems need you to worry about storage requirements ( e.g. there's no data retention requirement or a need for persistent storage in the problem ).
(C) Telling your interviewer that you will discuss capacity planning, but only after knocking out the HLD - High Level Design - and data tier sections in more depth. Some interviewers will still want to discuss capacity planning, but we can save that to the end after sufficient design iteration conversations.
Well put!
Appreciate the efforts Dima is going to demystify the system design interview process.
Dima has a lot more words of wisdom to share so be on the look out for our upcoming content!