Maybe this is an US thing. I changed jobs last year and nearly every single recruitment process involved exactly that, after a remote interview them giving me a small project worth 2-5 hours of work and then going over what I produced one week later. This was for companies in central and northern Europe.
No, there's no principle, there's a ~20 minutes old idea that we engineers are so obviously awesome that companies should actually be paying us for the privilege of interviewing us.
There may exists engineers obviously awesome enough for that to be feasible, and great for them (but they are probably also obviously awesome enough to not have to go through coding tests, so it's a moot point) and even if I could perhaps (judging by certain recruiter-emails) scrape by as one of them, I certainly couldn't five years ago.
Back then, if I'd had to be good enough on paper alone to warrant not just being put through the recruitment process, but to be paid for it was well, I am not convinced I'd have been considered (and yes, I did a take-home test, and I aced it and it made up for my near-total lack of on-paper qualities).
Of course, companies shouldn't waste their applicants time with needlessly extensive tests, but there certainly exists no 'principle' by which you have a claim to be reimbursed for spending a few hours on an application.
Actually, for actors it does. If you go to a casting session, you should get payed for it. That's because they had a first chance to filter you out and they are not entitled to waste people's time. For the first filter, they use their CV and their reel (video of the actor showing itself).
I think that the same rules should apply for programming jobs. Just look at my resume and my publicly available code (that is linked from my resume). If you decide I am good enough to interview me, pay a reasonable hourly rate. This would stop the abusive practice of giving big problems to solve in our free time.
If this is true of programmers as well (and I have no opinion on whether it should be), it should be even more true of standard on-site job interviews, which are more disruptive to your work schedule and more demanding of your time and attention. But, of course, people do not generally get paid to go on job interviews.
It's at least reasonable to cover travel costs for interviewers. I was given a $40/day stipend for food and reimbursed gas and hotel when I interviewed at my current job.
This is a sound-bite, not something that holds up to scrutiny.
If you decide not to interview with possibly great places based on this, you're essentially saying that all future expected gain isn't worth some set hourly rate for 2-8 hours of your time.
Also, what's your free time worth? For me, sometimes it's worthless, and sometimes I feel like I'd sell my soul for 10 minutes to myself.
I have had a few of these the last year or two. Never been paid. More than half of them are a waste of time. I have refused quite a few of them.
The last "shouldn't take you more than two hours" exercise that I was given involved jumping through hoops to get set up on Instagrams API, only to discover that I was in a sandboxed mode, and needed my account approved before i could get anything more than metadata out). I didn't even get started coding, so I am not sure what exactly the test was meant to achieve.
I was not, at any of them. Yes, I was effectively giving them my time but it doesn't sound unreasonable when you compare it to the alternative: I'd spend that same time answering whatever obscure coding questions or far-fetched exercise they had but in a far less comfortable setting (and arguably less representative of my skills). Not to mention how I'd probably have to do the interview at a time they're working, instead of doing it on a snowy Sunday evening, at my discretion.
I'd so much rather do a project with my own tools and from the comfort of own home than commute several hours across the city for a several hour interview.
If all it required was an hour phone call and a small project, I'd totally do it for the right company.
Maybe this is an US thing. I changed jobs last year and nearly every single recruitment process involved exactly that, after a remote interview them giving me a small project worth 2-5 hours of work and then going over what I produced one week later. This was for companies in central and northern Europe.