I know some companies advocating them, but I heard from some candidates/friends that they don't like them because:
Often times the company say the problem should take half a day, but it actually takes a lot longer if you really want the job. Assume two solutions are both functional, the evaluator will compare things like comments, code style, all test cases (unit and all coverages) written out, etc. To get all those things perfectly polished takes a lot of time.
Those little polishing tasks are really time draining/boring work, rather than actual intellectual problem solving.
What are your thoughts?
Oldest comments (12)
I find this kind of exercises useless to evaluate the candidate :-(
But sometimes, the feedback is quite revelatory about the staff and their values :-)
I prefer them than other live questions/problems. I believe it REALLY evaluates someone's abilities to understand, research, execute, and prepare a clean thought out solution. This is how it probably works when a company assigns tasks to developers for real customer needs.
Yes it does take longer than other assignments as it the question/problem is not trivial and could not be found with a simple google search but I find it the best way for a candidate to be evaluated.
I did a lot of these recently, most of them were not even near what is considered close to what a company does, it's a task what takes longer and most cases you have to build up everything for it.
Sometimes when the docker container is there it's better, but I still prefer tasks on live coding sites, but that is money for the company.
There are times when companies asks you what is your hourly rate and they pay for it, I think than you can see it's important to them.
And if it's really a client task, than why should you do it for free?
I am not sure about legal situation in other countries. but in US, definitely a company can not use code produced by interviewee (or anybody) unless it is paid for with contract/license stated, (with exception of open source software with permissive licenses that allow you do so.). If a company does that, it definitely will be subject to lawsuits, labor laws, etc. It is possible, the interview tasks assigned are completely unrelated to the company does for that specific reason.
If it takes more than 2 hours, that's a no go for me. I have a Github account, a bunch of projects, and a portfolio. This and a little technical interview (at my current job I was asked about some Python things such as classes, inheritance, etc.) that would approve my portfolio and my knowledge should be enough imo.
I'd be happy to work (with the salary) on a company's side project for a while to demonstrate my knowledge, though. I guess that kinda replaces home exercises, but at least it feels like I'm contributing to the company and at this point I'd be more interested to provide better code quality because I already have a job and I want to keep it :)
Our company likes to use them for junior dev interviews and we find they work really well!
The reason we like to use them for juniors is because coding in front of someone, no matter how much experience you have, sucks. We find that being able to do a problem without someone looking over your shoulder is a lot more comfortable for junior devs. The problem we give is pretty straight forward and we stress that it should only take an hour or two. Then when the candidates come in, we talk about their code and how they could improve it etc. Being able to work on a problem they are already familiar with makes the candidates a lot more confident. I think using take-home problems the right way can be really valuable for interviewing.
Are there good open ended questions that only takes 1 or 2 hours?
I found there are two extreme: short technical/programming problems questions usually have solutions or code ready to be found quickly with google. And because it is so short, it is hard to tell if it is copied or original. Since if problem scope is small, most solutions are very similar. And in computer science, we use many naming conventions, different people could even named variables exactly same by accident.
longer form questions, can be more open ended, so if someone copied the solution it is pretty noticeable. but downside, of it would by default would take longer than 1 or 2 hours.
I am curious, are you willing to share some of the 1 or 2 hours problem you find that work well?
Would be happy to share!
The one I did when I interviewed(we no longer use this) was to make a simple ruby script to handle restaurant reservations. It should have a starting number of tables that seat a set number of people and when someone asks for a table for x amount of people it should pick a table for them or tell them the restaurant is booked. I think I might have had other instructions but that was the gist of it. Here is the solution I came up with almost 4 years ago. Dug that one out of my email 😉
Currently, we use this problem for our more Jr. candidates.
I had one place that issued a "probably will take around 3 hours" test - but "take as long as you need". I took ~ 10 hours 🤣
That being said, I'd still rather do a take-home than on-the-spot.
However, I would even rather do something where I can sit/work with the team in question on some real task.
I only object when they ask me to do homework BEFORE they grant an interview. That to me seems presumptuous - they promise nothing but expect you to spend your time on the assignment.
I recently did one of these.
It was pretty easy and took maybe an hour all in of my time. I aced it in their eyes (still did not get the job).
My biggest pet peeve before even a conversation is requesting a behavioral quiz and a portfolio (but not asking in their posting) before even a phone call.
I do think the exercise was nothing to do with the actual work there.
maybe like someone said, they often like to give take home exams first before onsite interview, because then for the interview you guys can then have a meaningful discussion about the solution you submitted.