rc3.org

Strong opinions, weakly held

What are job interviews for, anyway?

I read two blog posts on Friday that made for an interesting contrast. The first was a post by Mike Loukides arguing that the problem with the economy is not a lack of qualified candidates, but rather a lack of flexibility on the part of employers when it comes to who they hire. The other post I read was by Carlos Bueno on how to get hired at Facebook. He references an earlier post by Steve Yegge on how to get hired at Google.

Not only do the posts from Facebook and Google focus on listing specific skills that engineers they might hire need, but they include skills that engineers will never actually use at work. For example, both of them focus on the need to prepare to program on a whiteboard. I have well over a decade of experience as a software developer, and I’ve never programmed on a whiteboard. I don’t feel particularly uncomfortable with it, but I don’t think it is a clear indication of one’s ability as a software developer.

I don’t worry about how Google and Facebook hire. Their process works well for them, and will continue to, as long as they remain some of the most desirable places in the industry to work. Their method isn’t going to work for your company, though.

For most companies, the way to find stars is to deemphasize skills and to focus on intelligence, attitude, and communication. There are no risk-free hires, and the low risk hires from a skills standpoint often lack creative potential. The skilled, creative people already have great jobs. I can teach a smart person about Big O notation in half an hour. Teaching a poor communicator to be work well with teammates is nearly impossible. Focus on what’s important.

In the end, the excessive focus on skills and experience that seems endemic is hurting more than it’s helping.

8 Comments

  1. I also hate “programming” on whiteboards, and the trivial pursuit style questions one often gets asked in job interviews. What’s worse, I find I default to this style of interviewing myself. The thing is, I don’t think I’ve ever regretted hiring someone who could program on a whiteboard and seemed to have some depth of knowledge about the subject of computer science. I think trying to suss out if a person is smart and personable is much trickier in the context of an interview that might last an hour.

  2. I think the style that Google and Facebook use minimizes false positives — you rarely hire someone who lacks the technical chops using their approach. I think it is very heavy on false negatives, though — they send away a lot of people who might really benefit the organization. They also wind up with organizations very heavy on people who can dive deep into computer science trivia and program on whiteboards and lighter on different kinds of people, which I’m not sure is the best. That said, I’ve never worked at either place and maybe that’s not a big deal at all.

  3. “For most companies, the way to find stars is to deemphasize skills and to focus on intelligence, attitude, and communication.”

    We try to do this. It’s been pretty successful so far.

  4. I’ve been writing software for 17 years, and I’ve used whiteboard programming at every one of those jobs. Not to interview, either. “Can you imagine what a computer is going to do with this code” is a very important skill to have.

  5. I also don’t understand what you mean by deemphasize skills. Raw intelligence is a fun thing to have, but aptitude for computer science problems is not the same thing (even though people who are really good at computer science problems wish — or even are convinced — that they are!). Some very bright people are no good at computers. Nobody wants to know whether you know duff’s device or can swap two integers without a temporary in C; that stuff is more like a secret handshake than a real interview question.

  6. What I mean generally is that interviews should focus on the stuff that’s hard to learn — deep understanding of how to design and write software, ability to collaborate effectively with other people, and how to work effectively and get stuff done. As opposed to easy stuff to learn — the syntax of particular programming languages or tests of memorization rather than thinking.

  7. “Programming on a whiteboard” is a test for “Can you write even the simplest program correctly?”. Talking about systems or architecture in general terms does not give proof that you can write a simple program, and if you can’t write a simple program in my experience you are likely to be a net negative contributor to productivity. A whiteboard eliminates the possibility that tools or editors can provide assistance. I think if you’re a good programmer you can write and simulate simple programs in your head, so writing them on a whiteboard shouldn’t be a problem.

    I haven’t interviewed anyone (yet) since coming to Google, but I have interviewed people at previous jobs and found that many software engineer candidates who looked great on paper and could talk your ear off were simply unable to write very simple programs like reversing a string. Not hiring people who cannot perform their primary job duty is important no matter how small your company is (in fact the smaller it is the bigger the problem they are going to be for you).

    I really enjoyed my Google interviews, the questions were not “trivial pursuit” questions and I didn’t find the whiteboard programming difficult or awkward.

    I agree that you should be looking for skills in system design and collaboration, but those are harder to get at directly in interviews, and in any case if someone lacks basic coding skills they’re unlikely to be any good at the other things.

    That being said I think that most employers should be more willing to train people and to hire people with potential rather than experience. But I think that applies more when the amount of training is on the scale of weeks or months rather than years. Also in general when I hear employers complain they can’t hire I don’t think it’s really a lack of skilled potential employees, but that they aren’t willing to pay market wages or provide working conditions that people will accept. Even if you’re unemployed it doesn’t make sense to take a job at grossly under-market wages or in bad working conditions.

  8. I do think that job interviews for programmers have to include actual programming. I think it works better at a keyboard than it does on the whiteboard.

Leave a Reply

Your email address will not be published.

*

© 2024 rc3.org

Theme by Anders NorenUp ↑