On TechCrunch, Jon Evans published "Why The New Guy Can't Code," a post saying to hire only people who've shown that they've accomplished something instead of people who can jump through interview hoops.
The situation looks like this: some schnook is interviewed, and is able to answer the brain teaser questions (example is from MS: "why are manhole covers round?", etc.) The idea is to see if the person can think on his feet in the interview.
The problem is that people have managed to develop good interviewing skills but not good coding skills to go with them, so these hires end up being worthless.
Mr. Evans says to require hires to have done something in the real world, suggesting that anyone with any real ability is going to have published something on AWS or GAE or maybe in Android market.
It's an interesting thought. Some of his points are ridiculous - he says that the guy who invented Hungarian Notation was an unworthy person who rode Bill Gates' coattails, apparently unaware that Charles Simonyi is very well respected - maybe more than Gates is - and that Hungarian Notation's bad reputation is more at the feet of morons like Herbert Schildt who use it badly in books than Simonyi himself.
But the thought of hiring only the experienced is a chicken-and-egg problem. People have to start somewhere; a student's project isn't likely to have real-world implications (and therefore, "having done something" wouldn't mean much) unless they're Facebook.
Plus, you don't need brilliant people sometimes - sometimes you just need competent coders, and sometimes competent coders have real lives and donb't live to be virgins. So they wouldn't spend their offtime writing yet another fart app just to get a coding position, and maybe just knowing some basic analytical skills and how to read the compiler error messages from Eclipse are enough.
So how would you approach hiring to make the process work?