Slashdot Mirror


Tough Tests Flunk Good Programming Job Candidates

snydeq writes "Fatal Exception's Neil McAllister discusses the use of quizzes and brain-teasers in evaluating potential software development hires, a practice that seems to be on the rise. 'The company best known for this is Google. Past applicants tell tales of a head-spinning battery of coding problems, riddles, and brain teasers, many of which seem only tangential to the task of software development. Other large companies have similar practices — Facebook and Microsoft being two examples,' McAllister writes. 'You'll need to assess an applicant's skill in one way or another, but it's also possible to take the whole interview-testing concept too far. Here are a few thoughts to keep in mind when crafting your test questions, to avoid slamming the door on candidates unnecessarily.'"

73 of 743 comments (clear)

  1. the way to go by lecoupdejarnac · · Score: 5, Interesting

    Radical idea: have them write code for a few hours to solve a given problem - then see how their solution looks. This goes a long way towards judging their fit for the job. You can even give them a couple of data structures and algorithms references - on the job we use references all the time, and being able to implement something from a reference and apply it to a problem is a real skill.

    1. Re:the way to go by anomaly256 · · Score: 5, Insightful

      This would be preferable to what one company I applied for a job with did recently. Gave me a fairly straight forward maths problem involving modulus, gave me about *5* seconds to solve it using real code and not just pseudocode. Sure, that was fine. Then they added the caveat 'What if % is an expensive operation? how would you work around it?'. Turns out it was a trick question. They were expecting you to statically store the result explicitly instead of finding different maths that achieved the same result dynamically but more efficiently. less than 2 seconds later the interviewer interjected with the answer before I had a chance to even say or do anything right *or* wrong.

      I don't see how *this* particular kind of quizzing *can* weed good candidates from bad, it's stacked against everyone equally. It's hostile. I'm pretty sure they didn't ever find the 'right' candidate.

      I'm all for puzzles and quizzes to test someone's experience and ability and problem solving skills during job applications, but they MUST a) be unambiguous otherwise you're just being a jerk, and b) must be given a reasonable amount of time to actually perform them otherwise, again, you're just being a jerk.

    2. Re:the way to go by anomaly256 · · Score: 4, Insightful

      In hindsight though, I'm really glad I didn't get that position. I'd hate to work for someone so near-sighted and irrational. :)

    3. Re:the way to go by Amouth · · Score: 3, Interesting

      When i do it i make sure to use an environment that has the same capabilities but they are not familiar with.

      Example for a graphic artist when they list Photoshop i give them gimp (unless they have both then i give them painter). or give them OpenOffice instead of MS.. as for programming normally i will have them debug something that is a language they didn't put on their application, making sure the bug is an obvious one (not a syntax problem).

      i look for how they solve the problem - some give up at the start, others try and figure it out, others will ask questions. when they are working and/or asking questions you can tell if they know what they need to do and are just confused by the environment or if they are completely lost. it is also a good way of testing their critical thinking skills.

      i'd rather hire and train someone who will work out side of their comfort zone, has critical thinking skills, and has the ability to learn. then to hire and spin someone up who might be an good at something but that is all they can or will be able to do.

      On a side note i'm not that great with people skills so while i write the tests i no longer do the interviews - last too applicants ended up crying during the tests.

      --
      '...if only "Jumping to a Conclusion" was an event in the Olympics.'
    4. Re:the way to go by acak · · Score: 4, Insightful

      Too often the interviewer's questions are loaded in two different ways - there is no one right answer and not understanding this or dismissing anything outside the narrow set of answers he/she is looking for shows a lack of maturity on the interviewers side of the table.

    5. Re:the way to go by CannonballHead · · Score: 5, Interesting

      I interviewed at a company, some sort of advertising thing. Relatively small - I was fresh out of college and talked to some heads of something-or-other. Anyways, there were two of us that happened to interview at the same time; they had two test stations setup. There were a few multiple choice sorts of questions, and then an actual programming test dealing with extracting ads out of an XML page, as I recall, in PHP. Well, I'd never dealt with XML in PHP at all, so it was totally new to me. I found various things online (XML parser, etc). After a couple hours and making some progress, but not completing it - and having the other guy already finish roughly an hour or so earlier and whatever - I said I wasn't going to be able to complete it very quickly and asked if I should leave or not.

      The head hiring people asked if they could talk to me, so I said sure. Asked if I thought I could complete it, given time - I said sure, it wasn't that difficult, it's just that I had never worked with XML parsing before and was having to learn it as I went. Then they pretty much startled me. They said, basically, the following: the other guy interviewing had all the skills, he was able to churn out the problem, and his test scores were good (as were mine, incidentally). But they didn't like his attitude (somewhat arrogant, loudly proclaiming "oh yeah, it was easy!" and that sort of thing). They said that even though I couldn't complete it within an hour or two, they liked my attitude, they liked that I stayed at it for about two hours (without being asked really), they liked that I was honest to say I would not be able to complete it by the end of the business day (my interview was at like 2:30 and it was now 4:30). They basically said they'd offer me a Jr. Dev position based on the work ethic, honesty, and generally good attitude/personality (along with knowledge of general programming stuff based on test scores, resume, etc).

      I didn't end up accepting as I got a much better offer elsewhere - also, primarily, based on work ethic, personality, general knowledge, etc.... it was a "we'll train you to do what we want you to do, because we can see you're versatile enough and willing to learn" - but the experience was pretty eye-opening.

    6. Re:the way to go by Shinobi · · Score: 2

      Well, they want to see your raw abilities, not your development environments abilities.

    7. Re:the way to go by beelsebob · · Score: 4, Insightful

      Do they? Why? You're going to be working in a development environment. What good is a guy who can solve trivial problems on a white board when you need a guy who can solve complex problems in a dev environment with a bunch of reference material.

    8. Re:the way to go by wideBlueSkies · · Score: 2

      Yup. The programming assignments work.

      I even go so far as to give them a couple of days to think it through, and send me code that compiles, along with written test cases / data.

       

      --
      Huh?
    9. Re:the way to go by agm · · Score: 2

      Might be better to just hire candiddates, assign them to a work group on some Google Labs type of thing, see how they do. Keep the good ones and wash out the ones who prove not up to the task, unable to work with others or have other issues.

      Depends on your local laws. Here in NZ you cannot fire someone without three written warnings, and even then it's difficult to do. We've only just passed a law which allows for a 90 day probationary period where no reason needs to be given for firing someone.

    10. Re:the way to go by mhotchin · · Score: 4, Insightful

      The saddest thing is - the 'no right answer" questions are (in my mind) one of the *best* ways of evaluating a prospective hire if the interviewer then follows up with "Why did you do it that way?".

      Rather than finding out if the hire can find the answer, I would want some insight into *how* the answer was achieved. Was it something they memorized? Did they evaluate trade-offs? Did the even *see* the trade-offs? Can they evaluate their own answer if (as happens in the real world!) new constraints are placed on the problem?

      An 'inefficient' answer is *just fine* if the code wouldn't be used much, and better if it's more maintainable, for example.

    11. Re:the way to go by superwiz · · Score: 2

      A competent programmer should be able to do that.

      No more than a competent mathematician should be able to do arithmetic. A good programmer should be able to manipulate concepts. Anyone who commits API to memory is most likely writing terrible code.

      --
      Any guest worker system is indistinguishable from indentured servitude.
    12. Re:the way to go by gregmac · · Score: 2

      Development environments and reference materials don't help you if you don't understand the logic.

      When I ask people to write code or solve fizzbuzz-style problems, I tell them to do it in any language they want. I don't care about syntax errors, wrong function names, etc. I don't even care if you use % to take the modulus and your language doesn't even have a modulus operator, or you're writing in a language that doesn't even exist. What I care about that you knew you needed to use modulus, and really, that you solved the problem. If you can't solve fizzbuzz, how the hell are you going to write a multi-threaded high-performance ETL process?

      Missing a semi-colon or closing brace doesn't make you a bad coder. An off-by-one error that you still can't spot after I hint at it, that may. Complete failure to solve the problem, well that definitely does.

      --
      Speak before you think
    13. Re:the way to go by shentino · · Score: 2

      Or maybe they just have you write their code for free under the guise of evaluating.

      Poaching an evaluation for free consulting isn't exactly new.

    14. Re:the way to go by lgw · · Score: 2

      We ridicule this sort of thing as "what do I have in my pockets riddles". Playing "guess what answer the interviewer was looking for" is completely useless as a hiring tool.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    15. Re:the way to go by peragrin · · Score: 2

      they wouldn't call it a resource if it wasn't intended to be strip mined

      --
      i thought once I was found, but it was only a dream.
    16. Re:the way to go by Ethanol-fueled · · Score: 5, Insightful

      On a side note i'm not that great with people skills so while i write the tests i no longer do the interviews - last too applicants ended up crying during the tests.

      Huh, you might work for my company. An entire software department in a company I may know about has jumped ship wholesale, with one person literally getting up and walking out with no notice, and chatter of the remainder leaving, because its run by an insecure touretty-aspie asshole.

      The funny thing is, he (you?) asks all new hires how they can "think outside the box" and make the department better. When people actually bring up useful suggestions, he gets all butthurt and snappy and puts them on his shit-list for making him feel stupid, harassing them at every opportunity. He's certainly one of you, raised in an affluent household and given everything he wanted while mommy made excuses for his rotten behavior. Working for the company is a double-edged sword - it is impossible to be fired for anything short of murder. It's hell when you get stuck with the wrong boss.

      But Ethanol, isn't harassment illegal?

      In corporate Amerika, harassment is not illegal unless the harassment falls under a protected category like race or gender. That means your boss yelling at you daily for inadvertently making him look stupid is not really harassment.

      But Ethanol, why doesn't anybody complain?

      Because the economy sucks and some people have families to feed. The ones who don't would not dare jeopardize their good references within the company, because nobody likes a complainer. You know those 3-page exit surveys you get? HR laughs at them and tosses them in the trash anyway.

    17. Re:the way to go by PeterM+from+Berkeley · · Score: 2

      Hello,

        I think they just didn't want to hire you, so they "failed" you on those two questions. They could then give half an hour on each to the person they actually wanted. Maybe their preferred candidate was the interviewer's brother in law or something.

      Then they justify choosing their BiL by saying "he scored the highest on our test!"

      --PM

    18. Re:the way to go by Splab · · Score: 2

      When I hired for the backend department which worked mainly with databases for a small telecoms I used to hand them some questions.

      Some of them was really basic database stuff, but others had no right answer, they did however, have downright wrong answers:

      E.g. a client reports performance problems with a certain function, you trace it down to the following query:
      "SELECT * FROM PICTURES"
      What do you do?

      This question is not really a trick question, but it weeds out those who have worked with databases but doesn't really know what makes them tick. A "right" answer is to discuss it, ask more about the structure or the needs of the client (can we limit the query somehow, is it returning a bazillion rows? Is it returning binary data? Is it a view?). A downright wrong answer is "I'll add an index".

      Personally I've only once been asked to do programming at an interview, they asked me to do a hashmap in pseudo code; I outlined the functions on a whiteboard and when it came to the actual hashing function I told them, that it isn't something I can do from the top of my head, but I know what book to look in.
      They really liked that, first of all I wasn't afraid of tackling an unknown problem, I didn't mind being exposed at the whiteboard and above all - I know my limitations.

    19. Re:the way to go by ari_j · · Score: 2

      You're the kind of cheat who would rig the Kabayashi Maru...oh, wait.

      There really is value in recognizing not only that you can't solve a problem in the time allotted but also why you can't. There is also value in recognizing that value in others, and in working for people who recognize it in yourself. I would much rather have someone interrupt me at 9 a.m. to say they need some direction to get a task done by 5 than come in at 5:15 p.m. to tell me it didn't get done. I would also much rather work for someone who gives that added direction at 9 instead of just being ticked off about the whole thing.

    20. Re:the way to go by CannonballHead · · Score: 2

      In my particular case, I came in around 2:30pm (this was about 3 1/2 years ago, so I'm a bit foggy on the exact timing) and I asked, after about an hour, if I should keep trying. They said yes, please do.... so I kept trying until I thought it'd be close to when they'd want to leave (and I had a previous engagement that evening).

      But yes, I agree; asking for help on the job is a good idea. Utilizing the skills of your team members, being willing to say "hey, any ideas on how I might be able to do this?" or "can you check to see if I'm doing this correctly before I finish everything?" is something I have seen both ignored (and thus, stupid mistakes are done) and efficiently done (which, in addition to helping get stuff done, also helps the team ... work together as a team and "feel" like a team).

      As I recall, I was able to make headway on the problem. I got it to display the first set of results... oh, that's what it was. Given XML, display them in this page where designated... including pagination. By 4:30 or so, I had gotten the results displaying correctly and all that, but didn't have pagination done.

    21. Re:the way to go by pipedwho · · Score: 2

      But not remembering the name of the function will make you a bad coder in this test.

      Why? It's not like they're going to compile the result directly off the sheet of paper / blackboard / whiteboard.

    22. Re:the way to go by trcollinson · · Score: 2

      Are you really attempting to say that writing code on a blackboard or a piece of paper in an interview setting is substantially similar to pair programming or getting a code review? I can't imagine how that comparison could be made at all. First of all, I have been in a lot of pairs and a lot of code reviews, I either know the person I am pairing with or who is reviewing me very well, or they have some stake in the situation that is equally as high as my own. Second, yes comfort and familiarity with your coding environment are important. I find nothing comfortable about "coding" on a blackboard with people staring at me who may be my next employer, and who have to look at 4 other candidates that day.

      That being said, I think asking a developer to develop is a good idea. I have often given developers a real world task to complete at home before they come into the interview (sent a few days ahead of time). They turn in their work, which they accomplish in whatever environment they feel comfortable, and then we talk about the results when they come in. It works very well, and it a lot less stressful on them than blackboard coding.

    23. Re:the way to go by black6host · · Score: 2

      On a side note i'm not that great with people skills so while i write the tests i no longer do the interviews - last too applicants ended up crying during the tests.

      If you can't conduct the interviews, because of your people skills, how can you work with, train and motivate your staff?

      Having said that, I too have poor people skills. But I've run development teams very successfully. I've managed non-technical people (I was an operations manager for a non tech company) and it was a disaster. But when I work with people who share my love of development and systems work in general, and who want to learn from me, I do rather well. I like to teach people things and help them grow in their chosen field. Then again, I only hired people that I felt were passionate about what they were doing. I had skill tests and all that prepared for them but a fair portion of my assessment of their suitability was their desire and whether or not I thought they would do well with my training and mentoring. "Prima Donnas" were never hired. I had to fire very few of those I hired in the technical arena. Now in the non-tech arena I once fired everyone in the building (not at the same time) but I inherited a staff full of the "This is the way I've always done it and I'm not changing" attitude. Needless to say I got out of non-tech industry. I wasn't good at it. The key is: Can you motivate your staff. If not, then you shouldn't be there.

    24. Re:the way to go by sexconker · · Score: 2

      Well, they want to see your raw abilities, not your development environments abilities.

      "raw abilities" my ass. No one codes that way anymore. Shit would never get done if you had to hire someone who actually knew a language and environment completely.
      Working in language x, environment y, trying to do z? Regardless of whether you've never even seen x, y, or z, or if you're the fucking inventor of all 3, you're going to point your web browser at the google machine to look shit up at some point.

      I haven't touched C/C++ in ages. I've never touched Ruby. If I was asked to blindly code shit on a board/piece of paper, I'd probably just scratch my nuts then leave. If I was asked to actually work with them I'd jump into the existing code and environment (if any), start poking around, look up some reference material, and be on my way to getting shit done.

      There's a reason computer science focuses on concepts and algorithms more than individual languages and environments.

    25. Re:the way to go by Machtyn · · Score: 2

      Perhaps these guys were so proud of their questions, they couldn't wait to tell you the answers to show how clever they were.

    26. Re:the way to go by anomaly256 · · Score: 2

      Or maybe I offended them by offering up a better solution than they had imagined :P

    27. Re:the way to go by TheCouchPotatoFamine · · Score: 2

      programming with pointers is for weenies! real programmers never use a reference, amirite?

      --
      CS majors know the time/space tradeoff, but they never get taught the 3rd, crucial, tradeoff of the set: comprehension!
    28. Re:the way to go by swalve · · Score: 2

      Yes, that's exactly what it is like. A good carpenter would just use a tape measure, which is the better tool anyway. The test is for problem solving, not symbol manipulating.

    29. Re:the way to go by heironymous · · Score: 3, Insightful

      When i do it i make sure to use an environment that has the same capabilities but they are not familiar with.

      If that really were a good idea, then do more of it. For example, give them only Dvorak keyboards if they are fluent in qwerty. See how silly that sounds? Introducing unnecessary cognitive overhead isn't testing much of anything except whether the applicant is willing to accept ridiculous constraints just because they are directed to do so.

      And actually I suspect that obedience is the real property your company needs to test for anyway.

    30. Re:the way to go by timeOday · · Score: 3, Interesting

      Well, they want to see your raw abilities, not your development environments abilities.

      After migrating from C++ in emacs to Java in Netbeans only recently (and maybe a bit grudgingly), I have been spending some time looking over the shoulders of IDE whizzes and found something to admire. One guy I watched basically writes software backwards, starting with a small kernel and "refactoring" it up to a program by referring to classes, methods, and parameters that don't exist, and having the IDE create the skeletons with a few hotkeys. (Not to mention more obvious things like auto-complete and creating imports). I was surprised how fundamentally the tools affect the workflow of somebody who first learned to program using them.

    31. Re:the way to go by syousef · · Score: 2

      Too often the interviewer's questions are loaded in two different ways - there is no one right answer and not understanding this or dismissing anything outside the narrow set of answers he/she is looking for shows a lack of maturity on the interviewers side of the table.

      Agreed. The interview is often a very good indicator of what the job is like. It's just as much of a way for the interviewee to evaluate their prospective employer as it is for the employer evaluating the employee. Even if HR is administering the test or it has been outsourced, that tells you something about how you'll be treated. I remember being rejected based on one of these idiotic interviews for one particular job. It was crushing at the time but in hindsight boy am I glad I didn't get that job! It certainly didn't hurt my career in the long run.

      --
      These posts express my own personal views, not those of my employer
    32. Re:the way to go by Call+Me+Black+Cloud · · Score: 2

      I do the tech interviewing for our project and we are pretty rigorous in our screening and our interviews. The make or break quality, though, is attitude.

      You can teach skills but you can't teach attitude. In fact, my summer intern this year wasn't even a programmer - he was a double major in math and econ - but his spirit and attitude were outstanding so I brought him on (sort of a Pygmalion test of skills vs attitude).

      After his internship was up we hired him as a part-time programmer, with an eye towards full-time employment if he wants to go that route. He fits in great with our team and he's picking up programming very fast (he'd only had one Java class previously).

      Remember, you're interviewing the company as much as they are interviewing you.

    33. Re:the way to go by stanlyb · · Score: 2

      Actually, here is who this guy reminds me of: http://www.youtube.com/watch?v=zP0sqRMzkwo

    34. Re:the way to go by C10H14N2 · · Score: 2

      Had one of these interviews awhile ago. I'm prone to getting spooked under interrogation. But, in an interview I conducted, I was able to recognize our candidate was both brilliant as hell and nervous to the point of babbling (Aspie galore). We hired him. He _is_ fucking brilliant, but sucks at interviews.

      If your main goal is to weed people out by putting them in an unnatural setting for the purpose at hand then test their skills using tools totally removed from how they are actually performed, yes, you may find that one bright shining star who can do and teach, but you'll also write-off as fools legions of people who are gifted as hell but just don't function in that environment. Chances are, though, you'll get middling candidates who have just enough rote knowledge to pass your ten minute test, but would pale in comparison when the test takes weeks, months or years with all the proper tools and resources available.

      Had a whiteboard Nazi been at the helm during the interview, we'd never have hired our best engineer.

    35. Re:the way to go by jeff4747 · · Score: 2

      Because you don't want to pay your developers to spend days solving problems that have already been solved. You want them to spend minutes looking it up on Google.

    36. Re:the way to go by tzanger · · Score: 2

      Chances are, though, you'll get middling candidates who have just enough rote knowledge to pass your ten minute test, but would pale in comparison when the test takes weeks, months or years with all the proper tools and resources available.

      If you're using a ten minute whiteboard test as your only rule of thumb, then you deserve to hire idiots.

      I'm saying that being able to use a whiteboard or piece of paper or back of napkin to describe a problem set and how you'd work your way through it is a fucking valuable skill, and one I'm specifically testing for. I'm not going to wait an hour to have a candidate come in and set up the workstation exactly as they will be using it should they be hired for ANY stage of an interview. That's as ridiculous as making the candidate jump through hoops and answer stupid brain teasers or trivia about computing.

      People get nervous in interviews. If you can't adjust the interview to try to accommodate them, or be personable enough to recognize their nervousness and "talk them down" until they can get their geek on (as another poster wrote)... then you're failing as an interviewer. I don't care how brilliant a person is, if they can't work out a problem on paper or talk their way through a solution, I'm not hiring them.

      I think a lot of the people railing against whiteboard tests are either under the assumption that I'm judging code quality or syntax, or that that's the only test in my arsenal. It's a really quick way to get a good feel for the technical prowess and personality of the interviewee, nothing more.

    37. Re:the way to go by smellotron · · Score: 2

      Whiteboard tests do absolutely nothing to help you know if someone will be a good hire. All it does is test for good whiteboard skills.

      In my experience, whiteboarding encourages the interviewee to talk about the problem and his/her approach in a fashion similar to rubber duck debugging. I don't want to share a repository with a developer who cannot get past this step. What whiteboarding should not be is a confrontation between interviewer and interviewee. Stage fright happens, people forget things on the spot, and a good interviewer should take action to help steer an interviewee out of the hole and back to solving the problem at hand.

    38. Re:the way to go by Animats · · Score: 2

      Then they added the caveat 'What if % is an expensive operation? how would you work around it?'

      Do they program really low end microcontrollers, or what?

      That's a reasonable question for people hired to program very low end microcontrollers. Something in the ATTiny11L class, price about $0.35 each, might need that. If, for example, you're writing code for a transponder key for a car, you might have to cram a crypto algorithm into a device that only has 8-bit add, subtract, and shift. This sort of thing is Not Fun. Especially since you usually have to program the thing in assembler.

      Around $5 per CPU, you generally get enough machine to support C.

    39. Re:the way to go by Ash+Vince · · Score: 2

      This would be preferable to what one company I applied for a job with did recently. Gave me a fairly straight forward maths problem involving modulus, gave me about *5* seconds to solve it using real code and not just pseudocode. Sure, that was fine. Then they added the caveat 'What if % is an expensive operation? how would you work around it?'. Turns out it was a trick question. They were expecting you to statically store the result explicitly instead of finding different maths that achieved the same result dynamically but more efficiently. less than 2 seconds later the interviewer interjected with the answer before I had a chance to even say or do anything right *or* wrong.

      Quite often in interviews people will ask you this sort of bs question. Some parts of and interview are about testing your technical ability but some parts are going to be about seeing how you cope with an unsolvable problem or impossible situation. Quite often they are just checking you can keep your cool and not react to crap being dumped on you without getting irate. Calmly responding that you need more information to solve a problem or need more time never did anyone any harm in this situation.

      For the best training at this go and work in a support department answering the phone to a myriad of pissed off morons. Soul destroying, but will get you lots of practice at remaining calm despite some clueless halfwit screaming in your ear that "its broken" without giving you any useful information that would enable you to fix it or find out what exactly has gone wrong. What doesn't kill us only makes us stronger.

      I'm all for puzzles and quizzes to test someone's experience and ability and problem solving skills during job applications, but they MUST a) be unambiguous otherwise you're just being a jerk, and b) must be given a reasonable amount of time to actually perform them otherwise, again, you're just being a jerk.

      Although by not giving you enough time to work out the solution or by not giving you enough information they are actually simulating the world of work you were looking to enter. I have been working as software developer for years and I have lost track of how many times I have been asked to solve a problem that the client didn't really understand and have the solution by yesterday. That is not to say this is a good thing, but you have to get used to being asked for that crap sooner or later.

      The hardest part of any development project is figuring out what you have to develop with the client. Sometimes the client is a jerk and you just have to deal with it and try your best to help them anyway. Think "The customer is always right, even when they are wrong".

      This is the reason agile software development came about as you can simply not expect a client to stick to a theoretical plan. Invariably when you put the product in front of them they will start thinking of ways it can be improved. Instead you get them involved early and try and develop in such a way the moving goalposts are the most important part of the design.

      I might hate it but I have to deal with it.

      --
      I dont read /. to RTFA, I read /. to offend people in ignorance.
  2. They forgot what tests are for by eparker05 · · Score: 4, Insightful

    Tests can be a good measurement of quality when the test is material that can be studied for. In school you have a test at the end of a class. For certifications, tests are meant to measure knowledge gained during training. In graduate school, qualifying exams are done to second year students who have time to prepare and hone their skills.

    Testing somebody from a cold start, on subjects they have no practical way to prepare for seems like a good way to hire a trivia expert, but the productivity of an employee should be evaluated by his resume and portfolio.

    1. Re:They forgot what tests are for by frosty_tsm · · Score: 5, Insightful

      Or their objective isn't specifically verifying the individual in front of them.

      Picture this: a hiring manager at some medium company reads an article about the brain teasers asked by Microsoft and Google interviewers. He wants his application process to seem more like theirs so they can say they are doing MS / Google style interviews (which sounds good to other managers and executives and theoretically impresses applicants).

    2. Re:They forgot what tests are for by Tawnos · · Score: 4, Insightful

      Which is bogus, because at least here at Microsoft, those brain teaser questions haven't been used in many years, after it was determined they were ineffective and dumb.

  3. Whatever happened by ignavus · · Score: 3, Informative

    Whatever happened to tests like drinking the interview panel under the table?

    Now that is a skill needed on the job.

    --
    I am anarch of all I survey.
  4. Mix it up by Tablizer · · Score: 4, Insightful

    Teams with diverse thinkers are often the most effective. The one who is not good at math puzzles may instead be good at understanding the customer's needs or the intuitiveness of user interface designs in the eyes of non-techies, and vice verse. They each can focus on their specialty, or at least help each other out in their weak spots.

  5. Re:who wants to work for google? by JonySuede · · Score: 3, Insightful

    google is not full with EXCEPTIONAL developers, it is filled with EXCEPTIONALLY clever people; you get what you select for. As D&D should have taught you, INT is not equals to WIS !

    --
    Jehovah be praised, Oracle was not selected
  6. Re:who wants to work for google? by stanlyb · · Score: 2

    They did not invent the search engine, but the way how to best evaluate the site's hit count,interest,etc... Everything else is one big farm, very very big farm.

  7. Re:No surprises there. by NoNonAlphaCharsHere · · Score: 3, Funny

    Lucky thing it's not a spelling test.

  8. The industry has been trashed by offshoring. by Anonymous Coward · · Score: 4, Insightful

    The offshoring of software development over the past 15 years hasn't just trashed the quality of the software that many American businesses use, it has also trashed the ability of software developers to become managers.

    The best software development managers were formerly software developers themselves. They know that experience is what counts. They know that bullshit HR tests don't work. But these kind of managers are now retiring or getting promoted to executive positions outside of software development. There's nothing but a huge void following them, since there have been very, very few software developers in America over the past 15 years.

    The people we have following them often have no software development experience. Many of them are MBAs who don't even know of any programming languages beyond JavaScript, and they only know of JavaScript because they read about it once in some article that was hyping it. The worst are the "professional project managers" who don't even have any relevant college-level training in any useful field (yes, that's right, sociology majors don't know how to be software development managers).

    We don't find good managers in the places where the software development was offshored to, either. Skilled management was never a factor there to begin with, and thus the void has always been present over there.

    Offshoring software development has been one of the biggest economic mistakes that any civilized nation has ever made.

    1. Re:The industry has been trashed by offshoring. by JoeMerchant · · Score: 3, Insightful

      Offshoring software development has been one of the biggest economic mistakes that any civilized nation has ever made.

      I disagree. It wasn't a mistake. It was a deliberate act by short-sighted executive management who profited obscenely from the "bold, visionary paradigm shift." The people who were responsible for the decision have all moved on with their millions in bonuses, stock options, etc. Their boards of directors are mostly made up of people who expect to be dead within 15 years or less.

      It was no mistake.

  9. Too many candidates to choose from by acidradio · · Score: 5, Insightful

    It seems like every job posting now has around 50-100 people who apply. To weed out this many people en masse they will make you do just about anything - tests that have little application to the job that you are applying for, bark like a dog, sing the interviewer's favorite Barbra Streisand song, paint a painting of a nice wilderness scene, tune the carburetor on the interviewer's old Triumph motorcycle... Many of the people are well-qualified and even over-qualified! To weed them out on that alone would go nowhere.

    If I had to tell you how many times I've been asked something stupid and cliche like "Tell me about a time when you experienced change" or "Tell me about a time when you faced challenge" I might go postal. It's almost like HR people invent these questions to pad their interviews because they don't really understand what or who they are interviewing for. I long for the days when a hiring manager or, god forbid, the company owner/proprietor calls and asks you "So, tell me what you are about and tell me why you think I should hire you."

    They can treat applicants like total bastards and get away with it. With this kind of market what is really to stop them?

    1. Re:Too many candidates to choose from by Phoobarnvaz · · Score: 2

      It seems like every job posting now has around 50-100 people who apply. To weed out this many people en masse they will make you do just about anything - tests that have little application to the job that you are applying for, bark like a dog, sing the interviewer's favorite Barbra Streisand song, paint a painting of a nice wilderness scene, tune the carburetor on the interviewer's old Triumph motorcycle... Many of the people are well-qualified and even over-qualified! To weed them out on that alone would go nowhere.

      Another trend we never used to see are the online tests for minimum wage/low paying jobs. Had a buddy of mine who can pass these with no problem tell me you have to lie and don't list your education/training anywhere on the application/resume. Never thought in my life I would see a test battery being used to be able to clean bathrooms or flip burgers. WTF has this country become when slavery to a corporate master is becoming the way of life in the US.

      We want a job to be able to have a place to stay and have some semblance of a life without sponging off friends and families. Because we won't blindly follow directions to clean the bathroom with our tongues or a toothbrush...die at the counter or my desk in 35 years or can make suggestions on doing something better from previous experience doesn't mean we will not make a bad employee. With the economy the way it is...it's not like there's another job waiting out there which will give better benefits/pay.

      --
      Don't worry about the world coming to an end today. It's already tomorrow in Australia. - Charles M. Schulz
    2. Re:Too many candidates to choose from by owlstead · · Score: 2

      Go to NL, we've got a (rising) shortage of IT personel. Of course, your pay level and housing cost may be affected. We are a friendly people that like to drink real beer, talk English and use US keyboards :)

    3. Re:Too many candidates to choose from by nabsltd · · Score: 2

      There is another problem: programmers tend to focus only on programming, and forget to take an interest in the domain where they code.

      My data structures prof wanted to show the worst case when using a binary tree to store input so he used the Unix "words" file as input for one of the test cases.

      Knowing that "English words" was the domain for input data, I reversed every input string before storing it.

  10. Amen by bradgoodman · · Score: 3, Insightful
    I've sat through interviews before where I got hit with some of these "puzzle" questions. The thing that really struck me was that the questions were the kind you'd need to be a Nobel Laureate to solve (not really), but were completely obvious if you *knew* the answer. So, as these were "novel" or "neat" "brain-teasers" - they really assessed only if you were some mathematical savant - and had nothing to do with your coding, or even problem-solving abilities. I'm 100% sure that the interviewer wouldn't have been able to figure out the answers, if he hadn't already known them.

    (In the end I admittedly had absolutely no idea how how to solve the problems, and didn't even attempt to. I got the job anyway.)

    When I interview people - I feel it is my job to "extract" the best out of the candidates, and to find out what "their best" actually is. If I come away from an interview and don't have a strong feeling for a candidates abilities - good and bad - I feel as though I didn't do my job as an interviewer. I've seen too many people "freeze up", or just be shy in interviews. These people maybe were VERY qualified - I feel it is always my job to understand that. My creedo is this: Get the people talking. Get them talking about what they do, and what they love. If you can do this - they'll go into the depths and bowels of their technical knowledge, working style, experience, etc.

  11. Google Example by dupup · · Score: 2

    Google invited me to interview for a Java programming job. They started the interview by informing me that I would be "the oldest person in the group" (I was 39 at the time). Then, I was invited to code a linked list in C on the white board while they watched. I can do this, I suppose, having done it 20 years ago while getting my computer science degree. And never done it since. I questioned the relevance of the problem pointing out that this was surely not required for programming in Java. It kinda went downhill from there...

    1. Re:Google Example by DeadCatX2 · · Score: 2

      I haven't coded a linked list in about 8 years. And I shouldn't have to. There are standard libraries for that, and if you're writing your own linked list, then you're a failure of a programmer in the first place. We learned how to make linked lists in college only so that we knew their strengths and weaknesses [ O(n) traversal, O(1) adding/removing element, etc ], not so we could go on to find jobs writing linked lists.

      --
      :(){ :|:& };:
    2. Re:Google Example by mandelbr0t · · Score: 2

      Which, of course, is why I haven't written my own in over 10 years. The fact that you have forgotten shows that you didn't find it that important in the first place. C is an excellent language for understanding how a computer works. Managed languages are great because they remove elements that are likely to lead to human error. The tradeoff is that your program isn't as fast. These days, there are ways (CORBA, for example) to communicate performance-intensive code with the easier-to-maintain managed code.

      --
      "Please describe the scientific nature of the 'whammy'" - Agent Scully
  12. Less False Positives by Tsarnon · · Score: 4, Interesting

    Sure this technique has tons of false negatives, but I think it has fewer false positives than many other interview techniques. False positives are a much bigger problem then false negatives when hiring.

  13. Re:Never had a problem with these... by Asic+Eng · · Score: 3, Insightful

    Looks like you just flunked the "sample size" test. Don't worry about it, brain teasers aren't for everyone.

  14. Changing the Rules by Nom+du+Keyboard · · Score: 2

    Considering that these questions can be asked once, maximum 3 times, before someone posts it to the Internet, now that I've memorized all of the right answers there they go changing the rules. I'll never get that job now.

    --
    "It's the height of ridiculousness to say for those 9 lines you get hundreds of millions."
  15. I'm about to leave the software (corp) field by TheGratefulNet · · Score: 2

    partly - perhaps even mostly - due to this new strict 'screening' bullshit that everyone in the silicon valley seems to be doing, now. I've been out of work for more than a year now and the interviews I have been on have been markedly different than they were 20 years ago when I first came to the bay area. lately, the interviews are confrontational. they are assuming you are a liar, incompetant and many other bad things - and its up to you to disprove that. they do not seem to want you, they are there because their bosses told them to interview some new people.

    this is quite different from the case where they really are looking to hire and are excited to have found a match (at least on paper) and just want to verify that you are who you say you are. even as little as 5 years ago, the interviews were not so negative. it was more of a verification that you met your paperwork. now, they don't bother to read your resume; or they assume its all lies and you have to start from ground-0 and prove an entire background to them. *over and over*, too; with each new guy that steps in for his 45min slot. show me linked lists; show me trees. show me O(n) stuff.

    the problem for me is that I am starting to not care anymore about this level of detail. I'm 50 and have been doing C since I was mid 20's. I have done my time, to be sure; but I just don't really get into having to prove it over and over again, like my resume is all a pack of lies. it gets tiring and its making me question whether I really want to re-enter this field with these kinds of people 'running things'.

    I do think that people like me are worth retaining in the software development field. true that I'm getting tired of the lower level details and things that are reference (like precise steps in deleting a linked list node) are of no interest to me when I can quickly get the correct sequence in a few minutes of search. there is too much to keep track of and older things do age out, its true. but older folks do have a lot of other things to offer. its a shame that we get passed over due to how the 'tests' are structured these days. I once was able to jump thru some hoops, but now, I'm just not so motivated to play their bullshit 'test me' games anymore. its a shame since I'm not alone in this and losing experienced guys like me is a real loss to the industry.

    --

    --
    "It is now safe to switch off your computer."
  16. Works well if done right by SoftwareArtist · · Score: 2

    I've interviewed lots of people using puzzles of this sort, and I find they work really really well for picking out the better programmers. You need to understand how to do it correctly, though. You're not looking for whether they "get the right answer". You're looking to see how they approach the problem and what sorts of solutions they try (even if they end up not working). When you interview a bunch of people this way, you find they split into a few groups, and the differences between groups are really obvious. For example, some people will just have no idea how to even approach the problem. Others will struggle to figure out an O(n^2) solution. And others will instantly take it for granted that of course there's a trivial O(n^2) solution, but you're obviously looking for something better than that. The differences aren't subtle.

    --
    "I'm too busy to research this and form an educated opinion, but I do have time to tell everyone my uninformed opinion."
    1. Re:Works well if done right by swillden · · Score: 4, Interesting

      I've interviewed lots of people using puzzles of this sort, and I find they work really really well for picking out the better programmers. You need to understand how to do it correctly, though. You're not looking for whether they "get the right answer". You're looking to see how they approach the problem and what sorts of solutions they try (even if they end up not working).

      Mod parent up.

      I work for Google, and interview engineering candidates at Google (which doesn't make me special -- all Google engineers are expected to participate in interviewing), and the above describes what these puzzle questions are really intended to do.

      Evaluating candidates is a really, really hard thing to do. Honestly, it's darned near impossible to do accurately unless you can bring someone in for a few weeks, put them to work on real problems and see how they really perform. Even then you're just scratching the surface. Trying to get a realistic read on someone's capabilities in just a single day? Yeah, right. But hiring decisions must be made, and Google gets hundreds of thousands of applicants per year.

      So, the question becomes not how to truly, accurately evaluate each candidate, but how to fill the positions and ensure that no egregiously bad hires are made. It's sad to reject someone who is really good... but it causes tremendous grief to hire someone who just can't do the job, because firing people is really painful for everyone involved, and quite expensive to the employer.

      With that in mind, here are my perspectives on the article's points, based not only on what Google does, but also on the dozens (hundreds?) of job interviews I did at previous employers.

      1. Recognize that tests are artificial scenarios

      This is inarguably true. The interview is a completely artificial environment which bears no relationship to the actual job. But there's no way to avoid that, so the question become what is the best way to extract as much useful information about a candidate's abilities and characteristics as possible in the brief time allowed. And the time has to be very brief, because getting any kind of an accurate reading depends on getting multiple points of view, and fitting four or five interviews into a day without killing the candidate means that each interviewer really only has about 45-50 minutes.

      The article comments that the problems are hypothetical, without context, etc., but that's because there's no way to present real-world problems in the timeframe given. And, actually, underspecifying problems is deliberate, because it's a good way to see how the candidate reacts to inadequate requirements specifications, which is perhaps the one part of the interview which accurately models the real world at every place I've worked in 20+ years.

      So, the goal is to construct an artificial environment which tests the things that can be realistically tested. Google is perhaps a little different than most companies in that Google doesn't really care what the candidate knows. The infrastructure is so different from everywhere else that it's really not important; there will be so much to learn anyway. Well, basic CS knowledge is crucial, but specific tools and techniques? Nah. What really matters is how quickly the candidate can understand problems, how effectively they can reason their way through the solution space, how well they can communicate their solutions -- verbally and in code -- and how well they can analyze their solutions and explore alternatives. It's all about problem solving and the only way to understand someone's problem solving abilities is to watch them solve a problem they haven't seen before.

      The "they haven't seen before" is crucial... and it's also pretty easy to verify. Here's a word of advice: If you go into an interview and are presented with a problem you already know the solution to, tell the interviewer up front that you've seen it before. Odds are the interviewer will figure that

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    2. Re:Works well if done right by gweihir · · Score: 2

      Well, but you seem to be investing real effort into this and the interpretation of the results. Most of these tests are just used in form of a standardized, cheap-to-administer form and that does not work at all.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  17. Re:Well... by Anonymous+Brave+Guy · · Score: 2

    Because the entire point of those tests isn't to see if they get the right answer, it's to see if the candidate can work with the people in your office.

    The trouble with brain-teaser puzzles and trick questions it that the entire point is usually to make the interviewer feel that they are smarter than the candidate.

    If they make hiring decisions based on that kind of test, this is probably not the case. :-)

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  18. No thanks asshole by Fujisawa+Sensei · · Score: 5, Informative

    Sounds like you're trying to weed the good artists. I have hired graphic artists as well. And it was a done deal pretty much before I even talked to him. There was one thing I looked at and that was portfolio, the interview was just a matter of finding out if they were an idiot or not. It doesn't matter what application a good artist uses to produce the artwork, as long as they produce good artwork. You can train on a piece of technology, as long as the person isn't stupid. But if you think you can actually train a good graphic artist, you're the fucking stupid one. Becoming a good graphic artist takes years of training and practice.

    But I can see why you no longer do interviews, you actually fucking suck at them.

    For instance if I say I know C# and you want me to bang out some code in Python, we're done. Because whether or not you realize it, I'm also interviewing you. And I have stopped the interview process in the middle because the interviewers didn't have their shit together. Seriously if you're going to fuck with me during the interview process you probably don't you have your shit together as much as you think you do. So things are really going to be fucked up once I get started, and I have start looking again. No thanks; find somebody else more gullible.

    --
    If someone is passing you on the right, you are an asshole for driving in the wrong lane.
  19. Re:Well... by nabsltd · · Score: 2

    Can he remain polite when frustrated? Can he admit that his first approach to a problem was wrong?

    Why do you assume this will happen? Is it because you don't give them all the real requirements until after he takes a stab at the answer? That's a common trick that interviewers use to make themselves feel smarter than the candidate. What do you do when someone asks you to give them a real, written requirements list before they start, as they would get if this was a real work situation?

    Can he work collaboratively at all, or does he have to solve problems entirely by himself.

    If your "test" is simple enough to do on a whiteboard, many good programmers won't need any help after reading the written requirements.

  20. This is old news by kc8jhs · · Score: 2

    Alex at The Daily WTF wrote about this problem back in 2007: http://thedailywtf.com/Articles/Riddle-Me-An-Interview.aspx

  21. If its a crappy test tell them, I did ... by perpenso · · Score: 2

    The interview is often a very good indicator of what the job is like. It's just as much of a way for the interviewee to evaluate their prospective employer as it is for the employer evaluating the employee.

    Amen.

    I once interviewed for a programming position at a very young and small company. Most of the interview was done by the owner, a business/marketing guy with some technical knowledge of the industry they develop applications for but with no real knowledge of software development (other than it takes longer than expected). For the programming test I was handed over to his lead developer. The test was crap but I probably did well on it. When I was back with the owner he asked how the test went. I decided to do my side of the evaluation. I told him I probably did well but that the test wasn't very good. I explained why. The test seemed like a sampling of multiple choice questions from quizzes and tests from a bunch of different CS classes. Given that a CS type degree was required the applicant presumably passed all these classes so nothing new was really learned. At least it was easy to grade, however like many things you get out what you put in. If a test is to be given it should test for something a degree does not necessarily demonstrate, the ability to actually develop code that solves the problem or task at hand. That is what you are going to pay people for. The preceding was not some kind of soliloquy, the owner seemed interested and asked questions of his own and the above gives an overview of what was discussed. The interview ran long due to this conversation. I was offered the position a few days later. The owners lack of software experience was a concern but I got a good vibe from our chat about the test and from his responses to some of my general questions. I took the job. It worked out well, he trusted us and took our opinions quite seriously when he needed to make decisions. Oh, my first task was to write a new programming test.

    Today when I interview people and get to the part where I will answer any questions they have, and they say they don't have any, I point out that an interview works both ways. That this is their chance to find out if this company is a good fit for them. Usually there is surprise and a few seconds of confusion but most are able to come up with some questions at that point.

  22. How many people have *made* these tests/questions? by phorm · · Score: 2

    I find that the HR-built questions tend to drive me crazy at times, mainly because some of little to no bearing on the position being interviewed, and others may not *have* an answer.

    Being asked how you resolved a conflict with a co-worker when you've never had one (can't say that now, but during an interview 5-10 years ago I could as I had only worked in smaller shops full of some pretty nice people) is frustrating as heck.

    But back to the technical questions. I've found that making them is fun. Rather that trying to come up with obtuse technical questions, some basics mixed with real situations the company has faced works well (what would you check in situation X). Questions that try and get you to fill in entries that would be more easily available from a man-page are lame.

    In my own experience, the best part of coming up with the questions is getting back answers that I'd never thought of. Sure they don't match the solution/issue given in my own experience, but finding cool new ideas that never crossed my mind is part of what makes tech fun.

  23. Brain Teasers show how they handle not knowing by jddimarco · · Score: 2

    While I don't really ask many brain teasers when interviewing people, one key benefit that brain teasers offer is to see how candidates do when facing an unexpected, off-the-wall problem. Do they freeze? Panic? Make stuff up? Give up? Or do they start thinking it through? This is really important when the job entails facing unexpected off-the-wall problems regularly, as it does in my shop (a top-ten computer science department where weird computing is not unusual). A similarly useful technique in interviews is to hand a candidate a stack of paper, each sheet of which has a snippet of code, the output of a command, or the contents of a standard system file (some of them should be obscure, some common), and ask them to simply identify the programming or scripting language, the command, or the system file, if they know what it is. It's a really quick way to see a candidate's breadth of knowledge and experience, and also (for obscure sheets) how they react to being faced with something they've never seen before. And yes, it does sometimes lead to surreal situations, such as candidates who claim to be e.g. Java programmers but can't recognize Java when they see it.

  24. This weeds out the wise AND the clever by kiehlster · · Score: 2

    Like some of my PhD friends have told me, putting a technical quiz in front of well educated and experienced job candidate is a great way to insult them, and is deserving of a good punch in the face.

    What you get from a quiz is a candidate who is intelligent enough to write a program that is plain to the interviewer. That is, it is neither a wise answer nor a clever one. It is simply an explainable one, and it is usually the explainable ones that show up in "For Dummies" books and have no practical value. You could be interviewing Einstein who would give you an answer that breaks ground in uncharted territory, but you wouldn't hire him because your mind couldn't comprehend his explanations. You could be interviewing Jesus, but his wise answers would be so over your head that you'd not hire him because you couldn't grasp how many risks were calculated in giving you those answers.