Getting the Interview Phone Screen Right

The job market for software developers is hot. This is great news for programmers, but it makes the interview process challenging for potential employers. A reader recently wrote me expressing some concern about the interview process:


This is a companion discussion topic for the original blog entry at: http://www.codinghorror.com/blog/2008/01/getting-the-interview-phone-screen-right.html

Good stuff. I’m interviewing for a developers position that I really want on Friday morning. Guess I’ll have to test myself on some of these and shake off the rust…

anyone who asked me any of those questions would get a lead pipe across the head.
first of all…if your a CODE MONKEY your just DATA ENTRY
second…GOOGLE is your friend
third…what the f? are you hiring me to wrote code for the god damn space shuttle or to make some charts graphs for business reports?

If you want a MATH MAJOR then say so.
I don’t waste my time with idiot phone screens anymore
AND
I don’t bother to even go for the “let me test you skills”.

After 20 years of writing software I’ll lead pipe you before you start

THIS BLOG IS A JOKE

ChaChaChing: After 20 years of writing software, you are a lunatic!

See, the screening process works: chachaching would be eliminated from contention without having to see him rave in person.

I understand interviewing is stressful. I’ve been on the receiving end of it plenty of times myself, and I am totally sympathetic. But please bear in mind we’re not looking for perfection here, just familiarity. Remember the disclaimer!

–
Please understand: what I’m looking for here is a total vacuum in one of these areas. It’s OK if they struggle a little and then figure it out. It’s OK if they need some minor hints or prompting. I don’t mind if they’re rusty or slow. What you’re looking for is candidates who are utterly clueless, or horribly confused, about the area in question.

Getting screened out on the phone may be painful-- nobody likes rejection-- but I assure you it’s a far better alternative for everyone than somehow making it through to the hands-on test and failing in person. That is not pretty at all.

It seriously frightens me that there are programmers out there who can not solve that phone number problem in a full hour. That should take more like 2 minutes! If you can’t answer that, go live in a cave.

Seriously, now I know where those code examples at the DailyWTF must come from. (Well, that and chachaching, apparently.)

Proposed new regex challenge: write a script to find where those programmers are working and fire them all before they bankrupt their companies or get somebody killed.

Let me ask you something, Jeff. The day you started work at your first professional programming job did you know all those things you highlight in this post? Because, I certainly didn’t. Sometimes, it’s the person’s capacity/willingness to learn that’s more important than the things they already know.

But what do I know, I’m just hanging on to the edge of the lower tier of the hierarchy of professional programmers. That’s why I play the lottery, I guess. Programming all day for nimrods vs. sitting on the beach sipping mojitos — I’ll take the beach. Hey, a fella can dream…

How do you do #1 (have the candidate write code) over the phone? On a whiteboard in person, sure. Maybe even in some kind of IM session. But on the phone!?

The other four seem quite do-able in a conversation format.

These are very good questions. Complex enough that you have to think about them, but simple enough that you have no reason to only say “I don’t know” for any of them.

From what I’ve found though, lots of companies seems at least equally as interested in knowledge of products (if not more interested), such as SQL Server, ASP, and .NET, than in fundamental concepts like data structures and big-O algorithmic complexity. That’s why they’re always full of incompetent code-monkeys.

Jeff,

Sometimes you have to understand the smartest of all people don’t need to know everything. Even though some topics seem to be part of the standard set of “101 CS Questions To Ask”, you don’t need to know everything because it depends on what you’re trying to do.

For instance, I was once asked during an interview what is an AVL Tree and how it works. I studied the specifics of AVLs 5 years ago during undergrad, and it’s used to keep a tree balanced. Now, what is the exact procedure etc – I literally don’t know because I haven’t tackled it in 5 years. But a quick google/wiki search reveals (that took ONLY 5 seconds): http://en.wikipedia.org/wiki/AVL_tree.

Now the interviewer was not happy that I did not know the answer. I then asked him: if you’re designing a multi-threaded server that needs to access busy network queues, what type of synchronization methods would you use? He couldn’t answer…only to struggle with “some mutex”. I was looking for Spin Locks, Reader/Writer Locks, Semaphores/Mutexes, Read-Copy-Update Locks (employed by linux kernel), etc.

Of course, I didn’t want to make them feel stupid, but only wanted to prove a point.

I’ve been on the receiving end of 5 or 6 serious interviews for the first time over the past 3 months. I have around 3 years experience and a uni degree.

Whilst I can sympathize with the whole idea of testing and screening I don’t think it should ever be the be-all-and-all of whether or not you reject someone - especially if you’re looking for specialized skills that are not easy to come by (in my city, it seems good programming skills are in high demand).

The first couple of interviews I went to I did very badly in the technical test. The interviewer thought that I wouldn’t be up to the standard they were after. The 3 or 4th I did much better. The 5th and 6th I blitzed and got some very nice job offers!

OK, I may have felt the pressure a bit after bombing on the first two, so I have been doing some extra study. Did my technical skills really develop so rapidly over the past 2 months, or did my interview skills develop? Did the first interviewers just miss a good opportunity… or were the later interviewers duped?

The fact is, it’s easy to get good at interviews after a couple of times. You hear the same questions every time, so you can go away and cover the holes in your knowledge.

