There should be a step 0 consisting of an introductory conversation to make sure that both sides know who they're dealing with in terms of basic things like the kind of workplace you are, the kind of person you're looking for and the recruitment process.
Last year I applied for a job through a consultant where all I knew was the name of the company and the content of their marketing website. The first communication I had with them was "do this code test", then the next communication was "now answer this 5 question exam". When the consultant told me they wanted me to come in for a "technical only" interview, I told him to get lost. It has to be a two way street, these people had sucked hours of my time without even giving me a hint of who they were and what they were offering. I got the impression they had no respect for what I might be looking for.
At another company, the manager contacted me directly and told me about what their recruiting process involved (e.g. how many code tests, interviews etc...) and the kind of working environment they offered. In the course of this conversation, it became apparent that the workplace culture was one of intense social engagement where the employees lives were centred around the job. While I could see the appeal of that kind of job for unattached people, I didn't think it would be great for me as a father of young kids. I was able to self-select out of the process early rather than waste everyone's time doing code tests etc...
Step 0: Introduce yourself, talk about your goals and outline the process.

There's no magic bullet for hiring programmers. But I can share advice on a few techniques that I've seen work, that I've written about here and personally tried out over the years. 1. First, pass a few simple "Hello World" online tests. I know it sounds crazy, but some people who call themse...