| ▲ | Swizec 5 days ago |
| > These are not the answers they're looking for. These ARE the answers we are looking for. As the system design interview (I’ve done hundreds) I want you to start with these answers then we can layer on complexity if you’ve solved the problem and there’s time left to go into navel gazing mode. Seeing the panic slowly build in mid-level engineers’ eyes as it dawns on them that not every problem can be solved by caching is pretty fun too. “Ok cool you’ve cached it there, now how do you fill the cache without running into the same performance issue?” |
|
| ▲ | Aurornis 5 days ago | parent | next [-] |
| > I want you to start with these answers then we can layer on complexity if you’ve solved the problem and there’s time left to go into navel gazing mode Exactly. Part of the interview is explaining when and why these techniques are necessary as part of demonstrating your understanding. If the candidate gives non-answers like “I don’t think it matters because you’re a startup” or “I’d just use whatever database I’m comfortable with” that’s not demonstrating knowledge at all. That’s dismissing the question in a way that leaves the interviewer thinking you don’t have that knowledge, or you don’t take their problems seriously enough to put thought into them. There is a type of candidate who applies to startups because they think nothing matters and they can YOLO anything together for a few years before moving on to the next job, and those are just as bad as the super over-engineering candidates. The interview is your chance to show you know the topics and when to apply them, not the time to argue that the startup shouldn’t care about such matters. |
| |
| ▲ | Swizec 5 days ago | parent | next [-] | | > The interview is your chance to show you know the topics and when to apply them, not the time to argue that the startup shouldn’t care about such matters. A good way to answer these, I think, is some version of ”We probably won’t run into these issues at the scale we’re talking about, but when we run into A, B, C problems, we can try X, Y, Z solutions.” This shows that you’re making a conscious tradeoff and know when the more complex solutions apply. Extra points if you can explain specifically how you’ll put measures in place to know when A, B, C happened and how you would engineer the system such that adding X, Y, Z is easy. Also it looks amazing if you’re aware that vertical scaling can buy you a lot of time for comparably little money these days. Servers get up to 128 CPUs with 64TB of RAM on one machine :) | | |
| ▲ | paulddraper 5 days ago | parent [-] | | Right, and you might be small in $year but presumably you expect to grow and they don’t want to replace the team because they can’t think how to operate in any other circumstances. |
| |
| ▲ | throwawaythekey 5 days ago | parent | prev [-] | | > Part of the interview is explaining when and why these techniques are necessary as part of demonstrating your understanding. The slightly altered "explain when and why these techniques are *not* necessary" is much less appreciated. |
|
|
| ▲ | nlawalker 5 days ago | parent | prev | next [-] |
| > I want you to start with these answers then we can layer on complexity if you’ve solved the problem and there’s time left to go into navel gazing mode. Do you tell people this explicitly? If so, good on you; if not, please start! I think one of the biggest problems with interviews these days is misaligned expectations, particularly interviewees coming in assuming that what's desired is immediate evidence that they're so experienced in solving FAANG-scale problems that it's their default mode. |
| |
| ▲ | dondraper36 5 days ago | parent | next [-] | | I believe even at FAANG-like companies, only a lucky minority is involved at that level of scale. Most developers just use the available infrastructure and tools without working on the creation of S3 or BigTable. | | | |
| ▲ | Swizec 5 days ago | parent | prev | next [-] | | > Do you tell people this explicitly? Yes and no. I give them rough scale numbers to design for. Part of the interview is knowing why I’m telling you this. | | | |
| ▲ | renewiltord 5 days ago | parent | prev [-] | | At the level where this matters, the skill to figure it out from context is important. You aren’t the guy converting spec to code. You’re the spec maker. | | |
| ▲ | nlawalker 5 days ago | parent [-] | | I agree, but I think my point is that the interview context and expectations can differ radically different from the role context, depending on the interviewer. If the expectation of the interviewer is that the interviewee should be asking questions to determine scale needs, then they should be explicit about that. For all the interviewee knows, you're going to ding them and ultimately fail them for asking too many questions and not exhibiting knowledge and experience. | | |
| ▲ | Swizec 5 days ago | parent [-] | | > For all the interviewee knows, you're going to ding them and ultimately fail them for asking too many questions and not exhibiting knowledge and experience. I start the interview with “I am here in the role of PM and co-engineer so you can bounce ideas off of me and ask any questions” Stakeholders won’t start their asks with “Please ask me questions to make sure you’re building the right thing”. Asking clarifying questions is a baseline expectation of the role |
|
|
|
|
| ▲ | dondraper36 5 days ago | parent | prev [-] |
| This also happens because plenty of candidates learn the buzzwords and patterns without understanding the trade-offs and nuances. With a competent enough interviewer, the shallowness of knowledge can be revealed immediately. |
| |
| ▲ | Aurornis 5 days ago | parent [-] | | Identifying candidates who repeat buzzwords without understanding tradeoffs is easy. It’s part of the questioning process to understand the tradeoffs. The problem with the comment above is that it’s not discussing tradeoffs at all. It’s just jumping to conclusions and dodging any discussion of tradeoffs. If you answer questions like that, it’s impossible to tell if the candidate is being wise or if they’re simply BSing their way around the topic and pretending to be smart about it, because both types of candidates sound the same. It’s easy to avoid this problem by answering questions as asked and mentioning tradeoffs. Trying to dismiss questions never works in your favor. | | |
| ▲ | dondraper36 5 days ago | parent [-] | | Yes, I would probably phrase it like this. "Under the current load, I would go super simple and use X, which can work fine long enough until it doesn't. And then we can think about horizontal scaling and use Y and Z". Then proceed with a deeper discussion of Y and Z, probably. After all, interviewing and understanding what your interviewer expects to hear is also a valuable skill (same as with your boss or client). | | |
| ▲ | no_wizard 5 days ago | parent [-] | | Even better would be to clarify under the current load and if reasonably expected future load is similar, I would use X for Y reasons. Sometimes the “trick” is in todays load is not tomorrows |
|
|
|