[HN Gopher] A Senior Engineer's Guide to the System Design Inter...
       ___________________________________________________________________
        
       A Senior Engineer's Guide to the System Design Interview
        
       Author : leeny
       Score  : 365 points
       Date   : 2023-03-02 18:13 UTC (4 hours ago)
        
 (HTM) web link (interviewing.io)
 (TXT) w3m dump (interviewing.io)
        
       | FlyingSnake wrote:
       | "When a measure becomes a target, it ceases to be a good
       | measure".
       | 
       | The interviewing cottage industry has become a sad joke at this
       | point.
        
       | debacle wrote:
       | I remember once I was interviewing for a senior position where
       | the ask was something like "design a general purpose system for a
       | REST layer on top of an ORM."
       | 
       | I had just finished implementing an OSS solution that did exactly
       | that, including some upstream changes we made to improve the
       | system, so I walked through exactly what we did, challenges we
       | faced, etc.
       | 
       | I walked out of the interview feeling as though the interviewers
       | and I didn't speak the same language; they might've said the
       | same. Not only did I not get the job, I never got another
       | communication from the company.
       | 
       | To me, senior level interviewing, especially at smaller
       | companies, is fraught. A full 1/3rd of the companies I've
       | interviewed at would not have been a good "culture fit," and I'm
       | a picky interviewer. I expect, like coding tests etc, these
       | interviews are not aligned with the real travails of the position
       | - growing talent, managing time, triaging, and ensuring
       | stability/capability.
        
         | Aperocky wrote:
         | The interviewer usually can only rise to the level of
         | themselves, especially when assessing skills.
         | 
         | System design is hard, necessary skills can only be earned, and
         | then there are many avenue down to bad system design
         | masquerading as good that people who implemented it just don't
         | realize.
         | 
         | It takes a combination of humility and a degree of the skill in
         | question to recognize the interviewee is more proficient at the
         | said skill, and many are lacking in either or both.
        
         | nfw2 wrote:
         | I've got an interview coming up for a senior role on a UX
         | engineering team (design system, component libraries, etc). The
         | interview is just the standard set of backend system design and
         | leetcode problems.
         | 
         | It's a pretty big red flag to me that the skills being
         | evaluated are so tangential to the actual job. It doesn't give
         | me any confidence that the people I will be working with have
         | the skillset I consider important, or that the team and I will
         | approach problems in a compatible way.
        
           | jahewson wrote:
           | I suspect your fears are well-placed. Whoever is hiring this
           | team has no idea how to hire for those roles and that
           | suggests that those roles might not be valued within the
           | larger company. Though sometimes the hiring manager has just
           | lucked out and hired a great team so far. Still, will that
           | team be listened to? Will that team be respected?
        
       | agumonkey wrote:
       | I struggle to read this. It looks like a self-help ebook.
        
       | omniglottal wrote:
       | I got such fatigue from scrolling through so very much prologue,
       | introduction, expectation-setting, and general "here is what we
       | are going to say and here is how you may expect we will say it"
       | fluff that I gave up, pages in, before getting to any apparent
       | content.
        
         | modzu wrote:
         | its an ad, and they nailed the seo
        
           | leeny wrote:
           | Hey, founder of interviewing.io here. We actually did zero
           | thinking about SEO. We had someone look at this guide at the
           | end through an SEO lens, but then we decided that that would
           | make the content not as good and would make the guide less
           | readable.
           | 
           | (As an aside, I think in recent years, the spirit of SEO has
           | become more about just making good stuff and less about
           | hacking...)
           | 
           | Anyway, it wasn't for SEO. It's hard to edit stuff well
           | because we're so passionate about what we wrote here, and we
           | probably should do another pass.
        
       | chrisabrams wrote:
       | I'm very excited to see a guide that focuses on the process of
       | the interview itself related to system design. There are plenty
       | of "how to design twitter" resources out there, but for many of
       | us, we really need to better understand the system design
       | interview process itself. Thanks so much for putting this
       | together, can't wait to see parts 3 & 4!
        
       | newaccount2021 wrote:
       | [dead]
        
       | John23832 wrote:
       | I think to be frank, this gamification of interviews is BS.
       | 
       | I've built actual production systems at scale. The fact that I
       | need to follow a guide to "demonstrate" my ability to someone who
       | 9/10 hasn't built (or couldn't build) anything at scale in
       | production shows where we are in the absurdity matrix.
        
         | blue039 wrote:
         | Yeah, I don't think I want a job that asks such questions. I've
         | done the webscale BS. I've done actual architecture that exists
         | in reality. At this stage in my career there's nothing an
         | interviewer can do but insult me.
         | 
         | You might say that this is hubris about my own skill but it has
         | nothing to do with how good I am. My resume has a LOOONG track
         | record of consistent work in the industry. Call my references,
         | do some actual DD on me, then ask me real questions related to
         | actual things.
         | 
         | If leetcode and all these other service went straight to hell
         | tomorrow the world would be a better place. This entire
         | "interview" industry is propped up by a bunch of leeches
         | capitalizing on a recently _extremely_ popular field. Then,
         | injecting their BS to make the process harder thereby earning
         | them dollars. The linked article is a perfect example. It 's
         | actually an advertisement if you look close enough designed by
         | these exact leeches. This is just a reimagining of the
         | bloodsuckers who run SAT/GRE/GMAT prep services and "ex-ivy-
         | league recruiter consultant" bullshit. They are the same people
         | and the _only_ place they belong is all the way at the back of
         | the breadline. That may be too generous for them anyway. There
         | are better people that deserve the bread.
         | 
         | There's a good chance at my career phase I have more experience
         | than the interviewer. They "level the playing field" by asking
         | me these stupid things. That is why it is insulting. I almost
         | want to leave the industry entirely than have to do the process
         | one more time. I don't need a 7 phase 360 interview with
         | everyone including the CEO's cousin to insure I am a "culture
         | fit". It was never like this before. It needs to stop.
        
         | nonethewiser wrote:
         | I guess I'm not sure if you're suggesting otherwise, but
         | gamification is not unique to interviews. It's a natural
         | response to any system that relies on metrics or measurements.
         | The request to design a theoretical system is gamification as
         | much the guide for answering it is. These games exist because
         | it elicits answers that can be used to learn about someone's
         | real experience level.
         | 
         | It's great that you feel confident relying on your real world
         | application but it takes a long time to get repetition on
         | building things at scale in production. Practicing system
         | design is a way to shorten that learning loop.
        
       | eternalban wrote:
       | _" You can pass system design interviews even if you've never
       | designed distributed systems before. If you have copied files
       | between machines with drag-and-drop, you are halfway there. If
       | you implemented clients or servers or have opened network
       | connections, you've got this. This guide will teach you the most
       | important 20% of information that will appear 80% of the time in
       | system design interviews. By the end of this guide you won't be
       | an expert, but you'll be well on your way to being a better
       | engineer and a much better interview candidate."_
       | 
       | A better engineer, no less! Wow, this must be some magical guide.
       | I have to read it now. Also what does this say about our
       | industry. "You want to be a surgeon but don't have the
       | experience? Ever cut a tomato? You're halfway there. If you've
       | ever made a sandwich, you've got this. Nurse!"
        
         | outworlder wrote:
         | > "You want to be a surgeon but don't have the experience?"
         | 
         | Well, what do surgeons have to do beforehand? Study. This is no
         | different. Most of tech doesn't require fine coordination motor
         | skills that need to be trained in practice, so this comparison
         | is way off.
         | 
         | Also, like the excerpt you quoted says, "you won't be an
         | expert" after reading the guide. A surgeon is an expert by any
         | definition.
        
           | debacle wrote:
           | Study, train, shadow, and intern for 11-13 years.
        
             | siva7 wrote:
             | That's in our terms a Director of Engineering. In medicine
             | it's just a fresh grad.
        
         | rednerrus wrote:
         | It's kind of true if you just think about the beginning of the
         | long tail as the end point.
        
         | gabereiser wrote:
         | The reality is you can become an engineer with no degree whilst
         | you can't become a surgeon with no degree. The criticism of the
         | writing is dismissing that a lot of people want to go for that
         | promotion or higher tier but due to imposter syndrome or lack
         | of confidence, abstain. This guide is to help them overcome
         | those fears and level up. If you have an issue with people
         | leveling up, good luck to you.
        
           | eternalban wrote:
           | That trivializes our profession and hard earned experience
           | simply because a degree is not a requirement. It is
           | ridiculous to say drag'n'droping something is halfway to
           | being a systems designer. And the anecdote about "experience
           | at facebook" was such nonsense. "I worked at facebook doing
           | something other than distributed systems, and geez, I learned
           | nothing about distributed systems". "QED!"
           | 
           | p.s. I missed this ad hom bit (no, not the issue here)
           | 
           | > If you have an issue with people leveling up, good luck to
           | you.
        
             | gabereiser wrote:
             | Just because you work somewhere doesn't make you an expert
             | at what they do. My Home Depot cashier is incapable of
             | installing the carpet I bought from them. There are levels.
             | Everyone wants to pretend they have FB or Google scale when
             | they are building only to find out they have Ruby on Rails
             | scale after year 4. They don't need a Stanford grad. They
             | need a feature developer or someone who can break apart the
             | monolith so they can scale beyond a single server or group
             | of servers.
        
               | eternalban wrote:
               | We're in mild agreement, so somewhere there has been a
               | misreading/miscommunication on either my part or yours :O
        
             | richardwhiuk wrote:
             | Our profession is trivial and full of smoke and mirrors,
             | and barely deserving of profession. It's full of people who
             | have literally no clue about what they are doing creating
             | systems which screw over other people.
        
               | alfalfasprout wrote:
               | Just because you're all smoke and mirrors doesn't mean
               | everyone else is.
               | 
               | I agree with you that there's lots of impostors that have
               | no business being called an "engineer". But that hardly
               | means it's not deserving of a profession.
        
       | shahsyed wrote:
       | I've only read up to Part Two so far but find the guide is
       | extremely helpful and resonates with other resources (i.e
       | Grokking the System Design Interview) and with my own experiences
       | for what I believe is the very broken interview process that we
       | face today.
       | 
       | Highly recommend. Interviewing.io is one of the best resources
       | for those doing prep today and the team behind it is awesome.
        
       | Samit5174 wrote:
       | A lot of system design guides do enunciate on the fundamental
       | concepts of system design such as scaling, design patterns etc.
       | But explaining how to actually approach the problem before the
       | interviewer and explaining what they're looking for and not
       | looking for is what makes this guide unique. Otherwise, by the
       | time the candidate gets to the meat of the problem, the
       | interviewer might have already lost interest in them. So great
       | job guys!
        
       | tootie wrote:
       | I think it's funny how they say you don't need experience to pass
       | one of the interviews. Last time I went in to one of these as an
       | experienced engineer I probably said all sorts of things they
       | didn't want to hear like there's no point building a scalable
       | system until you're sure your product has traction. That and I
       | kept trying to extract imaginary requirements. I still have no
       | idea what they wanted to hear so I just name-dropped architecture
       | paradigms. Didn't get the job.
        
         | siva7 wrote:
         | You're wondering why you didn't get the job after letting the
         | interviewer feel like their assessment tasks weren't perfectly
         | designed?
        
           | twelve40 wrote:
           | Well, the sad truth is that a lot of _interviewers_ actually
           | suck at interviewing, so sometimes an interview devolves into
           | a bewildering game of what this particular person wants to
           | hear today based on their mood, especially with the open-
           | ended questions. It is not always possible to suffer through
           | this process politely and constructively.
        
         | alex_sf wrote:
         | > Last time I went in to one of these as an experienced
         | engineer I probably said all sorts of things they didn't want
         | to hear like there's no point building a scalable system until
         | you're sure your product has traction.
         | 
         | So.. you argued with the interviewer about their question being
         | 'invalid'. That's not going to be a winning strategy. If you
         | have to insist on making comments like these, a better way to
         | express it would be:
         | 
         |  _" Well, I know the context here is that we're designing a
         | new, small-scale system. In cases like these, I think it's
         | normally most helpful to get an MVP out-the-door, and not worry
         | about scalability. However, in a situation where we _were_
         | concerned about scalability, I'd start by..."_
         | 
         | > That and I kept trying to extract imaginary requirements.
         | 
         | This is more on the interviewer. If you ask for requirements,
         | they should provide them. If they've done it a while, they
         | might have a generic set, but they should at least be willing
         | to make them up on the spot. In lieu of that, there's no rule
         | that says you can't make them up on your own. E.g.:
         | 
         |  _You: "How many concurrent clients do we need to support?"
         | 
         | Them: "I dunno, just make it scalable."
         | 
         | You: "Ok, let's assume it's 10k and we want to make sure we can
         | scale that horizontally in a roughly linear fashion up to
         | 100k.."_
        
           | tootie wrote:
           | I don't know why you assume I was rude about it. I phrased it
           | all equivalently to how you said. A lot of my background was
           | in tech services so I'm very well practiced in asking these
           | kind of questions. They pretty much waved off all of them
           | saying it wasn't relevant.
        
       | jefQuery wrote:
       | I read all 4 parts in the pre-released version on the
       | interviewing.io discord. Here's my feedback:
       | 
       | Loved how much they go into the actual interview dynamics and
       | phrases to say, where as other resources wave away interacting
       | with the interviewer as an implementation detail. Haven't seen
       | that anywhere else on the web and it's super helpful. The
       | framework is also much more fleshed out than, for instance, the
       | HiredInTech system design guide.
       | 
       | However, the 12 tech ideas section was a little too dumbed down
       | for me, though it might be helpful for someone with less
       | experience. I also noticed a few typos (MangoDB, cache vs hash)
       | and told them, and they said they'll fix it in the next version
       | of the guide.
       | 
       | 3.5/4 stars; would read again
        
       | rickreynoldssf wrote:
       | First off, I'm not disparaging the content, I'm sure its good and
       | useful in interviewing at most companies.
       | 
       | ...that said. This kind of thing annoys me. You shouldn't have to
       | study for an interview. Either you meet the requirement and have
       | the experience or you don't. Reading books and stuff like this is
       | really a cheat by the person being interviewed. You many have
       | studied enough to "pass the test" but you really don't have a
       | deep usable knowledge of the material and will likely forget much
       | of what was studied.
       | 
       | When I do interviews I make sure the candidate is aware that
       | studying will be a pointless endeavor and if I can tell your
       | answers come from one of the interview prep books I'll end the
       | interview early. My interviews ask questions that will tell me if
       | you REALLY know the subject. For example if JavaScript is a
       | requirement I'll throw this at you
       | 
       | const a = [1,2,3,4,5,6,7,8,9];
       | 
       | const b = a.filter(x=>1);
       | 
       | if(!!1 && b.some(e=>e>6)){
       | 
       | foo();
       | 
       | }
       | 
       | and ask you to tell me what it does. Its totally weird code and
       | seeing that in actual code is highly unacceptable BUT if you
       | really know JavaScript you will be able to tell me what this does
       | in less than 30 seconds. Immediately if you're going for a Senior
       | position.
       | 
       | I'm known for hiring the best engineers.
        
         | ZephyrBlu wrote:
         | Wait, what?
         | 
         | You're saying "you shouldn't have to study for an interview
         | because you either have the experience or you don't" and then
         | you're equating being able to answer a trivia question with
         | experience.
         | 
         | The irony is extremely rich. Being able to answer any
         | particular question cannot measure if someone has the requisite
         | experience. The only thing it tells you is that they can answer
         | that question.
         | 
         | Your judgement of them based on your question is extremely
         | subjective and doesn't tell you whether they "REALLY know the
         | subject" or not. You are just testing your own biases which may
         | yield good results, but call a spade a spade.
         | 
         | > _When I do interviews I make sure the candidate is aware that
         | studying will be a pointless endeavor and if I can tell your
         | answers come from one of the interview prep books I 'll end the
         | interview early. My interviews ask questions that will tell me
         | if you REALLY know the subject. For example if JavaScript is a
         | requirement I'll throw this at you_
         | 
         | How can you tell if someone had simply memorized a few pieces
         | of JS trivia and is regurgitating it to answer your question?
         | The code is not that complex or "totally weird".
        
         | xapata wrote:
         | > best engineers
         | 
         | Precision is different from recall.
         | 
         | You're asking trivia. I'd rather ask questions that can't be
         | studied for, only practiced through years of experience.
         | 
         | I also sometimes hire people who don't know JavaScript, yet.
        
         | candiddevmike wrote:
         | I think it's a combination of a lot of interviewers priding
         | themselves when they "stump the chump" and a possibly
         | subconscious optimization to find folks who won't upset the
         | status quo.
        
       | steve76 wrote:
       | [dead]
        
       | Ozzie_osman wrote:
       | I love a few things about this guide. Firstly, that is
       | acknowledges the fact that interviewing for a thing is different
       | than actually doing the thing. Secondly, that it takes the
       | position that system design interviews are (or should be) more
       | about _how_ you approach a problem than about knowing the details
       | of distributed systems.
        
       | [deleted]
        
       | ed25519FUUU wrote:
       | > _Interviewers want to engage you in a back-and-forth
       | conversation about problem constraints and parameters, so avoid
       | making assumptions about the prompt._
       | 
       | As someone who has conducted countless interviews at a FANG, I
       | can not stress this point enough. The ability to just talk about
       | a problem makes a big difference between a mediocre interview and
       | a great interview. Besides, it's what makes an interview fun or
       | lame.
        
         | dakiol wrote:
         | Problem is: as candidate you don't know if "engaging in a back-
         | and-forth conversation about problem constraints" is something
         | the interviewers want. Some interviewers want it, but it's not
         | always like that. And, no, usually discarding an entire company
         | just because the interviewer on duty doesn't like "engaging" is
         | BS.
        
       | rednerrus wrote:
       | We've gone away from system design interview questions on my
       | team. We ask people to diagram something technical they
       | understand well and the team digs in and asks questions to
       | understand depth and breadth of the candidates understanding. For
       | us it works much better. It's a chance to see how well candidates
       | do in following instructions. It gives you a chance to explore
       | depth and breadth of their knowledge on something technical that
       | they claim to understand. Our philosophy is how well you
       | understand something you claim to know well is indicative of the
       | depth and breadth of your technical knowledge in general. There
       | are plenty of opportunities in this to ask about design and get
       | to know how people think when it comes to design. I think it
       | helps to eliminate false negatives and false positives.
        
         | jahewson wrote:
         | I don't like this approach because it doesn't provide
         | measurable or repeatable criteria for comparing candidates. It
         | also suffers from a sort of Gell-Mann amnesia where a candidate
         | who spouts good-sounding BS about a topic you're not familiar
         | with is assumed to be competent across the board.
        
         | gautamdivgi wrote:
         | You're ruling out all candidates who work on classified systems
         | and those under an NDA
        
           | rednerrus wrote:
           | We assume that good engineers will know something about
           | technical systems that are not directly related to the exact
           | thing they're working on now.
        
             | zbuf wrote:
             | Yup, the key thing is let the candidate pick -- any
             | technical system they understand.
        
         | azornathogron wrote:
         | I like this... in theory. But I don't think I'm allowed to give
         | you a system diagram and detailed explanation of systems I've
         | worked on, because obviously they're proprietary. That seems
         | like a problem.
         | 
         | How do your candidates normally work around this? Does everyone
         | just talk about hobby or open-source systems they've worked on?
        
           | ok_dad wrote:
           | The only really important details to keep secret are
           | business-specific algorithms, so talking about the overall
           | architecture of a system is usually okay, without those
           | details. If you're building very special architectures where
           | that actually is the business detail, then I suppose you need
           | to figure out how to talk about something else similar or
           | something. I just talk about the systems I worked on in
           | generalities, so I would talk about how we get some telemetry
           | from some devices, process it, store it, and etc., but only
           | the mechanical details and not the meaty algorithmic parts
           | (we use a JSON API to submit the telemetry, then we store it
           | in a table, then we take that data in our other component and
           | process it through our "algorithm", etc.).
        
             | [deleted]
        
             | sroussey wrote:
             | Your ideas of what should be secret or not may not at all
             | be what the candidate agreed to in their employment
             | contract and NDA.
        
               | cyc116 wrote:
               | Exactly. Not to mention high level business logic could
               | be inferred from system architecture.
               | 
               | Sure sounds like a good way to perform recon on a target
               | company.
        
               | rednerrus wrote:
               | We say specifically "diagram a technical system you
               | understand well." It's going to be challenging to work in
               | technology if the only technical system you understand
               | well is the one you're currently working on and only the
               | parts that are under NDA.
        
               | cauthon wrote:
               | I have the opposite question from other people in the
               | thread - this seems pretty open-ended.
               | 
               | Just as an example, I do bioinformatics work, and
               | "technical system" for someone I'm interviewing (as I
               | understand your question) might encompass any of:
               | 
               | - a workflow manager: how it works under the hood, common
               | patterns for modularity/reuse or configuration
               | 
               | - a specific pipeline: the stages of cleaning and
               | quantifying raw data, the rationale for various stages
               | and the tools chosen to execute them (including how to
               | benchmark various methods against each other)
               | 
               | - a specific third-party tool: theoretical details of the
               | algorithm, practical considerations for when to apply one
               | over another
               | 
               | - familiarity with common general-purpose packages or
               | APIs (e.g. pandas, numpy, scikit-learn)
               | 
               | - QC: common metrics for QC'ing various experimental
               | data, how to decide if data is "good enough", how to
               | troubleshoot biological vs technical (lab) vs technical
               | (computational) sources of error
               | 
               | - biology: technical details of an experiment, the
               | technologies generating the data, or the underlying
               | biology
               | 
               | - data analysis: how to choose and make relevant figures,
               | any of many data-science/ML topics (e.g. clustering),
               | connecting data to relevant domain questions
               | 
               | - devops: data storage/management on HPC or cloud, HPC
               | job schedulers, any of many cloud topics (e.g. IAC,
               | setting up a database or cloud execution of a pipeline)
               | 
               | I'm more curious about how you guide a candidate towards
               | selecting a system that gives you the most relevant
               | perspective on their thinking and skillset - do you
               | provide any suggestions, or are there typically pretty
               | evident choices based on the role?
        
               | rednerrus wrote:
               | For our more junior roles, we leave it more open ended
               | because candidates may not have a similar knowledge bases
               | to the panel. For more senior roles we advise that if
               | they pick technologies that are pertinent to the role and
               | likely to be understood by senior/lead/staff engineers,
               | the process will go better for candidates and panel
               | members.
               | 
               | If I were in your position, one of understanding many
               | complex systems, I would advise you to pick where you
               | felt both strong and the panel was likely to have some
               | entry point into.
        
           | rednerrus wrote:
           | We call this out in our pre-interview handout. If you've got
           | an NDA, choose something that isn't included in your NDA or
           | figure out a way to describe it at a high level. We caution
           | candidates that if we dig in and we run into something
           | blocked by the NDA it creates challenges with our evaluation.
           | 
           | It doesn't necessarily have to be something that you're
           | working on. It just has to be something that you understand
           | well enough to describe the design of and how things are
           | inter-connected.
        
             | operatingthetan wrote:
             | >We caution candidates that if we dig in and we run into
             | something blocked by the NDA it creates challenges with our
             | evaluation.
             | 
             | So you're penalizing those under NDA and unecessarily
             | limiting your candidate pool.
        
               | rednerrus wrote:
               | There's no penalty. There are plenty of technologies that
               | you're working with that aren't under NDA. We're not
               | asking you to diagram what you're working on, we asking
               | you to diagram something technical that you understand
               | well.
        
               | _visgean wrote:
               | When I interviewed with apple they said pretty much
               | everything they do is proprietary and considered secret.
               | I imagine for some of these people working there for
               | years it would be hard to avoid breaking nda
        
               | rednerrus wrote:
               | There's no place where we are asking you to diagram the
               | system that you're working on. We ask you to diagram a
               | system you understand well. Are you using messages
               | queues, container orchestration, network components,
               | cloud infrastructure, Java/rust/go/Python/etc.? Tell me
               | about one of those components and how they connect
               | together in theory vs the specifics of your system.
               | Everyone who works in technology works with, mostly,
               | complicated interconnected systems. The point of this
               | exercise isn't to design a system or tell me about a
               | system that you've designed as much as it is about
               | helping the team to understand the breadth and depth of
               | your technology knowledge. Good engineers typically find
               | creative ways help us understand their knowledge without
               | disclosing NDA material.
        
               | fiddlerwoaroof wrote:
               | But, if you're a web developer you should be able to
               | diagram what happens when a browser makes a request
        
               | operatingthetan wrote:
               | Exactly, I work in consulting and under a blanket NDA for
               | all work I do. In addition clients often put us under
               | theirs as well. The other poster doesn't seem to have
               | much experience with NDAs and seems to think the 'secret
               | parts' are made explicit, they are not.
        
               | Salgat wrote:
               | Being able to use something you've intimately worked on
               | as part of your job is a huge advantage since you're so
               | familiar with it.
        
               | rednerrus wrote:
               | There have to be parts of what you work on that are not
               | covered by NDA. Solving problems like this would be
               | indicative of someone we would want on our team.
        
               | zbuf wrote:
               | It's a reasonable hurdle; an employee who previously
               | signed an NDA (or any one, for that matter) needs to be
               | able to design new systems without regurgitating verbatim
               | parts of an old one under NDA.
               | 
               | So it's really not a big ask to navigate their own NDA
               | and come up with something interesting to talk about at
               | an interview.
        
           | eschneider wrote:
           | 98% of what you'd be inclined to diagram out and explain for
           | a system design interview isn't remotely proprietary. People
           | are generally looking for a high-level overview of a system
           | you've worked on to see a) that you've really worked on it
           | and b) you can explain it such that it makes sense.
           | 
           | Sure, folks will ask you to drill down here and there for
           | more detailed info, but if someone pokes on something where
           | the details really _ARE_ proprietary, it's fine to just say
           | that and offer to drill down somewhere else.
        
             | toolz wrote:
             | I'm not a lawyer, but wouldn't anything you or anyone else
             | developed on company time at another company be owned by
             | that company and thus proprietary?
             | 
             | In practice I can't imagine the spirit of any law would be
             | violated by doing an architecture diagram, but it seems
             | likely (to me, at least) the word of the law would be
             | violated.
        
               | Swizec wrote:
               | > I'm not a lawyer, but wouldn't anything you or anyone
               | else developed on company time at another company be
               | owned by that company and thus proprietary?
               | 
               | In theory yes, in practice ... if that's true, why would
               | anyone ever hire you for your experience? You wouldn't be
               | allowed to use it.
        
               | ozim wrote:
               | So no one else can never build todo app or blogging
               | system?
               | 
               | There is term called prior art an for me if you write
               | bunch of props to database like text/numbers it is
               | basically done in every other system.
               | 
               | Unless you build novel db system of course.
        
               | jfarina wrote:
               | How could you ever interview anywhere if you couldn't
               | provide details of the projects that you worked on?
        
               | [deleted]
        
               | eschneider wrote:
               | Sure. But the level of description that you're giving in
               | an interview can be pretty generic/non-proprietary. If
               | that wasn't the case, then you really can't reuse any
               | knowledge from job to job and that's just not so.
               | 
               | Sure, every company is going to have their 'special
               | sauce' components, that ARE proprietary, but nobody's
               | going to expect you to unpack those.
        
             | rco8786 wrote:
             | > 98% of what you'd be inclined to diagram out and explain
             | for a system design interview isn't remotely proprietary
             | 
             | Maybe we're just on different wavelengths, but literally
             | every single thing I work on that would be a good candidate
             | for this sort of interview is extremely proprietary...and
             | I'm just working on regular ol' backend services at
             | [generic big tech].
        
           | hadlock wrote:
           | System diagram of a CRUD SAAS isn't going to be a critical
           | business secret in the same way it might be for a company
           | that does stream processing of marketing/advertising data off
           | of twitter or video/radar analytics. Or a real-time fintech
           | trading company. Many companies are a Python/Django monolith
           | on Postgres with redis & || memcached. That system diagram
           | isn't going to let you disrupt the online medical services
           | industry but it's what a lot of them use.
        
         | bluetomcat wrote:
         | Few people at software companies are designing systems from
         | scratch nowadays. If they are, they'll be gluing together
         | third-party middleware applications like database systems,
         | queues, proxies, load balancers, etc.
         | 
         | A general understanding of computer architecture, programming
         | language theory, networking and common protocols and formats is
         | more valuable. At that fundamental level, they won't be using
         | recent fancy buzzwords to sound cool, but could be using their
         | brain to come up with something original.
        
           | rednerrus wrote:
           | This is exactly why we do this. It gives candidates a chance
           | to choose what they want to diagram for us. What do you know
           | well?
        
           | fdgsdfogijq wrote:
           | If you havent designed a system from scratch, or designed a
           | major change, you arent a senior engineer.
        
             | jhp123 wrote:
             | these "system design interviews" often focus on systems at
             | the scale of major consumer internet companies, e.g.
             | "design youtube", "design twitter".
             | 
             | How many systems of that scale even exist? 100? Only the
             | core developers of those systems would be considered
             | "senior engineer"?
        
               | specialp wrote:
               | Someone isn't going to design one of these system or has
               | designed some of these systems themselves or during an
               | interview. However for something like YouTube one could
               | say Ok to start simply I would have a frontend form to
               | submit videos, which sends it to a video conversion API
               | queue that calls back when it is completed or could be
               | polled for progress. Now obviously what YouTube really
               | does is much more complicated. But the follow up
               | questions could be like OK your form works and now your
               | video site becomes enormously successful and your video
               | transcoder is overloaded, what would you do? Well I could
               | parallelize the consumers of the queue to some large
               | number, and scale based on load...
               | 
               | So isn't going to be something like I would architect my
               | own massively parallel converter database and binaries
               | written from scratch to process all the various formats
               | which is probably closer to what is done in reality. But
               | senior and lead engineers should indeed understand
               | tradeoffs, parallelization, queues, data storage
               | concerns. They are given as questions because people know
               | from a use case view how they generally work.
        
               | squeaky-clean wrote:
               | When I interviewed at Facebook my system design question
               | was for a Yelp-ish clone that would be rolled out to
               | Facebook as a whole. The interviewer told me the design
               | had to be scalable to 1 billion daily users on day 1.
        
           | p1necone wrote:
           | > database systems
           | 
           | When was the last time building a database from scratch was a
           | sane approach to building something?
        
         | onlyrealcuzzo wrote:
         | > It gives you a chance to explore depth and breadth of their
         | knowledge on something technical that they claim to understand.
         | 
         | Assuming you know enough about what they're doing to actually
         | dig in - which, granted, maybe you're only considering
         | interviewing people who are working things you're somewhat
         | familiar with.
         | 
         | Ultimately, I don't see how this is different from a technical
         | design interview - in that you can be susceptible to hiring
         | charlatans, and pass on people who'd rather say they don't know
         | something than try to BS most of it on the spot to sound
         | impressive.
         | 
         | The two people could have the same knowledge. You're more
         | likely to hire the charlatan. Maybe that's what you want
         | :shrug:
        
           | Scubabear68 wrote:
           | In my own experience interviewing people about systems they
           | have worked on (as opposed to hypothetical on-the-spot
           | design), we have been highly successful in routing out
           | charlatans, as you put it. They very rapidly get hand-wavy
           | and are only able to give the most shallow of answers. In a
           | few cases they will go in-depth, but reveal truly bizarre
           | decisions or lack of understanding of the platform.
           | 
           | Good senior engineers can usually go fairly deep, they are
           | honest about where they don't have as much knowledge, and are
           | usually candid about what was good and maybe what in
           | retrospect was a hack or a bad decision in retrospect.
        
           | rednerrus wrote:
           | We've had very few false positives. It's a conversation and
           | we understand and appreciate when people say they don't know.
           | We understand that really good engineers say "I don't know
           | how that works." If all of your answers are "I don't know how
           | that works.", it'll be red flags enough for the team. The
           | team of interviewers has a very wide and deep knowledge of
           | technologies (it's kind of a virtuous cycle). We call it out
           | in the pre-interview handout that if you pick something super
           | obscure it'll hurt your chances as the team will struggle to
           | ask good probing questions.
           | 
           | The nice thing about this is you're giving the candidate a
           | choice about what they want to describe. Good engineers will
           | choose appropriate topics.
        
         | posharma wrote:
         | I don't know if you work in FAANG or no, but most FAANG
         | interviews just don't work this way. So, as much as I like this
         | style, it's just 1 company and definitely not the norm. The
         | rest of us are stuck with design Uber, Whatsapp, crap...
        
         | nothrowaways wrote:
         | It still looks design interview
        
         | mdm12 wrote:
         | I have seen this process described elsewhere as 'reverse system
         | design', and it is my preferred approach to evaluating senior
         | candidates as well.
        
         | jstx1 wrote:
         | Still sounds like a system design interview to me, just a bit
         | less structured.
        
           | rednerrus wrote:
           | We've found that candidates who better understand how things
           | are connected make better candidates and operators. We need
           | some way to gauge how well they understand how things are
           | connected. This is as fair of way as we've come up with.
        
             | zekrioca wrote:
             | I totally relate to that. In the university setting, I see
             | many students more interested in learning keywords instead
             | of "key concepts" behind such keywords. Think of preferring
             | to learn "k8s" instead of "resource manager". Today, very
             | few of them knows that etcd is one of the key components in
             | "k8s".
             | 
             | I guess this behavior is similar to the transformation that
             | happened in other non-CS fields.
        
           | [deleted]
        
         | xen2xen1 wrote:
         | When doing IT people often say "Well, I don't know anything
         | about computers", which I generally found pointless, as with
         | about 30 seconds of talking I can tell if you know anything or
         | not. Your story passes my smell test, as getting someone
         | talking is 90% of telling what they know.
        
           | rednerrus wrote:
           | People with broad and deep understanding of technology can
           | typically gauge if someone knows there stuff or not with 30
           | minutes of them describing a system to you and answering
           | questions about it.
        
         | spike021 wrote:
         | One place I interviewed with last year did something similar in
         | that it was more of a BYOSD (bring your own system design). So
         | it meant I got a chance to think through complex systems I've
         | worked on, mock up a diagram beforehand, and then present it to
         | the interviewer. They then drilled down on a lot of components,
         | why decisions may have been made, etc. Sort of like what you're
         | saying.
         | 
         | Out of all the similar interviews I did last year for that type
         | of round, I enjoyed that style the most. Rather than your
         | typical "build me an {ecommerce site, social network, video
         | streaming site, url shortener}".
        
           | zinclozenge wrote:
           | Square/Block (used to?) ask only 1 system design question and
           | the recruiter would let you know ahead of time so you could
           | prepare for it. Probably because it allows for deeper
           | questioning and answering of relevant technical skills.
        
             | blowski wrote:
             | It's hard to tell between those who know their stuff, and
             | those who are good at memorising all the various courses
             | that tell you what to say. By telling the candidate what
             | system to design you make the latter's job easier.
        
               | pcthrowaway wrote:
               | If someone can quickly learn enough about a system that
               | they can convince a domain expert they understand it well
               | in a deep technical discussion, they're probably a good
               | candidate for hiring, since your business likely consists
               | of many complex systems, and the candidate will
               | theoretically be able to onboard faster.
        
               | blowski wrote:
               | I've seen first hand people hired who've aced the system
               | design interview but then fail to get much done. Building
               | systems in the real world is much more than a few high-
               | level components and algorithms - it's about all the edge
               | edge cases, tricky stakeholders, ambiguous and changing
               | requirements, sequencing and coordinating small pieces of
               | work.
        
               | namaria wrote:
               | Attaining high level understanding and speaking
               | convincingly about it are entirely different skills from
               | knowing how to build it. Interviews are always a proxy
               | anyway, your job will never be solely comprise of
               | convincing people of your expertise. Sooner of later you
               | have to do exercise it somehow. Unless you're the CEO,
               | that is. The higher you go the easier it is to make a
               | career out of being in the right places at the right
               | times.
        
           | [deleted]
        
         | emmanueloga_ wrote:
         | where do you work?
        
         | jason-phillips wrote:
         | > We ask people to [discuss] something technical they
         | understand well and the team digs in and asks questions to
         | understand depth and breadth of the candidates understanding.
         | 
         | This is how I conduct all of my interviews. I can't stand the
         | gotcha-centric, pitfall-laden Jeopardy contest format of
         | interview interrogations.
        
           | rednerrus wrote:
           | We think this is the fairest way to evaluate candidates. I
           | had one standout interview that was very gotcha centric. I
           | didn't think the way the interview was conducted was fair or
           | respectful of my time. I also don't think it did a good job
           | of assessing how well or how poorly I would have done in the
           | job. It seems indicative of poor management. I think it's
           | very important as managers that we respect people and their
           | time, always. This feels like as fair of a way as we've come
           | up with so far to do that. We do two technical exercises,
           | diagramming being one of them. We've had really great results
           | and it takes ~1 hour. That seems fair.
        
         | bhvangoo wrote:
         | hmm interesting approach, really like it. Where do you work?
         | and are you hiring now?
        
         | vsareto wrote:
         | Feels like an Architect interview more than a Senior interview
         | though
        
           | rednerrus wrote:
           | The nice thing about it is that it scales to whatever level
           | you need it to. We've had junior candidates with no real Ops
           | experience diagram synthesizers that they've created. Then we
           | ask questions to gauge their level of understanding. We have
           | a general idea of what it means to be at each of the clearly
           | delineated levels on the team and we ask questions to what
           | seems like the appropriate level. We've had candidates come
           | in to interview for senior positions and during the interview
           | the team drilled down to what we felt like were lead
           | candidate levels and we offered the candidate a lead role
           | instead of a senior.
           | 
           | We call out in the pre-interview handout exactly what we are
           | going to do and what we expect and we let the candidates
           | bring what they think is best. For senior, lead, and staff
           | candidates we call out that bringing something that the team
           | is familiar with as well, will be beneficial to the candidate
           | and to the team.
           | 
           | It's really allowed us to do our best evaluation of
           | candidates in a reasonable amount of time. We have two
           | technical exercises and they take ~1 hour total. We may still
           | be getting false negatives, but we're not getting false
           | positives. Hire hard, manage easy, right?
        
           | pc86 wrote:
           | As a former (reformed?) non-coding architect, non-coding
           | architects are a scourge on the industry. I know you didn't
           | say "non-coding" but if it's a separate job, they're very
           | likely not spending enough time coding.
           | 
           | Seniors should be able to build large, interconnected
           | systems. IMO that's a basic skillset required to reach that
           | level, and part of why I roll my eyes when I see people with
           | 5, 4, _3_ years of experience claiming to be seniors.
        
             | vsareto wrote:
             | People can claim to be seniors because the gates for
             | getting that title are pretty permissive. But even if you
             | had the conviction to re-evaluate yourself ("do I deserve
             | to be a senior engineer?"), you'll find tons of opinions on
             | what it means to be senior, what knowledge they should
             | know, and what they should bring to the table before
             | claiming that. It's difficult to build yourself a widely
             | accepted roadmap.
             | 
             | You have to watch out for people being too exclusionary
             | though, almost getting into no-true-scotsman territory.
             | 
             | For instance: you can be a valuable contributor to a large,
             | interconnected system, explain each part of it, but maybe
             | not have the skills to build it from scratch. I would call
             | that senior, but I wouldn't say architecting it from
             | scratch is a basic skillset of this position. My opinion is
             | if you could build large systems from scratch for a
             | company, I'd say you probably need a title and pay higher
             | than senior.
             | 
             | If you did want to roll architecture into a senior job, I'd
             | imagine the pay is higher than non-architecting seniors,
             | but it's hard to quantify the architecture contribution to
             | the salary's bottom-line. If you took the non-coding
             | architect's salary and added it to the senior's most of us
             | would be clearing like 300k.
             | 
             | Personally, I'm pessimistic around job duties because
             | you'll find so many companies looking for do-everything
             | one-man armies at lower-end wages.
        
             | eternalban wrote:
             | I somewhat take issue with this. (3+ decades of very hands
             | on (read: coding) architecting, including some learning
             | experiences in orbit. I've been coding code-doodling since
             | teenage years.)
             | 
             | A lot of what non-coding architects traditionally brought
             | to the table has been taken over by experts designing OSS
             | protocols, data formats, etc. Take things like data frames
             | that are now exploding in ML space. Seniors today, agreed,
             | should be able to integrate (sub)systems and that may in
             | fact be enough. But a competent systems architect (who have
             | never touched code) should be able to also define data
             | formats, patterns of movement of data between sub-systems
             | (for say optimal performance), the actual computing
             | platform considerations, etc. Also, sometimes when being
             | too close to code, things degenerate to debates about
             | tools, etc.
             | 
             | Naturally my points here gain more validity as system size
             | (or its open-ness requirements) increase.
        
               | monsieurbanana wrote:
               | I always thought that non-coding architects still had at
               | least some background in coding. What does the path of a
               | never-had-coded architect looks like?
        
             | siva7 wrote:
             | Architecture and coding are two distinct skillsets. I know
             | that most senior developers haven't touched a book about
             | architecture for a long time if ever but still feel
             | competent about such topics - falling in the "You don't
             | know what you don't know" trap. This is as problematic as
             | the architect with rusty coding skills or who hasn't worked
             | as a professional developer beforehand. Coding should be a
             | small part of the architect role but this role is usually
             | reserved for very complex systems where the majority of
             | your work isn't anymore about coding because there is
             | enough to fill a full time job otherwise there is no need
             | for an architect at your company.
        
               | Arainach wrote:
               | Why are books important? Senior engineers should be
               | seeing design documents and code reviews that involve
               | architecture and design patterns all the time.
               | 
               | Sure, there's room for external learning, especially at
               | companies where software isn't the primary focus, but
               | almost none of the best software architects I know spend
               | much of their time reading about architecture.
               | 
               | Speaking personally, I've learned more about architecture
               | from reading code and system design interview prep
               | materials than I ever did from any book. The closest I
               | found to a useful book was the "architecure of open
               | source applications" series which is essentially reading
               | code with a senior eng to walk you through it.
        
               | siva7 wrote:
               | I hear the "Why are books important" pretty often when
               | guiding developers. All of the best architects i know of
               | spend much time honing their skills. That won't happen if
               | all you see is just the company you're working at. The
               | worst architects i've worked with stopped learning
               | outside of their job tasks. It's also a step to
               | understand that design patterns and system design are all
               | within the core competency of the senior developer and
               | that the role of the architect has many other
               | responsibilities.
        
               | wholinator2 wrote:
               | While I'm sure that the best employees make their entire
               | lives about work skills, I just can't imagine that being
               | a fulfilling life personally. If i have to spend my
               | nights reading books about work, outside of work, then I
               | don't want to be the best. I have other hobbies I'm more
               | interested in than, "becoming a better employee".
               | 
               | Now, I do feel different about academia though. I could
               | understand doing fundamental research and dedicating most
               | of your living hours to those problems. But i guess I
               | just feel like the research mission is infinitely more
               | valuable than the corporate one. I say this having never
               | had the chance to really contribute anything meaningful
               | to any company I've worked for, and never having worked
               | for a company who's mission felt personally fulfilling to
               | me.
               | 
               | I'm glad that there are people who work their butts off
               | for work in important places but I just can't imagine
               | doing that myself and not just disintegrating with regret
               | when I turned 65.
        
               | dakiol wrote:
               | > I just can't imagine that being a fulfilling life
               | personally. If i have to spend my nights reading books
               | about work, outside of work, then I don't want to be the
               | best. I have other hobbies I'm more interested in than,
               | "becoming a better employee".
               | 
               | I'm the guy who reads books about my career (not about my
               | work) outside of work (in my free-time) and during
               | working hours as well. I love my career (computer
               | science) and I love reading well-known tech/cs books. I
               | don't do it to be the "best employee". I couldn't care
               | less about what I do at work (I, like 99% of the people
               | here, work for a totally useless tech company that nobody
               | would care about if it disappeared tomorrow). What I do
               | at work is stupid distributed systems in Go + Kafka +
               | postgres + k8s (totally uninteresting stuff, but pays
               | very well though). I genuinely enjoy readings books from
               | Stevens, Kerrisk, Kleppmann, etc., just like I enjoy
               | reading sci-fi/drama/etc. novels. I usually end up
               | learning stuff that's actually useful at work, and once
               | in a while I apply such knowledge at work, but I do it
               | only for the raises and promotions.
               | 
               | There are people out there who doesn't give a fuck about
               | tech companies, but care deeply about tech.
        
         | zabzonk wrote:
         | best way of doing interviews imho. apart from anything else, it
         | gives you a chance to show that you know how to
         | design/implement a system that is perhaps more complex than the
         | one you are being interviewed for
        
         | slytherone wrote:
         | Hey, Creator of the guide here
         | 
         | Reverse system design interviews have a a lot of untapped
         | potential. They just started getting a bit more popular in the
         | last year or so (however, most companies haven't caught on to
         | the trend yet.)
         | 
         | You're one of the trendsetters @rednerrus
        
           | moosedev wrote:
           | I had a "reverse" system design interview at Amazon back in
           | the 2000s. Possibly before the modern "forward" system design
           | interview became so popular.
           | 
           | I also remember circa 2012-2014 being required to conduct
           | what are now considered typical modern system design
           | interviews (i.e. as an interviewer) while employed at Amazon,
           | and 90% of (even senior) candidates had no idea how to even
           | begin to approach the "design a system to do X"-type
           | questions. I think this is partly because far fewer people in
           | typical software jobs were building distributed systems back
           | then anyway, and partly because all the YouTube videos and
           | guides like yours didn't exist yet, so nobody was doing the
           | kind of dedicated prep and rote-learning that seems
           | increasingly expected nowadays.
           | 
           | Back then, when the problem was too far from the candidate's
           | real work experience, and they weren't willing to make
           | educated guesses and ask clarifying questions in order to
           | move forward, it was often a struggle (for both of us) to
           | pivot the interview towards something the candidate could
           | tackle and demonstrate their design experience. ("Tell me
           | about a system you designed", i.e. the "reverse" approach,
           | wasn't an acceptable alternative in our rubric.)
           | 
           | Now, just like what happened with coding interviews vs.
           | Leetcode, it seems that a more common challenge for the
           | interviewer is telling the difference between a candidate who
           | is applying real experience and understanding vs.
           | regurgitating/performing what they read in a system design
           | interview prep guide. But that's assuming one is actually
           | more valuable than the other, and I don't have proof of that.
        
       | brailsafe wrote:
       | Super good content. Now for a guide on getting a response back at
       | all for any job application in any industry
        
       | groffee wrote:
       | There's very little content here, especially nothing that would
       | be considered 'senior'.
        
       | joshSzep wrote:
       | I love the content that interviewing.io puts in this category on
       | their YouTube channel. What was especially eye opening is seeing
       | two senior engineers that normally conduct systems design
       | interviews taking the driver's seat. https://youtu.be/Zi0pPkiFemE
       | 
       | TLDW; they struggle! big time!
        
       | mgraczyk wrote:
       | I am on the interviewer side of ~1 system design interview per
       | week and have done probably around 100 of them at Google and
       | other companies.
       | 
       | Most of the advice here is good, although it could be condensed
       | quite a bit.
       | 
       | The biggest red flag for me as an interviewer is when candidates
       | list off concepts or technologies they don't understand. DO NOT
       | say things like "we can't do this because of the CAP theorem" or
       | "we should add a cache to reduce latency" unless what you are
       | saying is true and you can explain why this is true (the guide
       | mentions this).
       | 
       | The biggest green flag is when the candidate obviously has
       | thought deeply about related problems and made design decisions
       | based on real world constraints and requirements. If you bring up
       | a lot of related things you have worked on, explain why you made
       | the decisions you did in those scenarios, if its obviously
       | related to the question, and if you don't spend too much doing
       | it, then you will definitely get a positive recommendation from
       | me.
       | 
       | The purpose of the system design interview is to convince me that
       | you could build, or lead a team to build, the thing that we are
       | discussing at a company like the one where you are interviewing.
       | I feel like I can easily see through interview practice or
       | coaching, so I don't recommend spending more than an hour or so
       | "preparing" for system design interviews. Unless you are
       | interviewing somewhere with very inexperienced interviewers...
        
         | yodsanklai wrote:
         | > I feel like I can easily see through interview practice or
         | coaching, so I don't recommend spending more than an hour or so
         | "preparing" for system design interviews.
         | 
         | I'm very surprised by this recommendation which doesn't match
         | my experience at all. First, lots of candidates don't have
         | experience building such systems, so they need to learn by
         | reading books and articles. Second, the candidates need to be
         | familiar with the structure of the interview and what's
         | expected from them, and that takes practice too.
        
         | leonidasv wrote:
         | >I feel like I can easily see through interview practice or
         | coaching
         | 
         | How do you spot it? I've had candidates with stellar
         | performance on system design interviews, and I've never had any
         | suspect of them (and the resume also seemed pretty strong in
         | those cases). But now I'm curious if I missed something.
        
           | moandcompany wrote:
           | One of the "heavy practice/coaching/leetcode grinding"
           | signals is when the interviewee immediately dives into
           | proposing a solution and discusses facets of that solution in
           | great detail without bothering to ask clarifying questions or
           | discussing assumptions and the risks/consequences of those
           | assumptions.
        
             | ditonal wrote:
             | I think the opposite is true. An experienced engineer not
             | as versed in interview prep might hear the question to
             | design something, and go ahead and show how they would
             | design it based on their experience doing it in the real
             | world.
             | 
             | The leetcode grinder would almost certainly ask clarifying
             | questions since it's heavily emphasized as part of the
             | rubric in pretty much all system design interview prep
             | material.
             | 
             | Of course, the non leetcode grinder might ask those
             | questions, but even the social cues that you're allowed to
             | ask clarifying questions might not be understood.
             | 
             | In my experience, I've seen a lot of people say that
             | systems design test the seniority of a candidate, but then
             | stick to a rubric that the leetcode grinder has memorized
             | and the senior engineer might miss several important points
             | on despite having the experience because they didn't
             | understand all the unwritten rules of the song and dance.
        
           | mgraczyk wrote:
           | It's possible in those cases that the candidates were really
           | good.
           | 
           | The main tells are a mismatch between apparent practical
           | experience and apparent knowledge of the design space. I
           | always dig into a few specific technical aspects of the
           | design as far as possible to see how deep the candidate can
           | go.
           | 
           | For example, if there's a queue I'll ask what would happen if
           | in production the queue starts to fill, and how to mitigate.
           | Most candidates reflexively suggest making the queue bigger,
           | some suggest adding more downstream capacity to drain faster.
           | People with real experience will have encountered this
           | problem and know that you have to spend time investigating to
           | find the root cause of the backpressure, otherwise you could
           | add capacity to random things without reducing the queue
           | occupancy. Are your queue consumers getting throttled by some
           | downstream service? Are your workers CPU bound? The "right"
           | answer here is basically "we should figure out why the queue
           | is filling up before changing anything", but very few
           | candidates answer that way.
           | 
           | Another kind of mismatch is the red flag I listed, where
           | candidates will basically list buzzwords or ideas regardless
           | of whether or not they are related to the question I asked.
           | For example if I ask a question where the user-facing API is
           | very simple (ie, write opaque data to a log) then they start
           | talking about the tradeoffs between graphql vs REST, that's a
           | bad sign.
        
             | yunwal wrote:
             | > People with real experience will have encountered this
             | problem and know that you have to spend time investigating
             | to find the root cause of the backpressure, otherwise you
             | could add capacity to random things without reducing the
             | queue occupancy. Are your queue consumers getting throttled
             | by some downstream service? Are your workers CPU bound? The
             | "right" answer here is basically "we should figure out why
             | the queue is filling up before changing anything", but very
             | few candidates answer that way.
             | 
             | This is the opposite of what "people with real experience"
             | do, at least in production-down situations. The first step
             | is to mitigate, the second step is to root cause. If
             | there's some no-brainer step that has a chance of
             | alleviating the issue while you root-cause, and is unlikely
             | to make things worse, you should take it.
        
               | apsurd wrote:
               | Your point is good, but in making it, you sound like an
               | adversarial interviewer.
               | 
               | You and OP are actually agreeing with "the correct answer
               | is it depends and now let's discuss context". This echoes
               | my experience as interviewer too. It's a red flag when
               | the candidate responds with "the correct answer". That's
               | what OP is calling out.
               | 
               | I'm replying here because I get the impression you're
               | looking for "the right answer" as you see it: "the first
               | step is to mitigate then do root cause". You're right!
               | But it also could be too adversarial.
        
             | jefQuery wrote:
             | It feels cool to me that my nontraditional degree for
             | software (ChemE) drilled this into us and now it comes up
             | in my current job: Rate of input - rate of output = rate of
             | accumulation
             | 
             | It'd be fine to just up the queue capacity if the input is
             | just inconsistent/spikey but averages to the input, but
             | under steady state (or steadily increasing growth) higher
             | input, you _must_ increase the output rate or you will
             | outgrow whatever capacity the system has
        
         | coolspot wrote:
         | > DO NOT say things like "we should add a cache to reduce
         | latency"
         | 
         | We should add a cache to reduce latency tho...
        
           | gilbetron wrote:
           | If you need to reduce average latency and the cache would
           | actually do that, sure. Cache doesn't magically make all your
           | network latencies drop, though.
        
           | jeron wrote:
           | yeah, not sure what is too hard to understand about that.
           | Perhaps it depends on the context but I highly doubt you can
           | go wrong by saying a cache should be added to reduce latency.
        
             | N_A_T_E wrote:
             | Only two hard things in computer science, blah blah.
        
             | lhorie wrote:
             | The way it typically fall aparts for my candidates is I ask
             | about optimizations, they say X could be cached, then I ask
             | about cache invalidation and lo and behold, it didn't even
             | occur to them that the cache needs to be invalidated at
             | some point, so they blurt something along the lines of
             | doing the entire expensive operation again and checking it
             | against the cache, or something similarly nonsensical.
             | 
             | More common than I'd like to admit.
        
               | ThalesX wrote:
               | > then I ask about cache invalidation
               | 
               | No doubt with a follow up on how the variable would be
               | best named.
        
               | old_hat wrote:
               | That's obvious. It's called "x".
        
       ___________________________________________________________________
       (page generated 2023-03-02 23:00 UTC)