From my perspective there aren't any other methods that are less arbitrary than several interview coding sessions.
Doing no coding sessions are more arbitrary because it is far easier to BS a non coding interview than it is to BS a coding interview. Doing paid trials are more arbitrary because you are excluding anyone who can't devote two weeks of their life to a trial that may not amount to anything.
So from my perspective intensive coding sessions, although far from perfect, are the best system we have, so our effort should be placed on recognizing the weaknesses they present and working to construct your interview in a way to minimize them.
For us we very proactively (and without judgment) give advice throughout the coding process - if it is clear someone is stuck on something small or easily Google-able we will simply tell them so they can move on to actually solving the problem. If they are stuck on something bigger, we will talk through the problem with them in a way that would make certain approaches apparent to someone who is a halfway decent programmer.
I am not saying that any of the above is perfect, but I think trying to construct a programming interview that tries as hard as possible to mitigate unimportant factors that could lower interview performance (such as nervousness or getting stuck on something simple and panicking) is a better approach than any other form of vetting I've ever seen.
Doing no coding sessions are more arbitrary because it is far easier to BS a non coding interview than it is to BS a coding interview. Doing paid trials are more arbitrary because you are excluding anyone who can't devote two weeks of their life to a trial that may not amount to anything.
So from my perspective intensive coding sessions, although far from perfect, are the best system we have, so our effort should be placed on recognizing the weaknesses they present and working to construct your interview in a way to minimize them.
For us we very proactively (and without judgment) give advice throughout the coding process - if it is clear someone is stuck on something small or easily Google-able we will simply tell them so they can move on to actually solving the problem. If they are stuck on something bigger, we will talk through the problem with them in a way that would make certain approaches apparent to someone who is a halfway decent programmer.
I am not saying that any of the above is perfect, but I think trying to construct a programming interview that tries as hard as possible to mitigate unimportant factors that could lower interview performance (such as nervousness or getting stuck on something simple and panicking) is a better approach than any other form of vetting I've ever seen.