We have been interviewing for a .net developer position for quite a while - way too long in fact. What I thought would be a quick interview process has turned into a very rude awaking.
When I was looking for a job I was contacted by a contractor with a position that interested me. I was warned however, that the interview process included a 4 hour programming test. Many bodies had been thrown at this test and very few succeeded. I try not to be arrogant but I do like to think that I'm good at my job. Plus I have no certifications and no big name companies on my resume so I usually welcome the chance to prove myself. The test wasn't rocket science but it wasn't simple either. It was a simple recursion/stack problem, some database queries, a basic dynamic web page problem, and creating a functional calendar. It was a lot of time to give a prospective employer but when I got the job I thought the test was well worth it after so many other companies didn't even give me a phone call or an email.
OK, a year later I'm looking to clone myself. As much as I thought the test was warranted, I also thought that 4 hours is a really long time. I created a trimmed down version that was nothing more than sql queries and a simple databinding exercise. After a few candidates we decided it was too data-centric. My boss forwarded me the fizz-buzz question. I just couldn't believe what it's author was saying; senior level programmers can't write this trivial block of code? As more of an experiment than anything, we added in our own variation of fizz-buzz.
And this is where the horror starts. The very next candidate came in, sat down for 20 minutes, and asked to leave citing "personal reasons" without writing a single line of code. I couldn't believe it. I examined all the possibilities: Maybe she didn't understand the mod operator? I suppose you could do years of CRUD style programming and never need it? Maybe she couldn't read English? Maybe she was a VB.net programmer (the test is in C#)? But then there was always the last option - this 10 page resume couldn't actually write code.
We had another come in and at least attempt it but also failed miserably. Another came in and passed fizz-buzz, but couldn't write a database query to save his life. Another came in and did do well on both fizz-buzz and the queries. He didn't even know ASP.net, but because he at least seemed like he had his head screwed on straight we were willing to train him. But problems with his contracting house kept him from coming aboard.
I couldn't get over that fizz-buzz relies very heavily on a single operator. I think it was denial more than anything. I couldn't help but thinking something is wrong with the test instead of the candidates. Consequently, I added another simple question. It only required a boolean be returned if a second phrase could be made from the letters of the first phrase. I figured if they couldn't do fizz-buzz I'd give them a second attempt.
Originally we had advertised only a 3 month contract and we theorized that the short contract was one of the reasons behind the substandard pool we were pulling from. We upgraded the position to a 6 month contract to hire and called back a promising applicant that originally turned the short contract down. I started with him just like I did with everybody else; I explained each question, showed him where the answers were (yes we display what the exact answer should look like), went over any hang-ups that I thought he might have, and reiterated that he can ask any question. I didn't even get thru explaining my new anagram question when he stopped me and said something like "if this is the what you're looking for I don't think I want to work here." I reiterated that it's OK if there were parts that he couldn't do. He didn't care. I brought him back to my boss and he asked what he didn't like about the test, he referred to it as a bunch of puzzle questions that he needed google for and that we should look at his resume to the systems he's "architected." I walked him out and he described his (superior) interview process of asking questions about polymorphism and factory patterns. I just wanted to slap him and say "Don't you understand? It's people like you why we do this! Yes you can use some big words and put fancy projects on your resume. You can call yourself a senior developer and an architect. But you can't write code!!"
On my way back to my desk I realized my blood was boiling. I understood why good developers either can't find a job or can't get the pay they deserve. I understood why so many projects fail. I understood why I spend so much time cleaning up crap. I understood why we have been trying to fill a position for 2 months. It's because it would appear that the ratio of fake to genuine developer resumes out there is about 5:1 or worse! And the really bad news is that these simple tests don't even guarantee that you have a good programmer. They only tell you if you have a programmer at all.
The moral of the story? If you want to build a house, hire a guy that can hammer a nail. If you want to build a car, hire a guy that can loosen a bolt. If you want to build a piece of software, than hire a developer that can write programming 101 code. Test your programmers!