Whilst the interviewer may be thinking “I’m only looking for total vacuums”, this is not the attitude I’ve experienced. You can see what I’m talking about at the end of Steve Yegge’s post:
“What language are you most proficient with?”
“I’ve done mostly Java”
… Why would this mean the person would not be able to answer the data structure and HTML parsing question? The candidate is simply answering the question given to them. Sure, it may not be the best answer, but under the stress of an interview “best answers” are usually not given. I know for a fact that I would answer something along these lines but I would also be perfectly capable of solving both the data structure and HTML parsing question.

In the next question the guy forgets to answer “tree” and Steve thinks he will fail the data structure test. You can be sure though that the candidate will not forget “tree” in his next interview and the next interviewer will be duly impressed. In both cases it will be the interviewer who has really failed the test.

I think a big piece that’s missing here, and from every step of most developer interviews, is questions on testing and debugging.

How do you know the code works? How do you design a unit test? What kinds of conditions do you assert in the code? How do you debug a crash? What if it’s intermittent? What types of mistakes lead to intermittent bugs?

I find debugging questions quickly give me a feel for how much experience they’ve had actually coding. Even great programmers who write very few bugs have been at it long enough to develop good debugging skills. Noobs can often do fine on a simple coding problem but have no idea how to track down an error. (Nothing against noobs–sometimes you’re hiring for a junior position. But sometimes you have to spot an expert.)

You can look probably 100% of these up on google. That would be my answer to all of these during a phone interview.

How do you think I found CodingHorror in the first place!?

I have been a programmer for years and have perfected the art of only knowing (retaining) that information which is useful at the time. I am now very good at knowing where to “look it up” when I need it.

Regarding the Phone problem:

"To me, this question indicates whether a developer will spend days doing programming work that he or she could have neatly avoided with, perhaps, a quick web search and some existing code that’s already out there. "

Does an interviewer want to know how I would solve the problem, if I am able to solve the problem (in spite of not spitting out an answer within the entire hour, which assumes also, all things being equal, that I am a good “test taker”), or if I am able to effectively use Google, which proves nothing about my ability to program?

You mention out of one side of your mouth how Programmers Can’t Program, yet suggest as a suitable answer for this question “I’d Google for an answer”?

Answer that way in my interview and it would be over. I dont want data entry people and effective web searchers. I want programmers who are good at what they do and are eager to learn to be better at what they do. Google teaches nothing except cutting and pasting.

I don’t really think knowing a single language is a problem if the candidate can demonstrate a knowledge of the underlying concepts.

I’ve programmed in C++ for most of my career, but when required I can pick and program other languages with little trouble.

I’ve coded in Python, Perl, Php, Java and numerous custom scripting languages when required, but couldn’t tell you a thing about them now and wouldn’t call myself anything other than a C++ programmer.

A competent programmer should be able to be programming constructively in most other mainstream languages within a few days.

Kenneth: When you are hiring someone with no experience, you know that and the interview will be totally different. Most people are not hiring entry level people with no experience, they are hiring people that claim to have 20 years experience. These questions will filter out those that are not strong candidates for the 20 years experience they claim to have.

ChaChaChing: Another thing a phone screen can do is filter out people with personality problems. Threatening people with a lead pipe for asking questions show that you would fail this test.

People who are getting upset here: you’re taking this the wrong way. Once you have to start sitting in on interviews, you’ll understand the value of screening out the “No Way, No How” folks. I was never particularly hung up on The Right Answer; it’s more a way to see how the candidate thinks, how they work through problems. I will admit I been in interviews where the interviewer seems more interested in showing how smart they are, but that’s not the point here.

The regex one was a revelation when we started asking. I wasn’t surprised that so many people had never heard of regexes (we were a Microsoft shop and thus most candidates were as well), but I was shocked by how many people insisted the problem either couldn’t be solved or spent the entire answer period trying to get me to add constraints to make the problem simple.

Sorry, Jeff, but if most companies threw those questions out as part of a standard interview process, the job market for programmers would be insanely hot right now, because I’d be more than willing to bet that at least half the programmers out in the field right now wouldn’t be able to pass all five areas. I know for a fact that I’d fail the Scripting/RegEx section, because A) I’ve had approximately zero experience with regular expressions and B) no experience whatsoever with scripting languages.

Blame it on my associates degree, but we didn’t get into building class systems that modeled the whole fekkin’ animal kingdom, nor did we spend the time on bitwise vs. logical ANDs. I would love to have spent time on it, but we were already trying to learn the basics, and we only had two years to do it; that’s why I’m getting my SE degree now. Point being this - what Steve is looking for is someone who has (probably) several year’s experience in every conceivable aspect of the programming world, which is understandable if he’s looking for someone to work on the backend of Amazon.

If these are the kinds of questions that college graduates would be expected to know the answers to when they went to apply for their first job, you’d see the candidate pool for programmers/software engineers dry up pretty dang quick, before the applications even got filled out. I know that the first time someone asked me to “describe some options for implementing a priority queue,” I’d politely tell them that I had no clue, and hang up the phone.

Then I’d move to the west coast and become a hippie, having my dreams crushed. :stuck_out_tongue:

Aha! I knew Google’s phone interview was bad. (They made me drive the call.) No fault of mine if I’m rejected by a bad process. :wink: