I am responsible for hiring process both in my own company and in the company I am working with now. And the biggest headache is to pick a right staff for positions that requires lots of training. For example, programmers.
The problem with web programmers is that either they are young, solo workers, really bad or really expensive. However, there are guys that stand out from the general crowd which you have to find.
Typically, a programmer gets interested in programming and computers quite young. Many programmers know they destiny before they finish school. The best of them start coding something before university as well. In my opinion, university gives very little to improve basic programmer skills, but some knowledge might be useful in long shot. I have seen some good ones that have never studied computer science or programming at all.
The best way to determine how a programmer will perform is giving him a task that he never did before. For example, grabbing something from other page, creating something with exotic library or something along these lines. The reasoning beyond that is quite simple:
First, you can see if they are capable of finding solution. If a programmer gives up, he will not learn any new tricks on his own. Searching can give a lot of answers.
Second, you can see how you can communicate with that guy. If it takes time to explain problem, then you will have same issue in the future as well. One should pick a programmer one can work with, no matter how good other choices are.
Third reason is that you can see his code. Coding web does not provides excuses to use unreadable code, though many freelancer folks / solo workers code for speed rather than quality. I am not talking about comments, but about simple things like variable naming or clear code structure.
There are also couple good questions you should ask and listen. Personally, I do not like programmers that do not try new things like frameworks or cms’es that speed up coding. They have to be curious and willing to learn.
Additionally, one should listen when they are speaking about former jobs – what they liked, learned or disliked. This is good to determine personal motives and if you can make them happy in your team.
Lastly, I always ask about most interesting project: one that is most difficult or interesting.
The final consideration is not only if the person is right for the job, but if you can provide a job that is right for that guy.
I have made hiring mistakes in the past. I wish I could tell if I can work with a guy from first meeting. Though life would not be as interesting then.