Slashdot Mirror


Programmers Are Confessing Their Coding Sins To Protest a Broken Job Interview Process (theoutline.com)

A number of programmers have taken it to Twitter to bring it to everyone's, but particularly recruiter's, attention about the grueling interview process in their field that relies heavily on technical questions. David Heinemeier Hansson, a well-known programmer and the creator of the popular Ruby on Rails coding framework, started it when he tweeted, "Hello, my name is David. I would fail to write bubble sort on a whiteboard. I look code up on the internet all the time. I don't do riddles." Another coder added, "Hello, my name is Tim. I'm a lead at Google with over 30 years coding experience and I need to look up how to get length of a python string." Another coder chimed in, "Hello my name is Mike, I'm a GDE and lead at NY Times, I don't know what np complete means. Should I?" A feature story on The Outline adds: This interview style, widely used by major tech companies including Google and Amazon, typically pits candidates against a whiteboard without access to reference material -- a scenario working programmers say is demoralizing and an unrealistic test of actual ability. People spend weeks preparing for this process, afraid that the interviewer will quiz them on the one obscure algorithm they haven't studied. "A cottage industry has emerged that reminds us uncomfortably of SAT prep," Karla Monterroso, VP of programs for Code2040, an organization for black and Latino techies, wrote in a critique of the whiteboard interview. [...] This means companies tend to favor recent computer science grads from top-tier schools who have had time to cram; in other words, it doesn't help diversify the field with women, older people, and people of color.

9 of 1,001 comments (clear)

  1. Same by darkain · · Score: 5, Informative

    Hi, my name is Vince. I interviewed for Amazon, specifically for their PHP API for AWS development team. Despite an entire background of 10+ years of developing front-facing PHP APIs for other businesses, plus having a major part of my code available for public review on GitHub, I failed their interview process because they wanted me to write a specific type of searching and sorting algorithm, by hand, on white-board. This type of code would never have been used on the job, ever. Yet this is what they interview on. The job was to build a PHP API so PHP developers can call basic PHP functions, and the library would translate them over to HHTPS calls to AWS. All of the complex computing/searching/sorting is handled by the existing AWS services.

    1. Re:Same by darkain · · Score: 3, Informative

      Its worse for me, because I did electronics BEFORE programming. I see a bunch of P's and N's and think they're talking transistors, not algorithms

  2. Re:Perhaps a better method... by beelsebob · · Score: 4, Informative

    Honestly, I see all of the complaints above as whines by people who don't understand what a whiteboard interview is.

    * If I ask you to write a sorting algorithm on a white board, I am not asking you to by rote copy out a bubble sort - in fact, if you do it by rote, I'm likely to go "oh, well that was uninformative, he didn't solve any problems, he just copied something out" (and that's why I'm unlikely to ask you to sort things, but instead, something more obscure)
    * If you "don't do riddles" then I actively don't want to hire you - the entire purpose of a software engineer (i.e. not a flunky programmer) is to do riddles, all day, every day. If you don't want to do that, you don't want to do the job I'm interviewing you for.
    * If you need to look up how to find the length of a string in python, I don't give any shits. I don't care if you write x.length(), x.size(), x.count, length(x), I'm asking for you to solve a problem, not get the code in the exact shape it'll compile in.
    * If you don't know what NP complete means, I don't care. Of course I'm going to probe a bit into whether you can analyse the performance of your code - that's absolutely part of the job, and something I need to know you can do. But not knowing what one term means is not going to not get you hired.

    Long story short - don't assume that everything in a whiteboard interview should be taken literally. I don't want to find out if you can write exact algorithm x perfectly so that it will compile. I want to know if you can solve a problem, and can talk rationally about your solution, its trade offs, its performance, etc.

  3. Re:I could not agree more by Anonymous Coward · · Score: 5, Informative

    Bubble sort is also good for almost sorted datasets (pretty much n in this case). It's used for very fast broad phase collision detection where overlaps are detected during swaps. Since the sort happens every timestep, the endpoints stay pretty much sorted and the broad phase collection detection runs in near n time.

  4. Re:Perhaps a better method... by markus · · Score: 3, Informative

    I would vote you up, if I had moderator points today.

    I am in full agreement. Whiteboard tests are very informative and they often are the easiest part of any interview. I usually ask candidates a problem that they can demonstrate with pencil-and-paper or with everyday objects. Yes, this could be a sorting problem, or it could be a simplified subset of long-hand multiplication, or it could be a resource pooling problem, ... . It's things that they intuitively understand how to do in the real world, and I want to see if they can transfer this simple task to something that remotely looks like working code. If they remember the basic tools and concepts of what they learned in their first semester, that certainly helps (and I am worried, if they don't remember that much), but I agree with you that rote memorization doesn't give me any useful insights. And yes, I fully expect that this is a dialog and I'll have to keep dropping hints and answer questions as we go. That's actually another thing I test for. Asking for help is good.

    Same as you, I don't care about correct use of the API or of the language's syntax. Heck, I have accepted pseudo code, and I have accepted code where somebody wrote C and Java simultaneously -- with a little bit of Ruby sprinkled in for good measure.

    I do expect though that candidates have a solid sense of the scale of their problem. They have to be able to explain how many resources they need and how performance goes up when there are millions, billions or even more data sets or users. This might not be needed for every job opening, but in this day and age it is needed for many -- including the ones that I do interviews for. In other words, I expect a high-level understanding of algorithms, of CS theory (e.g. big-O behavior), and of fundamental engineering concepts (e.g. estimate latency of operations, estimate caching performance, ...).

    These are things we actually need for a candidate to be successful in their work. And there are literally thousands of candidates applying for each job. It only makes sense to sort through them and find the candidates who can do the work.

  5. Re:Interviews need training, too by sttlmark · · Score: 3, Informative

    Yeah, you probably should have just left it at that instead of trying to explain the optimal answer... Interviews are often performed by junior level guys who are out to prove are smart they are (open-minded senior devs are too busy and valuable to do the the initial screening pass). To get past the first tier, sometimes you just have to swallow your pride, pat them on the head, and congratulate them on how clever their "fastest possible" solutions are.

    By the way, Intel supports a POPCNT instruction now (starting with Nehalem). Sources: https://en.wikipedia.org/wiki/... and https://software.intel.com/en-...

  6. Re:Perhaps a better method... by BarbaraHudson · · Score: 3, Informative

    If it goes into a product and you haven't paid them for it or hired them, you've committed fraud. Why not just go f*ck over yet another batch of starry-eyed gullible interns.

    --
    "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
  7. Re:Interviews need training, too by ndykman · · Score: 3, Informative

    I posted a similar comment to this effect. Also a PhD holder, and if I answer a question directly and without pause, it means I really know a good answer. Otherwise, I will ask some questions and explore like everybody else.

    Seriously, I've had people tell me recursion is terrible and knew nothing about tail call optimization, or if they heard of that, they don't understand exactly what it means. Never mind I took advanced coursework on programming language semantics where we had to formally define it. Now, if you asked me for a formal definition, I would look that up, because it's been a while,

    Add in the fact I don't have the PhD from the right schools, so for a few, it can't be that useful, and I really wish it wasn't near impossible to find academic appointments.

  8. Re:Perhaps a better method... by bytesex · · Score: 3, Informative

    Because you should have used a < instead of a >. Jesus.

    --
    Religion is what happens when nature strikes and groupthink goes wrong.