6 ms·
> The process “freezes out many of the people who are underrepresented in the software development field,” Larson wrote. “If you’re busy working and raising kid
by brianpgordon 10y ago
> The process “freezes out many of the people who are underrepresented in the software development field,” Larson wrote. “If you’re busy working and raising kids, you want to spend as much of your scarce time as possible learning to code — not performing rote memorization that won’t matter once you start your job.”
I'm not sure I buy this argument. If you have one candidate who has seen all of this stuff before and can use it directly from memory, and another candidate who has been busy raising kids and has never seen this stuff before, who do you want to hire, all else being equal?
I could make an analogy to seeing a doctor. Say your kid is sick with a high fever. Do you want to see someone who did an EMT course at a local community college and hit the basic highlights of how to treat different symptoms, or do you want to see a doctor who had to take everything from organic chemistry to biology to anatomy to pharmacology courses? Sure the chance of any given piece of that training being relevant is small, but you want someone whose decisions are informed by a deep knowledge of the field.
- pistachioknut 10y ago> who do you want to hire, all else being equal? That's the point. It's freezing out people who are equally competent, but can't perform as well at this arbitrary step.
- brianpgordon 10y agoThey're equally competent except that they can't design an algorithm on demand based on remembered strategies for solving problems, or talk intelligently about the trivia of the field that can come up in a technical interview, or tell you the asymptotic running time of a given algorithm, or comfortably rattle off a bunch of code from experience without needing to look things up online, etc. That's not the same as being equally competent.
- memracom 10y agoRushing into coding something using abstract mathematical computer science techniques is a poor way to solve real world business problems. The person who has spent time in the real world raising kids realizes that you do not build business value by being a smartass know-it-all and that when time and money are of the essence, something quick and dirty, maybe even brute force, will save the business, please the customer, and provide you the money to fight another day. Do not hire the smart ass. Take the person who lives in the real world.
- OJFord 10y ago> Rushing into coding something using abstract mathematical computer science techniques is a poor way to solve real world business problems. (If you want a disclaimer, I'm not really sure which side I come down on with this, but:) Knowing how to model something abstractly, and what known good algorithms might be applicable, is exactly not 'rushing into coding'.
- Apocryphon 10y agoIt is when it's done within an artificial fifty minute-long timeframe.
- ceronman 10y agoThis is a strawman argument. Nobody is saying that algorithm and data structures knowledge is preferred over pragmatism, commercial awareness and real world problem solving. What brianpgordo is saying is that algorithms and data structures are an important quality in addition to those.
- derefr 10y agoThat presumes a specific type of engineering role. Here's another: the founders already coded all the brute-force versions of everything. Now they want their software to scale. You will use your knowledge of algorithms and data structures (and distributed systems) to turn their one node that handles 10 events per second into a cluster that handles 10 million per second with low latency across several geographic regions.
- dropit_sphere 10y agoYeah but at this point how are you going to be able to know what to ask? If you have someone who's a better algo ninja such that they can do a whiteboard interview on the things that matter, then have them write your solution. If you don't, either look for someone who's done something like your problem before, and ask about resume/experience instead of whiteboard gauntlets. Or acknowledge that it's a research&implement position, and... again, skip the gauntlet.
- autokad 10y agothose algorithms were discovered by PHD students spending years to come up with them. doubt someone will invent them in a 20 minute window without any reference material. the question is asking if you seen that before, period.
- digler999 10y agoI neither agree or disagree with you, but what concerns me is that your same logic can be applied to the "top tier university" farce: "They're equally competent except that they didn't go to a school like MIT or Carnegie Mellon known for the highest quality CS departments. They obviously would've been accepted if they were top-tier grad material, so they are qualitatively not the same as being equally competent to someone who graduated from one of those programs". I do agree with you inasmuch as they need to be able to speak intelligently about CS. Whether or not they can recite some textbook taxonomy of algorithms, they need to know how to describe and critique an algorithm or describe how a program works.
- synicalx 10y agoEqually competent, but lacking in basic knowledge? It's a miracle!
- aaronbrethorst 10y ago> If you have one candidate who has seen all of this stuff before and can use it directly from memory Except that the continued success and popularity of books like Cracking the Coding Interview suggest that this really isn't the case. The candidate who has spent the last month cramming on the best way to reverse a string in place, or the difference between the plethora of types of trees isn't guaranteed to be the best candidate for your position. All they're proving is that they can pass your screening process. Edit: and to answer your question, I'd rather have the person with 20 years of experience in the field who can't remember how to draw the Lewis structures for arbitrary molecules off the top of their head than the doctor fresh out of school who doesn't have the slightest clue what this blotch on my abdomen might be.
- ebola1717 10y agoWorth underscoring that point - these processes lead you to hire worse candidates.
- kafkaesq 10y agoIf you have one candidate who has seen all of this stuff before and can use it directly from memory, and another candidate who has been busy raising kids and has never seen this stuff before, who do you want to hire, all else being equal? The one who's raised kids† obviously. As that's approximately 3-4 orders of magnitude more difficult -- and indicative of not only of general character (by itself hugely important), but of the more generalized cognitive skills necessary do to high-quality software development -- than the ability to memorize a bunch of scarcely-used algorithms. Because, you know, all those websites and Big 4 recruiters told you to. † And, to bend your requirements (which is necessary because you're presenting us with a false dichotomy), has darn well "seen this stuff" not only in college (unless you think they're lying about that degree), but in the 0.5% or so of real-life development work which actually requires you to conceive, analyze, and flawlessly implement some non-trivial (if not outright esoteric) algorithm right there, on the spot. That is, I don't dispute that these skills have some importance -- just that the current default interview process assigns a ridiculous degree of importance to these skills, way out of proportion to their actual importance in the field. And to the exclusion of other, more generalized skills which are actually way more important, but alas, much harder to measure -- with the current crop of faddish (turn-the-crank) interview techniques, anyway.
- wiredfool 10y agoI would say further, that If you are in a position to be implementing some non-trivial algorithm that's not currently in the toolbox, then your best approach is probably to go read a few papers first, and make sure that the algorithm you're looking at has not been surpassed. (Or, perhaps, you just need to dig something up from the '70s. A lot has been forgotten). Then again, if you can implement Paxos on the first try...
- Washuu 10y agoThe best personal analogy I can think of for myself. Six or seven years ago I was updating some legacy code coming across an unsalted MD5 hash being used, "Huh, I thought MD5 was becoming obsolete." I did my research to confirm and also to determine what would be the best hashing algorithm to move forward with. Of course that is not exactly the same as some other problems presented by white board coding.
- autokad 10y agoi did my masters degree while working full time. at 5pm i started studying and doing homework, i continued (except a break for dinner) till 12 or 1 am. on weekends, the entire time was used for studying / homework. then comes interviews, where i was pitted against students who took 2 classes a semester that spent many hours a day practicing with things like leetcode and cracking the code interview. I have never had to use any code I have seen in that book or the website's competitions. asking people to memorize it for a white board interview seems crazy. one time someone asked me then what? i dont know what is best, but seeing who finds the best answer on stack overflow would be more realistic.
- joshka 10y agoYou can probably read and meaningfully cover CTCI in about 8-12 hours total. Double or treble that if you read slow and do every single question.
- qyv 10y ago> If you have one candidate who has seen all of this stuff before and can use it directly from memory... Then this candidate has likely done many tech interviews before, what does that tell you?
- weixiyen 10y ago> Do you want to see someone who did an EMT course at a local community college and hit the basic highlights of how to treat different symptoms I'd ask the 2 doctors to perform the exact treatment on their own kids, look at the outcome, and then decide. Basically, "build me X" instead of "show me your algorithm skills on whiteboard" is a far better proxy.
- hxta98596 10y agoI'm not defending whiteboard interviews, but I don't think it's a secret very very few candidates answer the questions from real experience. Rather, it's obvious the main approach to dealing with whiteboard questions is to read up and memorize the stuff before an interview. To what extent are companies using whiteboards to test who is serious about getting the job? And who is willing to put in extra time and occasionally do unpleasant extra work? Again not defending whiteboards, and I can think of ways to improve it especially for the more experienced engineers. But all else being equal in terms of two candidates experience and skills and fit; the candidate who was able to memorize things just for the sake of the job, who did research and who came prepared etc. Well that candidate might have the upper hand when making the hiring decision. Right or wrong, companies do want to test for things besides current programming skills, like being a team player and do things that aren't easy or enjoyable. 80/20 rule maybe applies. How else to test this stuff if companies decide it's important?
- zastavka 10y ago> To what extent are companies using whiteboards to test who is serious about getting the job? And who is willing to put in extra time and occasionally do unpleasant extra work? But it doesn't say anything about who's serious about getting that specific job, if every tech company does the same kind of whiteboard interviews.
- SomeStupidPoint 10y agoExcept that my experience is interviewers (in general) prefer to discuss abstract math puzzles they clearly looked up in a book themselves to exploring a relevant question I propose from their actual business domain. I don't mind "how would you implement this basic server idea" or even "talk me through how you'd explore this algorithm puzzle", but I've definitely been docked for not having $OBSCURE_INSIGHT to $RANDOM_PUZZLE in 15 minutes, nevermind that I can usually get them sometime that evening when not standing at a whiteboard being interrupted when I pause narrating for 15 seconds to think, which is an appropriate timeline for any actual algorithms work. (I mean, I can count how many times in my career solving a math puzzle couldn't wait a single day: 0.) Of course, I suspect some of those interviews are designed to fail you as part of H1B scams.
- eikenberry 10y agoOne problem with that argument is that the person who's been doing it for years and has seen it all will not be able to do it directly from memory, because those problems almost never come up in practice. It's like interviewing a doctor by giving them the symptoms of some rare 3rd world disease, that they maybe studied back in school, and judging their ability based on how well they diagnose it.
- vellum 10y agoA better analogy would be if hospitals had doctors do o-chem problems during interviews. Who would do better? The student who just took the class, or the doctor who's been practicing for 10 years? Also, doctors look stuff up all the time. http://www.huffingtonpost.com/2011/11/01/doctor-google-diagnose-symptoms_n_1069654.html http://www.huffingtonpost.com/2011/11/01/doctor-google-diagn...
- touristtam 10y agoYes, that's why technology underlying watson are seen as threatning their job.
- asdfasdf333 10y agoWhat do you think the doctor is doing when he walks out of the room after seeing you. That's right, they are looking things up in a book or on their computer. Your argument is invalid.
- yellowapple 10y agoI'd personally take the EMT. The doctor in this scenario sounds like someone who lacks field experience. Deep knowledge of anatomy and pharmacology doesn't do a whole lot of good if you pass out upon seeing blood :) Same for the prospective programmer who raised one's own kids. That translates to real-world understanding of problems rather than being too deep into the theoretical side.