Hibernating Rhinos PracticesA Sample Project
I have previously stated that one of the things that I am looking for in a candidate is the actual candidate code. Now, I won’t accept “this is a project that I did for a client / employee”, and while it is nice to be pointed at a URL from the last project the candidate took part of, it is not a really good way to evaluate someone’s abilities.
Ideally, I would like to have someone that has an OSS portfolio that we can look at, but that isn’t always relevant. Instead, I decided to sent potential candidates the following:
I would like to give you a small project, and see how you handle that.
The task at hand is to build a website for Webinars questions. We run bi-weekly webinars for our users, and we want to do the following:
- Show the users a list of our webinars (The data is here: http://www.youtube.com/user/hibernatingrhinos)
- Show a list of the next few scheduled webinar (in the user’s own time zone)
- Allow the users to submit questions, comment on questions and vote on questions for the next webinar.
- Allow the admin to mark specific questions as answered in a specific webinar (after it was uploaded to YouTube).
- Manage Spam for questions & comments.
The project should be written in C#, beyond that, feel free to use whatever technologies that you are most comfortable with.
Things that we will be looking at:
- Code quality
- Ease of modification
- Efficiency of implementation
- Ease of setup & deployment
Please send us the link to a Git repository containing the project, as well as any instructions that might be necessary.
Thanks in advance,
This post will go live about two weeks after I started sending this to candidates, so I am not sure yet what the response would be.
More posts in "Hibernating Rhinos Practices" series:
- (22 Feb 2013) A Sample Project
- (06 Feb 2013) Design
- (05 Feb 2013) Pairing, testing and decision making
- (04 Feb 2013) We are hiring again
- (31 Jan 2013) Development Workflow
- (30 Jan 2013) Intro
This is a great way of finding good candidates. Personally I find sitting someone in a room asking them c# technical questions on anything from garbage collection to structs to threading is not a good indication of their programming ability. It shows either a good technical understanding or an ability to google 'c# interview questions' and memorize the answers. Good candidates will want to spend their own time doing this project as it seems fun and want to impress you. Out of interest how did you decide on what candidates to send the coding challenge to?
Haha, that does take quite a few hours - you were looking for seniors or starters?
I've got a love hate relationship with coding tests. As someone who has sat on both sides of the fence as a developer and then manager I have a split view. They are great for seeing how people code and getting a feel for them but as the candidate they are a PITA.
Last time I job hunted I had to do about 4 of them, all taking several hours, all in my own time and often late at night / early hours as I've got kids to look after and other stuff in life to attend to. Needless to say this didn't result in my best coding ever. Taking the biscuit was one company who wanted me to spend a fair amount of time on a sizable coding test before they even looked at my CV - totally out of order.
Since then whenever I've sent coding tests out I've made sure it's small scale and shouldn't take more than 1 hour max with generally no ui to it beyond the console.
That's a lot of work and will probably filter out too many people who could easily do it but are not willing to invest the time.
On the other hand, if you have a lot of candidates you can afford to do this. I'm looking forward to hearing from you how the experiment turned out!
I personally don't believe this request is unreasonable, and if someone wants a shot at working on with this group, she will be willing to devote a few hours to a simple project with merely five requirements. Jon makes an excellent point, "Good candidates" will want to impress you. Which is typically one of the major goals of an interview process. I fully support this idea, and I may do the project myself just as a fun exercise. Best of luck Oren!
If I were to go for this, I don't know exactly how much time I would spend on it, but I would certainly have the scaffolding of the whole project complete, and just build in the implementation until I reach some sort of "that's enough to convince them I think" moment. Unfinished stuff would have pseudo code in place. I would be satisfied with that if it were me doing the hiring. If a company you are going for is not happy with that, it would be best for both of you not to go further.
Interesting bug on the post submit. Note that the dupe comments have weirdly different timestamps, though I clicked post only once.
hmm, now the dupe has disappeared. Never mind.
nice test. my only rant is that a true professional (or a true wiseass) should have given you a link to wordpress with a plugin or two, without writing a single line of code.
And I only wonder if you'll hire such a fella. :-)
That is a very interesting approach - and I hope you will let us know how this worked out for you.
Have you sent this test to people you have shortlisted already, or did you send this to all applicants?
That seems like an odd request for hiring someone who's going to be working on a database engine or a database profiler.
It makes more sense if you were hiring a web developer.
Maybe I read the job description wrongly?
Eric, From our experiences so far, it is really hard to find someone with proficiency in what we are doing. And there are a lot of tasks where stuff like that is the required skill set. That said, we are more interested in hiring good people, then training them in the stuff we need.
OK, that makes sense.
It would be cool if they signed a waiver and let you write a blog review of their code! :)