Forgot your password?
typodupeerror
Businesses Programming

Ask Slashdot: Are Timed Coding Tests Valuable? 776

Posted by samzenpus
from the beat-the-clock dept.
First time accepted submitter xkrebstarx writes "A buddy of mine recently applied to a large tech company. Before setting up a phone interview with him, the unnamed company issued a timed coding test to gauge his coding prowess. He was allotted 45 minutes to complete an undergraduate level coding assignment. I would like to ask the Slashdotters of the world if they find value in these speed-programming tests. Does coding quickly really indicate a better programmer? A better employee?"
This discussion has been archived. No new comments can be posted.

Ask Slashdot: Are Timed Coding Tests Valuable?

Comments Filter:
  • I dunno... (Score:5, Insightful)

    by Joce640k (829181) on Thursday January 10, 2013 @09:03AM (#42544543) Homepage

    I dunno...but it will weed out the pretenders/bullshitters.

  • The answer is... (Score:2, Insightful)

    by oPless (63249) on Thursday January 10, 2013 @09:05AM (#42544559) Journal

    Emphatically NO

  • Of course (Score:5, Insightful)

    by Bogtha (906264) on Thursday January 10, 2013 @09:07AM (#42544565)

    They are extremely valuable - they let you know which potential employers don't have a clue about programmer productivity / expertise.

  • by loufoque (1400831) on Thursday January 10, 2013 @09:07AM (#42544567)

    I personally discard any company that tests undergraduate-level stuff.
    This kind of thing is completely irrelevant to the skills of a senior engineer.

  • Re:I dunno... (Score:5, Insightful)

    by beelsebob (529313) on Thursday January 10, 2013 @09:11AM (#42544593)

    The other thing it'll do is near guarantee that they get some bugs from all applicants, they'll then have something to discuss in the phone interview, and gage the applicant's responses and proposed fixes.

  • by Ckwop (707653) <Simon.Johnson@gmail.com> on Thursday January 10, 2013 @09:11AM (#42544595) Homepage

    We use Fizzbuzz and a short SQL test that take a total of 30 minutes for the first part of the test. If they fail this, we can them and don't give them an interview.

    A surprising number of people fail this test.

    We then have a larger problem with much more time allotted. Here we're looking for style and quality of construction.

    That said, even with this longer test, the people we hire tend to get the same distance through the test. They're at least within the same half of an order of magnitude.

    At the end of the day, in a paid position you can and do have a deadline to work to. You can't take forever building something. You have to produce the goods!

  • by beelsebob (529313) on Thursday January 10, 2013 @09:12AM (#42544601)

    I personally discard any applicant that thinks like this, it means they can't actually think about algorithms, data structures, and how to design something well, and in doing so will produce sloppy assed code.

  • Re:I dunno... (Score:2, Insightful)

    by Anonymous Coward on Thursday January 10, 2013 @09:13AM (#42544613)

    Exactly. I don't believe that a speed programming will always identify the "better" programmers or employees as the OP appears to be making a correlation between.

    I would suspect that the company is just trying to weed out those who actually have no experience, not those who are "better". It is just a method of screening which can be very effective when dealing with large numbers of applicants.

  • Yes (Score:5, Insightful)

    by Splab (574204) on Thursday January 10, 2013 @09:17AM (#42544643)

    If the people performing the test are any good.

    First of all it will weed out the anti authority programmers. (There is a lot of people who will refuse to do this - the door is right there...)

    Next, it will test if you can handle stress - quality of the code (should be) is irrelevant in these kind of tests. But you learn a lot about how people act under stress.

    Personal experience, during an interview I was asked to implement a hash map on a whiteboard. What they where looking for was not an actual shiny working example (hands up, those who don't need to go look in a book to find a proper hashing function (or the interwebs)) - they wanted to see how I handled myself in a stressful situation.

  • Sure it does (Score:3, Insightful)

    by beinsvein (2752465) on Thursday January 10, 2013 @09:26AM (#42544703)
    If a job requires a skill that is easy to test, it should be obvious that you want to test it. Programming is such a skill. Sure there are tasks within programming that can't be tested in 45 minutes, but there are also tasks that can. I'd feel I knew more about a programmer's skills having seen a couple dozen lines of code she's written than for instance hearing her last employer's opinion, which may be biased by all sorts of interests, or reading the list of projects she'd worked on, where you don't know how she contributed. College grades in programming courses might provide the same kind of information, but courses may not be standardized and the candidate might have developed her skills since college.
  • Re:I dunno... (Score:5, Insightful)

    by hackula (2596247) on Thursday January 10, 2013 @09:32AM (#42544733)
    I never believed the whole "95% of interviewees fail the FizzBuzz test" until I started interviewing candidates. People with 15 years of "experience" on their resume would regularly fail or give up. I also encouraged googling, including just searching for the exact problem, and I encouraged questions and told them that both behaviors were seen as a good thing. IDK how someone could possibly get through a CS program and still fail this test, but it happened regularly.
  • by buddyglass (925859) on Thursday January 10, 2013 @09:35AM (#42544751)
    You would be surprised at the (low) quality of some candidates whose resumes suggest they're qualified for a senior engineer position.
  • Deadlines (Score:3, Insightful)

    by wisnoskij (1206448) on Thursday January 10, 2013 @09:52AM (#42544933) Homepage

    Are you telling us that you have never heard of job deadlines before?

  • by davidbrit2 (775091) on Thursday January 10, 2013 @10:02AM (#42545025) Homepage

    Yeah, give them a simple task. Something that any reasonable programmer should be able to do in 15 minutes. Then give them a solid hour to work on it. If they can't produce something working in that time, that's a pretty informative result. The time limit isn't a speed challenge; it's meant to be very generous, and act as, "Look, we need to move on..."

    Personally, I like to give a few different options from which they can choose freely. Something procedural, something OO, and maybe something in SQL or a functional language. Perhaps a couple different choices for each - around 6 to 8 total. That way you don't run the risk of excluding a worthy candidate because you happened to design some problem they aren't really specialized in, and if they can't handle any of them, that's a nice big red flag.

  • Re:I dunno... (Score:4, Insightful)

    by Anonymous Coward on Thursday January 10, 2013 @10:11AM (#42545115)

    -- pseudo-code
    for i in 1 to 100 loop
          if mod(i,15) == 0 then print 'fizzbuzz' ;
          elsif mod(i,5) == 0 then print 'buzz';
          elsif mod(i,3) == 0 then print 'fizz';
          else
                  print i;
          fi
    end loop

    -- 4 minutes to write pseudo-code, maybe not elegant, but not googling
    -- Depending on the language, I'd have to to look up the print, loop, and modulus syntax

  • by beelsebob (529313) on Thursday January 10, 2013 @10:17AM (#42545181)

    The thing is, you may not be hiring a worldwide known linux kernel expert. You may instead be thinking about hiring someone who's CV says he's done several impressive looking things. You need to verify what his level of involvement in those was, and a good first step is often "are you so retarded that you can't possibly be telling the truth on your CV".

  • Re:I dunno... (Score:4, Insightful)

    by smpoole7 (1467717) on Thursday January 10, 2013 @10:19AM (#42545211) Homepage

    It's not only a great idea to weed out the wannabes, watch how they react when you challenge them.

    The ones whose eyes light up and are eager to prove themselves? That's your guy or your gal. :)

  • Re:I dunno... (Score:5, Insightful)

    by ShanghaiBill (739463) * on Thursday January 10, 2013 @10:31AM (#42545345)

    And yet, as stated above, surprisingly, 95% of job applicants fail, just like the AC above.

    I used to give people this test: Write a program, in any language, to read a list of number from stdin, sort them, and write them to stdout. For instance if the input is:

    23
    14
    375
    42

    Your program should print

    14
    23
    42
    375

    By far the most common "solution" was this:

    main()
    {
          printf("14\n")
          printf("23\n");
          printf("42\n");
          printf("375\n");
    }

    Most of these people had degrees in CS.

    Anyway, I hired the girl that wrote this:

    %!/bin/sh
    sort -n

  • Re:I dunno... (Score:4, Insightful)

    by mcmonkey (96054) on Thursday January 10, 2013 @10:38AM (#42545447) Homepage

    In JavaScript, without using the reverse() method, reverse an array of numbers containing 1,2,3,4,5 in the most efficient way possible.

    Semi-off topic question: really? I mean, are we (programming job seekers) as a group that dumb?

    I recently went through searching for a programming job after 5 years in a position that mainly dealt with configuring off-the-shelf apps. Every single interview at some point had a question that required reversing an array without using Reverse(). (Only about half mentioned efficiency.)

    I'm big into puzzles and logic games, and as long as I can use pseudocode and not stress syntax, technical interviews are truly fun. I enjoy coming up with algorithms to solve interesting problems. But reversing an array is not an interesting problem; it's trivial. It got the point where I felt like I should walk in to an interview, introduce myself to everyone in the room, and go right for the white board and put up an array-reversing function, just to get it out of the way.

    That a significant number of applicants for a programming position couldn't (or wouldn't) solve this quickly is sad commentary. (It's even worse if you consider it's likely yours would not be the first position these folks have applied for. Based on my experience, they would have been asked the same question previously, and not only couldn't come up with a solution, but also didn't think, maybe I should figure this out before I send out any more resumes.)

  • by ShanghaiBill (739463) * on Thursday January 10, 2013 @10:43AM (#42545527)

    I personally discard any company that tests undergraduate-level stuff.

    This is one of the reasons for the test. It not only filters out the incompetent, but it also filters out the arrogant prima donnas, who will probably not be good at teamwork.

  • by qwijibo (101731) on Thursday January 10, 2013 @10:57AM (#42545695)

    When I'm hiring for positions that are paying high salaries, I want to know the person is just as good (or better) in front of a computer as they are at interviewing and sounding smart. A simple programming exercise can confirm that the person is good with computers, not just as BS'ing their way through interviews.

    It's disappointing how many applicants will fail such a simple demonstration of their claimed skills. Likewise, if someone thinks a short demonstration is beneath them, I don't want to work with them. Every job has some crap that just needs to be done, even if its a waste of everyone's time. If they haven't learned the "do it and move on" philosophy, they're going to be hard to work with. I've worked with people who will spend days arguing against doing 20 minutes of work - I'm definitely not going to hire people like that.

  • Re:I dunno... (Score:5, Insightful)

    by Anonymous Coward on Thursday January 10, 2013 @11:28AM (#42546097)

    I don't understand why employers don't just ask to see some code the developer has already written. Some people (nerds) don't do well in social situations and it takes a few days to get into the swing of things.

    I really don't get the "write a merge sort" routine. When was the last time someone did this IRL? At least people can use google, etc. When I was outta college, we had to do this crap on a whiteboard with 5 guys staring at the back of your head with no references. Talk about nerve racking.

    I would think the best possible thing to do would be to ask the candidate to write something before the interview and give them a few days. That way they are in their comfortable environment and can do their best work, proofread, comment properly, debug properly, optimize properly, etc. That's what you're really after, not someone who can write buggy ass, un-commented, un-optimized code really fast.

  • Re:I dunno... (Score:5, Insightful)

    by Goaway (82658) on Thursday January 10, 2013 @11:30AM (#42546119) Homepage

    On the one hand it seems kind of lazy.

    Programming is pretty much Applied Laziness, so that is probably a good thing too.

  • Re:I dunno... (Score:2, Insightful)

    by jonadab (583620) on Thursday January 10, 2013 @11:53AM (#42546477) Homepage Journal
    Depends on the language. 3 minutes sounds about right for C.

    Any Perl programmer who doesn't have a working solution in under a minute is deadwood. Given three minutes, he should revise the solution until it's elegant, easy to read, and maintainable (so that e.g. the numbers 3 and 5 can be replaced). In five minutes, it should take command-line arguments for all the different possible numbers to handle and what to say for them. And then he should look at you and say, "You know, I bet I just duplicated a CPAN module."
  • Re:I dunno... (Score:5, Insightful)

    by fzammett (255288) on Thursday January 10, 2013 @12:20PM (#42546837) Homepage

    Wish I had the mod points, but this is spot on.

    I've frankly never been particularly good solving these "simple" algorithmic problems on the spot either, even with my 20+ years of experience in the field, even with being a published tech author, even with being very highly regarded by all I've ever worked with. So, although I haven't had the need to interview for a job in quite a few years, I'm sure I wouldn't do any better than average if these sorts of things were thrown at me.

    But, compare the code I write for a living with the code most others do and there's no question which one of us you'd want to hire.

    I think this is true of a lot of good developers... there's MUCH more to this job than being able to solve a specific single programming task because all of us that are worth hiring can do that, given enough research and time... sure, I agree, it's nice if you can throw algorithm X, Y or Z up on a whiteboard from memory, that'll make you marginally faster than me... but speed, while not irrelevant, is FAR from the most important characteristic of a good developer. Code that is clean, elegant, logical, as simple as possible and maintainable five years down the road are FAR, FAR, FAR more important, and you're NOT going to gauge those things with a fizzbuzz-type test (I do A LOT of interviews now, believe me, I know this from experience).

  • Re:I dunno... (Score:4, Insightful)

    by Ihlosi (895663) on Thursday January 10, 2013 @01:56PM (#42548147)
    People with 15 years of "experience" on their resume would regularly fail or give up.

    I'm curious ... can you elaborate on how exactly they fail?

    Do their attempts just have stupid bugs or is the whole approach wrong?

    I'd probably fail at "printing". Only writing code for devices without any human-targetted outputs does that to you. :P

  • by 0xdeadbeef (28836) on Thursday January 10, 2013 @02:57PM (#42549069) Homepage Journal

    And I understand the pompous arrogance that motivates his feigned ignorance at the purpose of fizzbuzz tests. For every apocryphal story of "zomg they asked me to write quicksort from memory!" there are hundreds of actual examples of people with impressive credentials who can't even handle modulo arithmetic or linked lists or whatever trivial concept most competent programmers know reflexively. I know, early in my career I graded the damn things, and flunked several people with Masters degrees and many people with years of experience. Never failed a PhD's test, but I did witness one guy who stormed out of the interview when asked to take one. Buh-bye, cupcake!

    No one is above this. Anyone who believes they are too special to take it is either so completely ignorant of the industry and the caliber of applicants that they won't perform well in a business setting, or, more likely, they are aware of their own shortcomings and are putting on a show to maintain face and self-esteem. Competent people use them as an opportunity to relax and maybe show off a little.

    Seriously, refusing a fizzbuzz test for a programming job is like applying at the DEA and refusing the mandatory drug test. I don't care how you feel about it, you're a fucking a moron to think you could ever get around it.

Economics is extremely useful as a form of employment for economists. -- John Kenneth Galbraith

Working...