I’ve been struggling to find good study material for the sys design interview at Facebook. I have the DDIA book, which is pretty good, but it’s not too focused on individual architecture reviews like Grokking is. I think I prefer Grokking’s style, but it does seem slightly basic. Nevertheless, it has prepared me very well as far as the interview format goes, so it was definitely worth the money. How much deeper would I be expected to go as an E6 than one of Grokking’s examples? I’m just trying to get an idea of what the expectations are so I can practice my time management. I can go pretty deep, but it’s a function of time. I’m trying to focus on my time management right now and I’m not able to fit a level of detail that I’m personally happy with in 45 minutes. It’s taking me almost double that time for harder prompts. Part of it is that I need to improve my ability to convey the design quickly, don’t get me wrong. But I also think there’s a possibility that I might be overdoing it. For example, my version of Grokking’s TinyURL design includes fault tolerance patterns (degradation trade offs for availability), replication methods, multi-regional concerns, and extensibility for adding operational features such as system monitoring and analytics. The Grokking answer doesn’t include any of this. My answer doesn’t actually include the analytics itself, but does create a mechanism for “plugging it in,” so to speak, and I make the argument that it can essentially be its own system with its own independent design. I can complete this answer in about an hour, but this is also a very small, simple question. So I’m concerned about running out of time. I’m concerned that I might be blowing the scope up a bit, too. I’m trying to get a feel for what a “good” E6 level answer is. Help! I have zero experience in actual tech companies. I’ve always worked for non-tech companies that need software engineers/architects. Self taught, no college degree, 10 years of professional experience, 20+ years coding and making stuff. I say all of this because if you tell me to compare it to some other tech company, I won’t have any kind of frame of reference. Explain it like I’m 5, please.
It sounds like your main issue is not knowing what interviewers expect from you. That's what 12121 is getting at with regard to needing more feedback loops.
I suffer the same problem. Try iterating outward on the problems. Define the broad data flow beginning to end. Then, define the broad architecture beginning to end. Then, define the important details across the system. Then focus in on some bottle necks in the system, glossing over potential approaches and see where the interviewer wants to take it. You don't have time to talk about everything, but that doesn't matter as long as the interviewer is confident you could.
I’ve been practicing (mock rounds with myself as my own interviewer) a “breadth first” explanation approach. Kind of like loading a JPG image in the 90s on dial up, you get a general idea of what it is at first, then it gets clearer and clearer with more passes, adding more detail each pass. Think this is a good approach? Would the interviewer signal to me where they would like to see a deep dive?
That is a sound approach. The interviewer should signal you in some way if there are specific deep dives they want to see. Keep in mind, a large part of conveying seniority is being able to suss out the major requirements for the system, define success metrics for yourself, and iterate toward those success metrics. Thus, the signal given by the interviewer might be as simple as an agreement with your self-defined success metrics. From there, it's up to you to check back in and evaluate based on those metrics and figure out the next most important step to meeting them.
First of all, it's a combination of SD and Career interview that signals E6 vs E5. For E5 SD you need to do a problem analysis with capacity estimates and present a fully finished solution, so you have to treat it as if you are writing a complete Design Doc that can be given to E3/E4s to implement. Now for E6 on top of that you have to do some of the derivatives (security, authentication, monitoring, maintenance cost, privacy/compliance, etc) and go deep there to demonstrate your knowledge. Career E5 you have to show communication skills, empathy, adaptability and productivity. For E6 on top of that you need a record of being a team multiplier and being an influencer across the teams. Telling make up stories will not cut it. This is not easy even if you are coming from tech and very hard for an outsider. Expect a lot of down-levels to E5. That's why everyone recommends mocking and more feedback loops - you'll need them.
What do you mean by down-level? Like getting an E5 offer if I didn’t quite make it to E6?
Sometimes they'll give you an E5 offer, but they can also say that your YoE should map to E6 level, but they didn't see enough signals for that and you end up with nothing.
You need more interviews, feedback loops and practice. Don't treat one interview as end of it all.
So you’re advocating for me to not prepare for this interview, fail it, and do better on the next one? I’m too stupid to understand how that’s helpful, I guess.
Depends on how you can achieve what I said before the interview. Mocks maybe?