We're a small company (2 main developers) looking for a new developer to replace someone who is leaving. Because we're a small company, our developers have a very wide range of roles: typically, a customer will come with a feature request (usually one or two lines that barely make sense, you know the sort of thing I'm talking about...) and they typically have to go from that to design, implement and test the feature all the way into production.
So when finding a new developer, we didn't want to do those sort of "write an algorithm to reverse a string" type questions, since they don't really test the sort of thing that the candidate will be doing in the real job. Besides, anybody can study a bunch of those questions and ace the test without really knowing what they're doing anyway. As a small company, we can't really afford to hire someone only to find out after three months that they're hopeless.
So instead, we decided to come up with a small project that should be doable in an hour or so. Basically, the project we came up with was:
- Download a (C#, we're a .NET shop) library for interacting with the Twitter API
- Write a program that uses the library to fetch the public timeline from Twitter and insert them into a database table. The project should loop every 30 seconds, fetching the latest tweets and inserting them.
- Write a separate program that perferms a couple of queries on the database table (queries like "top 10 users", "all tweets with a particular hash tag", etc)
I did the project myself just to test whether it was actually possible, and I finished it in about an hour. I did it at home one evening with the TV going and all sorts of distractions, so I figured with no distractions, 1 - 1.5 hours should be plenty.
So anyway, we've had a few candidates come in who look great on paper, but then when we give them this task, they just sort of fall to pieces. One guy left after an hour with no code written at all, mumbling something about "I've never used twitter". Others get some things done but they get stuck on a certain aspect and don't really go all the way. One guy had downloaded the first library he found (which was pretty crummy), decided it was no good and ended up getting stuck doing raw HTTP requests to the API.
I tried to make it clear to the candidates that if they have a problem or they don't think they can finish, to call out and one of us will give you a hint. But I don't know whether they think they'll loose "points" for asking for help or something but nobody ever seems to do that. They all get to the end and just tell us where they got stuck.
I don't know, after all this trouble, I'm starting to think this isn't the best way to go about it. Are we expecting too much of people? Is the pressure of being in an "interview" making it hard for people to get what I think should be something pretty simple, done in time?