News for hackers. Stuff that matters.
Re:How to Pass a Programming Interview by rhinoceraptor on Tuesday March 08, 2016 @04:17PM (#11248734)
> there's very little left to discourage interviewers from issuing ridiculously time-consuming projects

There's also no disincentive for interviewees to spend an unreasonable amount of time on the project. So the test is biased against employed people and/or people with kids.

This can be easily countered though. Send out the assignment at a predetermined, convenient time and require it be returned an hour or two later.

Re:How to Pass a Programming Interview by kafkaesq on Tuesday March 08, 2016 @04:41PM (#11248926)
Send out the assignment at a predetermined, convenient time and require it be returned an hour or two later.

Except that these places very frequently tend to either (1) misstate the problem in some major or minor way, or (2) wildly underestimate the time required to produce a professional quality, bug-free, bulletproof-tested solution. Which can be easily countered by having one of their own team members sit down and take the test first. But of course, none of these places ever do that.

(Well, not "none." I'm being hyperbolic. I just mean in that in general, they probably estimate the round-trip time on these programming guizzes the way they do micro-projects on their own jobs -- as in, "Oh, I can do that in an hour" -- but in real life, it often takes 2x-3x longer).

Re:How to Pass a Programming Interview by collyw on Wednesday March 09, 2016 @03:59AM (#11251775)
Yes, I got one recently:

Pull down this data from Instagram API and create a tagcloud. Should only take a couple of hours.

Except working out how to register and authenticate Instagram's API took me over two hours, than after faffing about with it I realized I only had some sandboxed version that returned metadata and not the actual data I was looking for.

The task would probably only take a couple of hours if the whole environment was set up, but the set up was the problem.

Re:How to Pass a Programming Interview by ajeet_dhaliwal on Wednesday March 09, 2016 @05:21AM (#11252057)
I have never used the Instagram API and had to look up what a tagcloud is just now. I can immediately say this will take more than 'a couple of hours', whenever I work with a new API it takes time to setup the environment, digest how it works and research the appropriate APIs I need to use. I am not surprised by your experience. Actually makes me angry that someone thinks a reasonable person could do that in two hours with the background I have described. Yes two hours is the environment is setup to make calls to the API and perhaps you have some familiarity with it - so I can see why the person who asked the question would think 'I could do it in two hours, on my Macbook where the environment is already set up and where I know exactly what API is required and what the data format looks like in the response'.
Re:How to Pass a Programming Interview by collyw on Wednesday March 09, 2016 @10:01AM (#11253315)
This seems to happen on around 50% of the take home tests that I have been given. Funnily enough I only take the time to do 50% of them.

Hackerrank is even worse. They have strange ways of wording the questions. I have to Google around to work out how to use their input and output (I work with databases all day long, not reading and writing to STDIN/ STDOUT). No step through debugger (which makes a lot of sense for the algorithmic type questions they ask). Cut and paste only works in some browsers.

No one expects you to set up a database and connect to it in that sort of timeframe - yet I would probably manage it better as I do it regularly.

Re:How to Pass a Programming Interview by kafkaesq on Wednesday March 09, 2016 @01:28PM (#11254702)
This seems to happen on around 50% of the take home tests that I have been given.

That was my rough estimate for the prevalence of this craziness, to.

Re:How to Pass a Programming Interview by kafkaesq on Wednesday March 09, 2016 @01:32PM (#11254742)
My personal favorite, was when, after I had apparently survived a 4-hour interviewing + whiteboarding stint, and thought I'd be able to head out onto the street (as it was already quite late in the day)....

...a math PhD told me "hey, I got one more ya..." and proceeded to give me a mis-articulated mathematical search problem which -- going by his own statement of the problem, ended up having as its "solution" -- an empty class.

Re:How to Pass a Programming Interview by autarch on Tuesday March 08, 2016 @07:56PM (#11250070)
> Which can be easily countered by having one of their own team members sit down and take the test first. But of course, none of these places ever do that.

At my employer we send out homework exercises, and I personally did the backend developer exercise before we sent it to anyone. I did this specifically to test how long it took. (For the frontend exercise, we didn't have anyone skilled enough on staff to do it, which is why we were hiring a frontend dev).

Re:How to Pass a Programming Interview by dpark on Tuesday March 08, 2016 @11:31PM (#11250946)
Did you do the test blind? i.e. Did someone give you the problem without you knowing/hearing it before? If you wrote the problem, or even heard it before you had to solve it, you had a big leg up on someone who's never heard it.
Re:How to Pass a Programming Interview by autarch on Wednesday March 09, 2016 @12:19AM (#11251081)
Fair points. FWIW, we've asked people how long the problem took and they all said it took a few hours, so I think it's the right scope. It really is a fairly easy piece of work.
Re:How to Pass a Programming Interview by kafkaesq on Wednesday March 09, 2016 @01:54PM (#11254909)
Actually, I think this whole fear of candidates pervasively lying about time-to-completion is something of a red herring.

(1) It may seem counterintuitive to some, but my own general policy is, when it comes to little stuff ("how long did it take you to do X"), you just have to trust people, to a certain extent. Sure, some people may blatantly or grossly lie. But most likely these people will reveal their slipperiness in other ways, very very quickly.

Meanwhile -- and I think people are quick to overlook this -- playing the "policeman" role in every transaction with the candidate brings substantial negatives. By definition, it's adversarial. And generally there are (nearly always) non-adversarial ways to get the same information about the candidate ("Are they basically honest?") you're looking for. They take creativity (and an ability to read emotions and pick up on other signals), but they're there.

(2) Much bigger -- really, there's no need to sweat about the time to completion at all. Just look at the quality of the code.

It all just comes down to the fact that everything is interconnected: Good people generally turn out good stuff in reasonable amounts of time. When you're looking at good code, there is, I find, an intrinsic aura of ease and comfort which shines through it -- such that you just can't imagine it took them very long to produce it. Everything just flows -- just like it does when you talk to them.

Mediocre (and dishonest) people, on the other hand... never produce good stuff in virtually any amount of time. Sure, they can take the whole weekend to polish off their code... but it will still look bad, or at best, "Meh".

There might be some false positives (or outright frauds) by this approach), but I suspect very few. And those that do slip through, are easy to spot by other means (such as asking them to talk about their solution, for even a couple of seconds).

Re:How to Pass a Programming Interview by autarch on Wednesday March 09, 2016 @04:21PM (#11255807)
I think the concern is that the homework task could be too large and because people have an incentive to appear competent, they might lie about that to make themselves look bad. That means that we're giving too hard a task but we'll never find out.

As to how likely it is that people will lie, given that we've hired several people who did this homework and they've proven to be as competent as we believed, there's at least some anecdotal evidence that some people have not lied.

Re:How to Pass a Programming Interview by inanutshellus on Wednesday March 09, 2016 @10:29AM (#11253492)
You can't ask a candidate how long it took, they have no incentive for truth here. Either they say it took all night and you think poorly of them, or it really did take a few hours.

You have to ask someone with no skin in the game.

Re:How to Pass a Programming Interview by dpark on Wednesday March 09, 2016 @12:32PM (#11254293)
As others have pointed out, your interviewees have little to no incentive to give you an accurate time estimate.

Beyond that, I think "a few hours" is a bit too much to ask for, especially since you are presumably following up with an in person interview centered around the assignment. That's a big time commitment, and the commitment on the assignment especially is very asymmetric.

I'm not a big fan of assignments for this reason. They are just so asymmetric. I've been given interview homework that was supposed to take "about an hour" and it was more like 4 to 5 in reality. It felt like an unreasonable time request. I did the assignment, and did in fact tell them it took considerably longer than their resonates. I was invited for an on-site after all that, but declined for other reasons.

Re:How to Pass a Programming Interview by popmystack on Wednesday March 09, 2016 @10:35AM (#11253520)
You are begging for people to lie to you.
Re:How to Pass a Programming Interview by kafkaesq on Wednesday March 09, 2016 @05:45PM (#11256222)
If that's the way you think people are... then those are the kind of people you'll attract.

It's how the universe works, basically.

Re:How to Pass a Programming Interview by bogomipz on Wednesday March 09, 2016 @12:33AM (#11251133)
It took a few hours and "it really was an easy piece of work?" How considerate of you. Who was it an an easy piece of work for, someone with unlimited free time. An unemployed person. What a joke. Any problem is easy when you yourself contrive it. Here's an idea, how about you pay someone for the 3 hours or work you are giving them. Say a lot about you.
Re:How to Pass a Programming Interview by autarch on Wednesday March 09, 2016 @01:20AM (#11251264)
I would prefer that we pay people to do this, but unfortunately that's not my call. That said, no one seems to complain so bitterly about the all day interviews that places like Google do (and insist you fly out for in person).

Isn't asking people to fly out for 6-8 hours of interviews (which effectively takes 3 days minimum out of your life) a much greater burden than spending 2-3 hours on some coding which you can do at a time of your choosing? (Followed by 2-3 hours of video chat interviews spread across multiple days, no flying required).

Also, just to clarify, the homework problem is _not_ something related to our business. The solutions are of no business value to the company.

Re:How to Pass a Programming Interview by collyw on Wednesday March 09, 2016 @04:06AM (#11251806)
Are you paying as much as Google? Is your job going to give the same prestige as having "worked for Google" on your CV?

I am not saying that you are wrong, but applying to Google does sound like it will have many benefits above your average company.

Re:How to Pass a Programming Interview by autarch on Wednesday March 09, 2016 @04:25PM (#11255827)
Google is hardly the only company to do in-person all day interviews. I've had several in my career, none of them with Google. IIRC, they were with Shopzilla and Grant Street Group, and Livetext (not exactly Google-famous companies). I wasn't thrilled about flying out for 6 hours of interviews, but at the time I thought it was reasonable for them to ask for this. I'm not sure I'd do it again unless I was incredibly excited about the position in question, but I'm older and more jaded now.

As to how much we pay ... Our pay is very good, and all but one of the positions for which we've had the homework requirement have been telecommuting as well. It's actually a pretty desirable place to work if you like good pay, telecommuting, working at a small company, a low pressure environment (we've been profitable for many years), and various other perks (training budget, flexible hours, blah blah blah).

Re:How to Pass a Programming Interview by kafkaesq on Thursday March 10, 2016 @02:04PM (#11261317)
And the above poster would seem to have an eminently sensible interviewing style, himself:

http://blog.urth.org/2016/03/08/tech-interviewer-theory/

Re:How to Pass a Programming Interview by tracker1 on Wednesday March 09, 2016 @02:31PM (#11255174)
The last time I was in the hiring side of the process... I had what I considered a pretty easy assignment... it was for a full-stack JS developer (node). The assignment was to read in an XML file (preferably via an input stream) and write it out to a JSON file of a predetermined object structure.

There were no other limitations put.. "bonus points for stream based input" "bonus points for test cases" ... only a couple people actually delivered a "working" solution (one that ran and outputted anything), none of which had the correct output (one was close enough), and none had any tests.

It was truly something that should take a "skilled" developer a couple hours. And not something that should be entirely alien. To say the least, I was really disappointed with the results. I did the project myself in about 2 hrs, with test cases, 100% code coverage. (before I even gave it out, it was as trivial a challenge as I could come up with for a real world problem).

Why should I have to pay the couple dozen people for their 3 hours, when none delivered a correct solution?

In the end, the person with the closest to correct solution, was the one with the least experience... that person got the job.

Re:How to Pass a Programming Interview by kafkaesq on Wednesday March 09, 2016 @01:35PM (#11254774)
Well you're one of the brave and true, then.

And I had someone on my previous team make a point of bringing up this fine point at a meeting, also ;)

Re:How to Pass a Programming Interview by pkaye on Wednesday March 09, 2016 @12:30AM (#11251115)
I actually do what you suggest. I pick problems I've never did before and try to solve it in less than 1/3rd the time I allot for the interviewee to account for interview time pressure. Even then there are probably biases because I pick problems that I can solve so I periodically review the candidate success rates on problems and change them out if they are too simple or too complex.
Re:How to Pass a Programming Interview by lewisl9029 on Tuesday March 08, 2016 @04:31PM (#11248849)
> Send out the assignment at a predetermined, convenient time and require it be returned an hour or two later.

This honestly sounds like a great idea to me, except maybe with a slightly longer time allowance to remove some of the pressure. Definitely hoping more interviewers will start to adopt this method for take-home interviews.

But this method also hinges on the interviewer's ability to design projects that can be completed in a reasonable amount of time and still give good insight into a candidate's skills. I think it's safe to say this will be a difficult task for most interviewers.

Re:How to Pass a Programming Interview by nsxwolf on Tuesday March 08, 2016 @05:15PM (#11249228)
A day or two should honestly be fine. Have them talk about the solution after turning it in. It's a lot easier and more interesting to talk about code you just wrote than it is to make someone whiteboard something on the spot.

It doesn't need to be a time trial. If you're impressed with the code and hire the candidate, worst case is you get someone who takes a little more time but writes great code.

Re:How to Pass a Programming Interview by lewisl9029 on Tuesday March 08, 2016 @07:40PM (#11250010)
The time requirement doesn't just set a limit for the candidate though, it also serves as a limit to consider for the interviewer when speccing out the project.

Having a time limit of a day or two is fine if the actual project should reasonably take a couple of hours, but if the project actually takes more than a whole work day to complete, then that's a different story (in my humble opinion, anything that would take more than a couple of hours is an unreasonable demand on the candidates time unless you offer some kind of compensation).

Re:How to Pass a Programming Interview by draw_down on Tuesday March 08, 2016 @04:33PM (#11248866)
> There's also no disincentive for interviewees to spend an unreasonable amount of time on the project.

I don't see any problem with this, as an interviewer. The take-home is supposed to be an example of the work the candidate does, they should take however long to do it. I want to see the best-case scenario of the code they write (given the problem at hand, etc, of course). The entire idea is removing the time pressure.

Re:How to Pass a Programming Interview by rhinoceraptor on Tuesday March 08, 2016 @04:47PM (#11248977)
Right, but workaday programers with two kids and a full time job won't be willing or won't be able to spend, say more than two hours on something like this.
Re:How to Pass a Programming Interview by timv on Wednesday March 09, 2016 @02:06AM (#11251381)
> I don't see any problem with this, as an interviewer.

The issue for the interviewer is missing out on good potential hires because your selection process is biased against people with little free time.

I have a family and I'm doing part-time study in the evenings. If I'm looking for a new job, then I can probably find time for 1 exercise a fortnight. If one company tells me they have a "4 hour assignment" and the other a "1 hour", then I'm far more likely to do the 1 hour exercise and pass on the long one.

And if I do the 1 hour test, I'd expect to be assessed accordingly. If you're comparing one person's output after 1 hour with another who actually spent 5 hours on it, then you will be more inclined to hire the person that spent longer on the project, even though that's not really going to corelate with on the job performance.