When I was hiring, I used a homework problem as well - something that we have actually built and released, and I encouraged candidates to look at our implementation (it was a single screen in a very UI-heavy mobile game). We did it in 8 hours, but almost all candidates took more.
Overall level was pretty low that after reviewing about 20 homework assignments, and I had wasted a lot of time on post-mortem interviews where I just had to politely decline with a short code review (after all, they spent all this time, so they deserve something in exchange). After all, I started asking FizzBuzz (yes, not changing the name or anything) on the first phone interview to save time. And yes, turns out, it's not a task that any candidate can do.
So, yes - homework assignments are great, but make sure that a candidate at least knows how to write a simple loop (and yes, I overlook off-by-one errors).
Overall level was pretty low that after reviewing about 20 homework assignments, and I had wasted a lot of time on post-mortem interviews where I just had to politely decline with a short code review (after all, they spent all this time, so they deserve something in exchange). After all, I started asking FizzBuzz (yes, not changing the name or anything) on the first phone interview to save time. And yes, turns out, it's not a task that any candidate can do.
So, yes - homework assignments are great, but make sure that a candidate at least knows how to write a simple loop (and yes, I overlook off-by-one errors).