
Finding awesome developers in programming interviews - bdfh42
http://stevehanov.ca/blog/index.php?id=105
======
raganwald
I am confused by the opening paragraph:

 _In a job interview, I once asked a very experienced embedded software
developer to write a program that reverses a string and prints it on the
screen. He struggled with this basic task. This man was awesome. Give him a
bucket of spare parts, and he could build a robot and program it to navigate
around the room. He had worked on satellites that are now in actual orbit. He
could have coded circles around me. But the one thing that he had never, ever
needed to do was: display something on the screen._

Okay, he "could have coded circles around the interviewer" while
simultaneously he had never, ever needed to display something on the screen.

Does this mean he's an awesome developer and we should be wary of a false
negative provided by applying a single, very narrow test? Or does it mean we
should apply lots of tests because you never know when you're going to
discover that the person you thought was awesome lacks some basic experience
you deem fundamental?

~~~
arethuza
Interviews are stressful and coding is not normally an exhibition sport. It is
possible for people to freeze in interview situations - I didn't realize it
was possible until it happened to me once in an interview for a CTO role for a
fairly established company. I had aced giving the "how do you launch a new
product" presentation but then the founder asked me some trivial coding
questions (and I do mean trivial) and my brain was stuck in marketing mode and
would _not_ context switch. A few minutes later I did come up with an answer,
but by that point the founder has obviously decided that I wasn't technical
enough....

I can laugh about it now - was pretty gutted at the time.

~~~
raganwald
I recall the wheels coming off my bus once when asked to write a Java program
that printed the first 100 primes in an interview. This was after writing a
Scheme implementation in Java, being the Threadalyzer team lead, and JProbe
Development Manager.

I also laugh about it now, but at the time I was bewildered.

------
wccrawford
Some good points in interviewing, but I think that's more useful to me for
when I'm the interviewee... Seems like that info could be used to improve your
resume and lead an interview from the interviewee's seat... Make them ask the
questions you want to answer, etc, if they aren't already.

As for the lying on the resume, though... I disagree. Assuming everything on
the resume is a lie and not being surprised about the lies is wrong. Anyone
who will lie on their resume will lie afterwards, too. Anytime they tell you
they can do a task, you can't trust them for it. You have to micromanage them
forever after.

That's not to say you should assume it's the truth... You should investigate
and make sure. But if there are lies, it should horrify you.

~~~
kolektiv
I wanted to echo the last part of this one. I've interviewed a lot of people
and I see people "exaggerating" or outright lying about their skill levels and
abilities more often than I would expect. It seems, anecdotally, to be
increasing as well. If you find someone doing this - no hire. Instantly. If
you're the one with the CV - please don't. For your own sake. It's poisonous,
and it won't help you long term.

~~~
gaius
Yeah, it's not like, if you get the job, you can fake out the machine too.
Either you got the skills or you don't.

I interviewed someone recently who listed C++ as his top skill. What that
actually meant was a) he phyically sat near the C++ programmers at his current
job and b) he ran the programs they wrote on his PC.

~~~
prodigal_erik
A colleague once had a candidate who dutifully listed PostScript on his résumé
because he had been using a "print to file" feature.

~~~
gaius
I've seen telnet listed as a skill too.

~~~
dkarl
People list all the programs they've used. Microsoft Word, Microsoft
Powerpoint, Firefox, Internet Explorer, [no, not a web programmer] Windows,
Linux, Mac OSX, emacs, Visual Studio, gcc, g++, ssh, Putty, xterm, armed
robbery, and emacs. (Typical start to an interview: "You listed emacs twice."
"Really? Oops, sorry." "That's... not the reply I was fishing for, but 'oops'
is acceptable.")

Frankly, I don't blame them. I looked through a stack of a dozen resumes on my
boss's desk and noticed that every single resume listed Scrum. Somebody in HR
is screening out candidates that don't list Scrum on their resume. I pointed
it out to my boss and he just laughed and said he didn't think he could do
anything about it. (I didn't look for other patterns, but I bet it's just as
bad with particular software technologies.)

So listing every single piece of software you've ever noticed installed on
your computer is a good policy unless you're personally handing your resume to
the hiring manager. It makes a bad impression on technical folks, but that's
better than getting your resume round-filed before anybody technical sees it.

(Note to self: next time job hunting, prepare different HR-friendly and
techie-friendly versions of each resume.)

~~~
gaius
There must be some jub hunters advice book where they tell people to do this,
or maybe schools careers advisers do.

We had a case where we had a stream of candidates giving the same - and wrong
- answers to various questions, all had come via the same recruiter, who was
debriefing them after and coaching the next one.

------
dkarl
_The question must be precisely worded. "Write a function to shuffle a deck of
cards" is woefully ambiguous. Provide the function header and avoid
misunderstandings, which are all too common._

Nah... you need to know if the candidate can spot underspecified problems and
ask for clarification.

~~~
ams6110
I'd argue that ability is more important than if he can come up with a good
card-shuffling or string-reversing algorithm on the spot. Algorithms can be
looked up easily if you're having a mental blocj. The ability to know that you
need more information is a bit more elusive.

------
JoeAltmaier
Again, the interviewer doesn't distinguish between "systems programmer" and
"applications programmer". His questions are ALL for systems programmers.

Its like testing bias. No surprise that white upper-middle-class males clog
our colleges, if the test is written by one.

~~~
Revisor
Can you elaborate on the difference between a system and an application
programmer?

~~~
JoeAltmaier
E.g.

Systems programmer deals with deep structures, narrow APIs and lots of
persistent state.

Applications programmers deal with wide APIs and state machines.

