You learn large scale system design via real world application, being in the room when it happens, and from closely working with folks who are already practicing it. This kind of work is sometimes as much art as it is science, highly specific to the situation at hand and requirements of the system to be designed.
It absolutely bothers me that the resources out there are few and far between. It is hard to change that. I encountered occasionally resistance in organizations to share more openly the process, e.g. I suggested video taping it and uploading the video as a start. Naturally, plenty of confidential information can be disclosed in such design sessions, so enthusiasm about sharing recordings is rather low, even when everyone in the room agreed to be taped in the first place (which in itself is almost impossible).
I am bothered by engineering topics that have this „tribalism“ way of education. In networking one of these areas is BGP. No one lets you near Border Routing until you can do it perfectly, because of it potentially catastrophic impact (Pepperidge Farms remembers Pakistan Telecom hijacking YouTube!). When I tried to solve that one I ended up spinning up a whole ISP which’s sole purpose is to play with and break BGP. [1]
For system design I haven’t found a solution yet, ideas welcome. In the meantime, all you can do is read the little that is available (e.g. [2]) and try to talk to as many practitioners as possible, asking them to share or simulate a session privately.
1: https://www.nonattached.net 2: https://cloud.google.com/blog/products/management-tools/sre-...
Note that system design interviews are often completely customized and adapt on the fly to the applicant's responses, so there's no way to do a "cracking the system design interview" the way you can with coding problems. When I give coding interviews I have one question that I give over and over again, learn the ins & outs of the questions and how candidates go wrong, and score based on whether the candidate can complete it, or how close they came to a valid solution if they couldn't. When I give system design interviews I pick a topic that's something that both the candidate & I have had experience with, start out with "How would you design X?", and see where the candidate goes, drawing on my background knowledge to prompt further about cases to consider and situations that might come up in the real-world implementation of the system. The candidate is generally driving the interview, because at the level where system design interviews become necessary, the candidate should know how to pro-actively anticipate problems.
I'd disagree:
- System Design Interview – An insider's guide: https://smile.amazon.com/gp/product/B08CMF2CQF
- System Design Interview Vol 2: https://smile.amazon.com/System-Design-Interview-Insiders-Gu...
- Designing Data-Intensive Applications: https://smile.amazon.com/gp/product/1449373321
- System Design Primer: https://github.com/donnemartin/system-design-primer
Especially: https://github.com/donnemartin/system-design-primer#how-to-a...