My company is currently interviewing for programmers to join my little group. However, what they say they are looking for makes me wonder about how we all think about the interview process. It seems like, judging from my experience and what I've read on blogs, it is always the company that makes the decisions or gets to have the last say about what happens. Of course, the company does incur the cost of paying the worker, but the worker also incurs the opportunity cost of getting better pay/benefits/experience/enjoyment at a different job. I believe that the interview is not necessarily the interviewer-interviewee relationship that everybody seems to see it as, but rather a discussion between two parties to see if they would like to work together for a time.
Remember I'm talking about software companies here, I have less experience looking at other fields.
Companies it seems want to hire the best and brightest. They also want experience. Finally, they want to pay the person as little as the person is willing to accept. But, the people at the company seem to think that the best and brightest will actually want to work for them. For example, when I graduated, I wanted to make video games and so I applied at Ubisoft and EA here in Montreal. They told me that they wanted at least 3-5 years experience making games. But now, after only one year of professional experience, I would probably decline any offer from Ubisoft or EA. Why? Because it would suck to work there. I wouldn't want to work for 70+ hours per week, I want to have a life. I don't want to be some mindless drone churning out software for a huge company, where my work will only result in a slightly higher paycheque, and the hard work that I do is taken and owned by the company. I'd rather have some sort of stake in the earnings that my work would produce, or be able to give some of my hard work to the community in the form of open-source, so that I can have that wonderful feeling that I've bettered the world for nothing in return (except that wonderful feeling). Compare EA to Fog Creek Software: you get stock plans, retirement plans, 4 weeks vacation (nice!), flextime, etc. Way better than most jobs I've seen. The work doesn't look incredibly thrilling, but most places are like that.
There are varying degrees of programmer skill out there, as many of us are aware. Same goes for experience, although I'd argue that you don't need much experience to be better than those with lots of experience - unfortunately HR people don't seem to understand that concept. So lots of companies want to hire the top notch guys/girls to work for them. But you have to think to yourself, "if I had the requirements that this company asked for, would I want to work for them?" When I ask this question about Ubisoft/EA, I say "fuck that!" If I had 3-5 years of experience in game programming I'd go somewhere that I get treated like a person and not a machine.
So just like there is varying degrees of programmer competence, there are varying degrees of job sucking-ness. The good people don't want to work for a job that sucks. Or even a job that is mediocre. And believe it or not, your company may not be the amazing place to work that you think it is. So when you're doing your interviewing, maybe lower the bar a little. The hotshots that you interview are probably going to go somewhere else, unless you're one of the rare companies that would actually be a pleasure to work for.
For programmers applying for jobs, remember that your skills are valuable. Without them, the company would probably not survive - especially if they are a software company. You should evaluate the company you're looking at and see, is it a place that I would enjoy working at? Ask questions, because the interview is as much you seeing if you like the company as much as it is them seeing if they like you.
Of course, when you're fresh out of university with loads of debt, you'll probably want to get the first job that comes your way. That's fine, but most of the time you won't get lucky and grab a good job, so you should keep an eye out for things that are a bit more interesting. Use the first job to support yourself, reduce your debt (if you have it) and gain a bit of experience, but don't feel like you owe them anything other than your 40 hours. Unless of course, it benefits you to give them more.
EDIT: http://www.igda.org/qol/whitepaper.php is an interesting study on the game development world.