This is very hard on people who are already employed. Who wants to work 2 jobs simultaneously? The pay of a short-term contract is basically nothing compared to the pay of a full-time permanent job.
Suppose I apply to 20 places, and they all want me to do this? It doesn't scale at all.
They pay very generously for your time and have a long deadline. I’d much prefer doing that than going to 20 one day interviews with nothing to show for it at the end of the day.
That seems to be jumping the gun. You don't normally get an onsite immediately, you usually have to go through much shorter screens, the first of which may only be an hour max. So you don't necessarily waste a lot of time on any one company unless you go deep into the process, and you're probably going to be screened out early by lot of them. The take home assignments are generally supposed to be replacements for technical screens, but they invariably take a much longer amount of time.
There's also an investment differential. Every hour that a candidate has to spend in an interview is also an hour the employer has to spend in the interview. Whereas an employer can send you off with a take home project for an indefinite number of hours while they sit back and do nothing. Are they going to spend the same amount of time reviewing the project as the candidate did writing it? Extremely doubtful.
Many companies have similar project based interviews without pay. This is typically not part of the application process, but rather the last step in the interview process.
Four hours is on the low end, even for regular companies. Online assessments, phone screen, on site, various calls with hiring managers and internal recruiters, post-interview follow-ups, all combined can easily push up to 8 hours or more over a few weeks.
You get 2 assignments and get paid for both.
First one - write a feature implementation proposal
Second one - they pick a feature or an issue from their open source code on Github and you have to implement it
You get paid for the whole process, the work is remote, pay is equal across locations.