Like all other interviewing "processes", this is too much overhead.

I can tell after talking with someone for 5 minutes whether have the right stuff or not. You can tell by how they choose their words and express their opinions.

The best interview process:

1. Candidate sends company a resume.

2. Company reviews resume and likes what they see

3. Company calls candidate for a quick 5-10 minute call.

4. Questions asked are "What are you currently working on/thinking of starting" (referring to any kind of extra-work projects the candidate might have), "what is your favorite language and why", "what is your favorite library/framework and why", etc. Like I said before, its usually pretty obvious who comes from experience and who is novice. For instance if someone said they prefer PHP over C# because "PHP is faster", you can assume that person isn't the most experienced... The other day I sat in an interview where the candidate was an older guy (grey haired who graduated in the early 90s). Not even 25 seconds into the interview and I knew immediately that he was the read deal. It was something about how his stories seemed to have the right details. The problem is that it takes experience to judge experience. When I was 22 years old (which is the average age of most startup founders these days it seems), I would have been more likely to dismiss him as an old grey haired coot whose skills are outdated.

5. Company decided candidate is experienced and invites the candidate to a face to face. This may include travel expenses if the candidate is not local. At this point the company pretty much makes the decision to hire the person.

6. During the face to face, the objective is to give the candidate a clear description of what the company expects in terms of work hours, salary and benefits, etc. Also, what kind of problems they are working on, what kind of technology they use, company culture, etc.

7. Candidate and company negotiate, and then eventually agree on terms of employment. Candidate starts whenever possible.

The problem is that it takes a good developer to know another good developer. If you are a non-technical person, or a low-experience developer, you don't have much intuition to go off of. Instead you have to resort to making candidates jump through hoops by making them do things like FizzBuzz.

Another thing I should say. Interviewers should focus less on judging the candidate based on personality. The way I see it, as long as you're passionate about the right things, I don't mind if the person is prone to jerk like behavior every now and again. All brilliant people in the history of mankind have been described as "jerk" at one point or another. In my experience, the truly talented will always set aside their sometimes giant egos in the end for the benefit of the project. Its kind of like Justin Bieber. Despite him getting into controversy all the time, he still manages to get out there every night to put on a show that makes the fans keep coming back for more. The day his promoters stop putting up with his crap, is the day he fails to draw ticket sales.

In other words, more companies need to stop basing their hiring practices on repelling people prone to "Beiber behavior", and need to start basing it on bringing in people capable to drawing "Bieber crowds".