Live data from Hacker News

Interviews Can Be a Terrible Way to Identify Good Programmers

thecodist.com

1–10 of 108 posts

Re: Interviews Can Be a Terrible Way to Identify Good Programmers

#2
He makes a brings up an interesting point about the idea checking the effectiveness of interview methods. It seems that lots of people have intricate hacks for divining the talented programmers in an interview, but NO ONE can back their methods up with hard data based on performance and non-performance of candidates over project time-spans.

Re: Interviews Can Be a Terrible Way to Identify Good Programmers

#3
No offense, but the only advice I've learned from all these "how to hire programmers" article, as a programmer, is that it doesn't make a damn bit of difference, because every person hiring as their own idea of what works. The best thing I can do to get hired somewhere is be myself.

For every person who says not to bother with a resume, there is another person who wants them.

For every person who denounces certain terms on a resume, another person is looking for them.

For every person who thinks "experienced with" means "you can write a book on the subject", someone else things "you've used it in production."

White board tests are necessary. They are useless. Example code is critical. No, just showing projects. Gotta see open source contributions. No, show what your code accomplished.

You need schooling. You don't need schooling. Degrees don't matter (though, try to get a visa without one). Self-taught rules.

Ask them to write a FizzBuzz program. Reverse FizzBuzz. FizzBuzz is silly and doesn't matter.

Throw out half the resumes so you only hire the lucky ones. Have them work for you for 90 days/1 month/2 weeks/1 week/1 day/1 project.

My advice: ask them whether they prefer green or purple. Whether they prefer the number 34 or the letter X. Take them out to lunch and see if they know the name of the waiter/waitress. Then get your mother's opinion on them. Then play a game of Magic: The Gathering with them, and if they win, roll a d20 to see if they can beat the AC of the job. That method has never failed me.

So yeah. Looking for work? Be smart. Be yourself. Because if you resort to playing games and being someone else, you're going to end up working for someone who thinks you are something/someone you are not. If you can't get the job because your resume was too plain/too fancy for the person doing the hiring, it's probably for the best.

Edit: To be clear, this isn't a direct response to the original article, but rather, to these types of articles in general.

Re: Interviews Can Be a Terrible Way to Identify Good Programmers

#4
The author places a lot of stress on memory. I think he's overgeneralizing from his personal experience.

Personally, I have a very bad memory, especially when confronted with query-like questions like "explain how you solved some hard problem when working at company X". I remember based on associations, not time: If you sit me down in front of the code I wrote, or pose the problem to me directly, I'll remember in a jiffy, but looking back on my time at a company/at school/etc it just seems like a blur---I can't remember anything at all that way!

Re: Interviews Can Be a Terrible Way to Identify Good Programmers

#5
One of my favorite questions is: "What's the best bug you've ever found?"

Usually I get a "Huh?"

The really stellar folks will tell you about the bug that took two weeks to find and boiled down to a single missing comma in a vendor's library routine. Or /something/. But "Huh" is a bad sign.

"Huh?" is not a fail, but it usually correlates with people who can't write a function to find the length of a string, and I see a depressing number of those folks, even ones with the tag "Senior" in their title.

Hiring strangers is terrifying.

Re: Interviews Can Be a Terrible Way to Identify Good Programmers

#6
To fix coding interviews in this country, you need to insist on having a great coder do the interviewing. In 90% of the interviews I go on, I get evaluated by an HR type who could not write any program more significant than Hello World.

What's funny is that the Non programmer interviewers are starting to administer coding tests, and they don't know what a good response is! So here I am doing a coding tests on a white board, and and I'm being tested on delivering the optimized code on the spot, basically producing the best code. So now instead of birdseed knowledge tests, we are tested for creating an algorithm from memory on the spot, a memorization game. Like Jeopardy. That's not how the best coders code, we offload most things to google searches and general process of cutting code. They don't realize this because they evaluators can't write a program. They can only understand one specific algorithm and its implementation.

So the only way to get a good coder is to take your best coder, and then hand him a stack of resumes, and ask him which ones to bring in, and have him sit down with the recruits and have him give an up or down vote.

Using non coders to filter coder resumes? The time is better spent hiring a monkey to throw darts and hire the one with the most darts. I don't care how many books on coding interviews they read.

Re: Interviews Can Be a Terrible Way to Identify Good Programmers

#7
post #2

He makes a brings up an interesting point about the idea checking the effectiveness of interview methods. It seems that lots of people have intricate hacks for divining the talented programmers in an interview, but NO ONE can back their methods up with hard data based on performance and non-performance of candidates over project time-spans.

