I think take home assignments could be done well, but I've never seen it happen. You often need to spend time setting up which is a total waste of time for a throwaway project.
You should provide the candidates with a starter project in their language of choice, already set up and ready for them to start working. And you should give everyone at least some time limit (maybe one or two hours at most) so everyone is on equal footing.
And the worst part is, all the take home assignments I've done are just used as an initial filter, not as a final check in the interview process. I'd have maybe one phone conversation beforehand, spend hours working on the take-home, and then get a short rejection email with no useful feedback.
Why is a starter project so important that it needs to be provided by the company and why in the language of choice of the candidate? How long does it take for you to setup a starter project?
When I solved the challenge that we give our applicants it took me about 5 seconds to setup the project with everything I needed to solve the challenge. In any language I use it does not take long at all to setup a new project. Especially small ones like that.
It depends on the language/framework you're using, something Rails would be very easy to get up and running, but something like a modern Javascript app SSR or Webpack, Babel, etc. might be very time consuming.
My point is your project should be a test of someone's actual development/programming ability, not project setup. You don't want to have people spend an hour configuring CMake or webpack.
The thing is though that we don't have the ability to setup starter projects for any language that anyone might use.
For one thing because we don't know every language and every type of project you might use. For instance I don't think we have anyone that could setup a JavaScript SSR app. I certainly have no idea how that works. I am not a JavaScript developer. If you want to solve our challenge that way then you are certainly welcome to do so, but in that case you would need to set it up yourself. If setting up a JavaScript SSR is time consuming or a major hurdle to you then maybe use something else? If we where providing starter projects JavaScript SSR wouldn't be one we would offer anyways.
CMake isn't that much to set up for simple projects if you know CMake.
I personally think it is fair to include project setup in this test, because it will show me how well you understand the tools you use.
For me, it depends a lot on the scale of the assignment. I’ve seen some that would require an entire weekend to complete and others that would take a couple hours.
The latter are pretty reasonable and IMO both more pleasant to complete and a better indicator of eventual performance than whiteboard interviews.
The former seem to mostly measure the candidate’s level of desperation/willingness to be exploited.
I find some take-home assignments to be completely reasonable and preferable to whiteboard interviews.
For example, Klaviyo in Boston (no relation, I just interviewed with them at one point) has a take-home assignment listed here [0]. It is simple enough that I can finish it in the same time as phone technical interviews and applies to the company's product and job requirements.
Though I am certain there are companies that have unreasonable take-home assignments.
Curious: how does it better demonstrate non-algo work? How does the interviewer know that you didn't spend the entire weekend googling how to do it? (Although that may be perfectly acceptable to them.)
Yes I do. Maybe even more. When I evaluate challenges for our company I do actually spend a lot more time going through the challenge then what it took me to solve it myself and I am not the only one evaluating each one. We also got a lot of feedback that our "estimation" of how long this challenge takes is very accurate, so I assume they take roughly the same amount of time that it took me to do it.
I don't think it is wasting time. Even with the very simple challenge we give out we are always surprised at the wide variety of solutions we get. We found it very useful in our hiring process.
Of course that is just us, but when I was on the other side the people evaluating me where asking detailed questions about my solution more often then not. So I assume it is fairly common that the companies actually do also spend a lot of time on each challenge.
IMO, that's worse than a whiteboard interview. My time is valuable, and I don't want to spend my evenings or weekends on an assignment.