And no, they can't determine how awesome you are based on a normal interview process. Nobody can.
I've interviewed people with "20+ years of industry experience" who will swear up and down they can hack the Linux kernel but then can't reverse a string in place or write a function that determines if a word is a palindrome or not.
Having someone write some code, any code is meant to weed out those muppets. Just show me you can actually write a loop. With an 'if' statement somewhere. Please. That's all I ask. You have 15 years+ experience with SQL server? How about a simple JOIN statement? Please?
Now, companies like Google take that too far and I'm 99% positive that the day-to-day job for more than 19/20 people who work there does not involve suffix trees or reverse-printing a linked list through recursion or implementing a stack with two queues, but those are meant to shrink the pool of potential hires from the thousands to the dozens. Nobody wants to sit through a normal interview with thousands of people, better to stump most of them with idiotic, useless quiz questions and interview only a few dozen in person. I get it.
I think interviewing for software jobs is horrible everywhere, period. We just have no way to determine if someone is good or not - you can put anything on your resume and it's hard to verify and compare/contrast with other candidates.
I believe the solution is to hire someone temporarily for a few months on reduced salary/benefits (which would still be considered an amazing deal for 85% of the work force in the US) and see how they work out - can they actually produce? If so - full time, if not - bye.
That's a feature. They get the good, undervalued talent early.
"If an interviewer is not capable of determining my knowledge level by a normal interview that tells me right away something up, and I probably don't want to work with them because they aren't too smart themselves."
News flash, all companies are horrible at determining knowledge level by a "normal" interview. The only ones that have a hope are those that use some sort of test or have existing work to review.
*who are just as likely to leave for another company as soon as something better comes along?
I'm not sure I understand this. A dev who valued their time very much would already be working at a job they liked enough not to be looking. As job satisfaction declines, time opens up to work on whatever you want to call this, a technical feeler, perhaps. A dev who values their time wouldn't get snowed under by a ton of these because they wouldn't be applying willy-nilly, only to those places they want to work.
Also, your assertion that "as job satisfaction declines, time opens up" also does not follow. Plenty of very talented people are both unsatisfied and snowed under with crap.
Finally, saying that a Dev wouldn't be snowed under because they wouldn't be applying willy-nilly would hold iff hiring practices at firms where even remotely efficient and fair.
I applaud their decision to pay for correct answers, as it balances the "cost" bourne by the applicant and employer. Employers who send out tests en masse have an asymmetric advantage -- they can force many candidates to incur a cost without incurring much or any cost of their side. This causes bad behaviours.
Traditionally in interviews, companies "paid" with their time, but online exams skewed that. Paying something per correct answer at least makes them think twice before inviting hundreds to the exam that they have no real intention of ever interviewing.
It's all just ways to filter. If I can filter you through our mutual network, I'll do that - if I can't, open source code; if I can't, coding test.
Edit: thinking more about this, it's good to see that it's a paid puzzle, so even if you don't get an interview, you are still compensated for your time.
Having a broader perspective - its maybe only in programming that the hiring process is so much easier. For almost any other job you need the right technical skills, years of expensive schooling, unpaid internships and have done a lot of networking ( cough nepotism cough ) - its only in programming that raw skills can get you anywhere.
Simply not true. Maybe there's a few exceptions, but in general, most companies (especially in tech - just check out our great diversity :|), filter based on arbitrary things like 'school', 'specific # years of technical experience', and other flavours of the day.
Example: I had an interview with Mozilla many years ago, where the first question was, I kid you not, "Are you a Javascript rockstar?". I said no (being truthful - I was naive back then), to which the reply was an immediate "Sorry - bye".
The skill of programming is more like carpentry, mechanic, heavy machinery operation, or machining. I'm not going to higher a carpenter that can't tell the difference between a hammer and a saw, and I won't find a machinist useful if they can't run a lathe.
We need to start thinking of programming as a journeyman tradecraft career.