This a good point. It seems somewhat unavoidable, since no one will ever be in a position to evaluate the effectiveness of both those who did well on their metric and those who did poorly (since they will only hire those who do well).

Perhaps there are companies out there with a large enough sample size that are recording metrics on a "programming concepts verbal interview", "analytical thinking verbal interview", "programming test" and "resume match", such that they can evaluate what are the best predictors.

Re: Interviews Can Be a Terrible Way to Identify Good Programmers

#8
/sigh interview techniques really are a perennial topic on HN.

> [a coding test] won't tell you squat about how good they are in a year long project with 10 other people,

The author misses the point of a coding test. It's a negative rather than positive filter. Someone who does amazing on FizzBuzz is not by definition an amazing programmer. Someone who can't solve FizzBuzz however almost certainly is not a good programmer.

Simple coding tests are a very effective filter in terms of the time spent.

> So why spend an inordinate amount of time on relatively minor parts of a programmer's skill set?

I wouldn't call half an hour "an inordinate amount of time".

The author then opines about how "can just tell" if someone is a good programmer or not. I can sympathize because frankly so can I. I went through a period of taking 10 interviewees to lunch. I asked them nothing technical and basically just answered their questions. From the first 10 minutes I could tell:

- 1 would probably get an offer (he did);

- 8 would not (they didn't); and

- 1 I was unsure about (no offer).

Looking at the author's profile [1] I believe I can see the problem: it doesn't appear he's ever worked for a large engineering organization. This is fairly obvious from the content of this post because none of his solutions scale.

Let's say you have a large organization with 5 Andrews. Each of them says to hire this guy they just interviewed. What do you do if you're looking for less than 5 people? Are they going to work on the respective teams of those giving the recommendation? If not, how do you know they're a good fit? You need to consider company-wise culture and expectations. How do you calibrate between them? Do they have the necessary foundation to do not just the job they'll be starting on but to grow with the organization, adapt and perhaps work on other projects?

The other problem I have is the "war stories" aspect. This is a very definite bias. Take the way human memory works. Imagine you have a conversation with someone that's memorable in some way. At first you can remember word-for-word what happened. That quickly fades and you remember the gist of what was said. You may even think you remember exactly what was said and how it was said but usually you're wrong (try it by writing down what was exactly said and going back to it after months or having two or more people recount the same event). After awhile even that made fade and you may just be left with an emotion about the event.

Some things I can remember very well but more often than not, I've learnt my lesson and the exact circumstances or even the origin entirely are lost. This is largely because it's useless information.

But here's the biggest problem of all with the post:

> My favorite idea is still contract to hire everyone after your (hopefully reasonable) interview;

Okay, you've excluded anyone really good because they're not going to jump through that hoop. I don't consider myself a "rockstar" and even I won't jump through that.

Maybe the real problem is the OP doesn't even know what good programmers are because this is a recipe for mediocrity.

Lastly there's a story about team bonding (probably distorted if not made up outright at a guess). The author doesn't seem to realize that his hiring process is pretty much about hiring people like himself, which is fine, but that's not the definition of a good programmer.

I've seen teams work well who:

- all work closely together and socialize together;

- never socialize together;

- work remotely;

- work on different schedules;

- and so on.

Don't confuse programming ability with culture fit and work style. Those are three different things all important.

In a large organization you're going to have some aspect of a common culture but very different team cultures (and even site cultures). Part of hiring in a large organization is recognizing that you're not trying to hire "you" and then working out how you can best use someone not like you such that they flourish.

EDIT: oh and if he thinks Google, as one example, hasn't done extensive data analysis on interview techniques he's nuts.

[1]: http://www.linkedin.com/in/andrewwulf

Re: Interviews Can Be a Terrible Way to Identify Good Programmers

#9
post #6

To fix coding interviews in this country, you need to insist on having a great coder do the interviewing. In 90% of the interviews I go on, I get evaluated by an HR type who could not write any program more significant than Hello World. What's funny is that the Non programmer interviewers are starting to administer coding tests, and they don't know what a good response is! So here I am doing a coding tests on a white…

I totally agree with you that anyone interviewing for a technical position should be technical -- if they ask you a technical question, the only answer cannot be "the answer I found in this book or learned from someone else". That's a disaster waiting to happen.

However... I've known a few great coders who were absolutely terrible interviewers. So just being great technically also isn't a sure sign that the interview will be handled well.

Post reply on HN