Getting the Interview Phone Screen Right

I’m with Kashif Shaikh and others here. A lot of these questions are specific fundamentals that a quick google get you the answer.

What you need are candidates that know how to find out how to know and can grep the results quickly. People that can see what the problem is recognise what the solution may be, understand the why, be quick and effective in implementing the solution, and be able to explain why and stand by it (this bit catches the copy’n’pasters).

I’ve studied all sorts of data structures in college, written code in several languages and platforms over there years, bitwise operations in z80 assembly back in the day, etc.

And, I’d probably fail an interview such as this.

I’m working on a trading system for an investment bank, and I tell you what, the hardest part of being a developer is solving the god damn business problems.

“I’m working on a trading system for an investment bank, and I tell you what, the hardest part of being a developer is solving the god damn business problems.”

Why is it our problem to solve business problems? Isn’t that the job of businessmen? We’re trained to be computer scientists dammit! :wink:

@Jimmy:
"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."
Definitely. That’s kind of the point, remember? FizzBuzz and all that?

“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” — Heh. What’s more basic than the bitwise operators? Plus and minus? :slight_smile:

“What Steve is looking for is someone who has (probably) several year’s experience in every conceivable aspect of the programming world” — Not at all. #1, #2, #4, and #5 are all typically covered in a 200-level (non-majors) programming course at U.S. four-year universities. #3 is easier if the interviewee has either basic Unix experience or power-user Windows experience; it’s definitely answerable with the single magic word “grep”. If the interviewee is so clueless that he can’t utter the word “grep” (or “find” or “I’d use a regex” or even “I know there’s a Java package that can do stuff like that, but I forget the name”) then he doesn’t get the job, duh. Remember, we’re not looking for a polished answer here; we’re just looking for the lack of complete and utter cluelessness.

“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.” — Exactly! That’s Steve’s point! The phone interview is designed to weed out unqualified applicants. If you can get the applicant to determine on his own that he’s unqualified, you’ve just saved a bunch of time for the both of you.

Chachaching’s comments just reinforce that if you find a candidate that refuses to prove that he can think, then you don’t want that either.

Also, threatening violence during an interview probably won’t land you in the “Please hire” check box on my interviews.

It should say in the summary section of your resume:

“I am a pompous asshole who can write business reports. I also can’t spell or use grammar to save my life, so please don’t ask me to do any of that. I also don’t do math, windows, or laundry.”

Heh - the phone number question is amusing, becuase the very best coders will probably answer it without having to write any actual code… just a short grep statement (or two) with a few parameters. The next best coders will do the exact same thing, but appear to be working for 2 days.

Stevey rip-off serach http://steve-yegge.blogspot.com/

I’ve just been through a lot of these technical interviews for .NET roles and in my experience I’ve not had any gruelling tests.

The general format of my (4-5) technical interviews has been:

  1. Some question where I have to demonstrate a knowledge of SQL to the degree that I know GROUP BY and HAVING. (SQL)
  2. What is polymorphism? (OO)
  3. What is the VIEWSTATE used for? (ASP.NET)
  4. Give me an idea on how you would connect to a db (ADO.NET)
  5. What is the StringBuilder class used for?
  6. What is reflection?
  7. Demonstrate a design pattern and how you have used it.

I’ve been disappointed that I’ve not been asked how I would go about solving any problems. It seems most companies would much rather know you have had experience using the tools.

This is definately a reasonable set of questions. I agree that some of the proposed questions are difficult (I don’t think I could get them all right) but the interviewer should be looking at the thought process, not the final answer. As Jeff says, if the interviewee is completely off, that should raise a red flag.

However, having said that, following the interviewee’s thought process on the phone is a difficult task that requires effort on both sides. I think the way to go is by proposing ideas and giving hints to get the ball rolling.

Funny this comes up. We just ran into a problem in our office were people had to be let go because of excelling in a phone interview yet having terrible skills on site. (Maybe they were effective interviewers or googlers?)

I think the phone interview is very valid, and most of these points are good, with one caveat: interview them again.

Grab them on Day 1 (or in the face-to-face) and ask them the exact same questions (or a subset). Make sure they’re still up to snuff.

Also, to those complaining about the questions, I don’t think you’d not get the job if you both tried to answer and were moderately proficient in at least one area. I’d probably be weakest at the scripting bit because I hate scripting languages, but I can offer up an attempt.

It’s not so much getting the answer exactly right as it is showing how you think and approach problem solving. I’ve worked in a few different shops that would rather have someone without a lot of knowledge but with strong problem solving skills. Granted, they’re more needed for junior-mid roles than architects, but for those out of college, having the ability to solve a problem is usually more valuable than having the answer to a question memorized. In my experience, anyway.

Jeff:

I’ve read your blog for awhile, and usually agree with your blog, but this post has me rolling my eyes. I have been programming for over 10 years with a focus on Microsoft Desktop and Web Based applications. I’ve done a good deal of contracting, so I’ve had exposure to a number of software teams and I’m usually one of the most productive programmers in the group. I say this because you might consider me a “one trick pony” in that I’ve focused mostly on VB.NET since 2002, with the exception of JavaScript for web projects. Before 2002 I was paid to write in VBScript (classic ASP), VBA (Access and Excel) and classic VB (mostly desktop apps).

With all that said, I wouldn’t get pass the phone interview for the following reasons:

  1. The last time I wrote in C++ (no experience in C or Java), was in college (mid 90s). I could certainly read and understand most C code, e.g. when I find samples in C# on the web I normally can translate back to VB.NET without an issue. It’s absurd that you would limit your pool to just C, C++ or Java languages.

  2. The Data Structure questions create the same trap. I can go into detail about the .NET data types that I’ve been using for the last 6 years, but I would fail at describing the differences between linked lists vs. a vectors, binary trees, etc. If the nature of the position you’re hiring for requires the programmer to code C++, C or Java, then it would make sense, but to ask a .NET programmer to speak in depth on these structures doesn’t accomplish much.

  3. I would be hard pressed to recite the details of Binary Arithmetic. The only time I spent with the subject was in a Computer Science class, I’ve never revisited the subject in the last 10 years of application development.

Your practical questions related to scripting with the RegEx question seems logical. And the higher level questions related to OO design, which would be language- neutral would also be a good test to weed unsuitable candidates.

I’ve been on both sides, having hired programmers as direct reports and having been “code tested” by hiring teams. You have a valid problem – weeding out incompetent programmers, but your solution of hiring similarly experienced individuals is an invalid solution.

The most effective software team needs a mix of talents. I’ll grant you that out of a group of a dozen programmers on a team, you need a few geeks that enjoy tweaking algorithms with Binary Arithmetic. But I’ve been in design discussions where hours are lost in debates about the efficiency of an array type, but the big picture was lost that the slight performance gain of either type was trivial.

I would add the following business solution questions to your OO and Scripting questions:
• A business requirement in the project you are working on requires a high level of secruity to secure sentive information that includes SSN, Credit Card and Medical Data that is stored on a public website. Outline and describe a solution that uses defense-in-depth and least privalage pratices that would most effectly would protect this information, focus on the software, not hardware issues to solve this issue.
• A business requirement is that an application interacts with, and displays information from a total of five online web servicse. The sources are not under the company control and the application design should accomindate for communication failures. How would you design a system that could meet these requirements?

The importance of these types of questions are two fold:
• You get a developer to reveal pratical experience, if any, in these subject mattters.
• You gain insight in their problem solving ablitiy, even if the applicant doesn’t have a partical experience in these areas

Half of the techniques in the article are useful, but the other half is very much counter productive. As another one with 20 years of experience in software business I agree somewhat with ChaChaChing that this technique will most likely get you a code monkey. All the projects that I mananged and led are successful because I put a great effort in interviewing and getting the right people.

The interview must match the nature of the project. If maths and science is important than the proposed coding and scripting test are useful otherwise they will screen off the best people. A Business nature project needs someone with good macro thinking and good business logic thinking but not someone with micro thinking and arithmatic logics.

Unfortunately we are not living in a perfect world, not many developers are good in both contexts. A good business developer is usually a very bad engineering developer and vice versa. So a generic test that tests on both skills will get you an average developer.

I read too many articles by self-aclaimed recrutment experts that have lost touch with the current generation and market. This is very much one of them.

It is now a rapid development and google generation. Hiring developers that like to write everything from scratch means you will miss your deadline. You need developers that knows how to find and reuse resources.

Also young developers are from so called Generation X. Best developers are tend to rebellous and like to “threatening people with a lead pipe”. As much as I hate the new generation, I need to adjust to manage them so I can get the best out of the skill pool. I think this article will get you mostly older developers. But to get the extra cutting edge in business, you do need to take some risk to add some of the young and fast in your team.

Applicant: High order bit you say? let me think about that…

sound of keyboard typing

Interviewer: are you typing?

Applicant: ehhhh no… why do you…

mouse clicks

Interviewer: Sounds like you’re clicking your mouse… Are you googling…?!

phone hangs up

just out of curiosity. whats the significance of 2^16?
Something related to excel? :slight_smile:

I’ve been through quite a few of these types of questions in the last 12 months. I’ve been interviewing with a lot of companies and have learned to enjoy the process. The thing is I’ve learned a lot in the process and the questions are usually very stimulating. If I wasn’t working a second job at the moment I would be out interviewing just for fun. I found the 2nd job looking for another job. The place wanted me so much that they let me work there nights and weekends. I enjoy the challenge and I like to learn what other companies are doing.

You may argue that I’m wasting a companies time. That isn’t true. If the right offer came around with the right type of work I would take it.

About the questions. These are all basic areas and you could easily study up on them for an interview. There are many websites that are geared towards brain teasers and programming problems to study up on. Furthermore, knowing the information explained above can be very helpful tools for a programmer. Especially regular expressions. Whether your a Linux or a MS programmer you can use them. I know in VS you can at least use regexp to find and/or replace.

Data structure knowledge is essential if you are going to write any type of program that has some sort of time speed constraint and it handles larger sets of data.

OO Progamming questions are important to make sure the developer understands the paradigm. This is a good place to weed out people that write spaghetti code. I also believe it is important that the programmer understands the terminology. In any type of team it is important to effectively communicate.

The Bits and Bytes area can come in handy more often then you think. It really doesn’t take that much to study up on this area plus it is useful for doing optimization.

Overall, I think the above topics are a strong indicator of a applicants skills. My understanding is in most interviews they aren’t expecting you to get everything exactly correct and know everything. They more want to know your skill level and how you approach problems(thought process).

gulzar,

2^16 is how many bytes of memory my first computer had, after I upgraded it. A bank officer made the first student loan of his career, equal to a year’s graduate stipend for me, to buy this computer. From a little-known company named Apple. Various friends learned to program on it…

To a computer, 2^16 is a nice round number.

Question: How do you look stuff up on google?
Answer: Er, hold on, let me type “how do you look stuff up on google” into google so I can find out - I never bother remembering how to do stuff.

Question: How do you solve a problem you haven’t seen before?
Answer: I look it up on google beause everything has been solved before.

Question: How much drugs would I need to do in order to hire you?
Answer: Um…

Yes, people, you know about google. And so do all the other people who’re experts in looking stuff up while they’re wondering why they can’t get good jobs.

Also, this is a perfect set of questions for recruiters. Any company that has 90% of their work in ASP.NET and yet reasds this and thinks that they have to ask coding questions using only “C, C++ or Java” is clearly dominated by morons we don’t want to work for. And anyone who claims 10 years of Java experience yet can’t code a trivial string manipulation function is clearly a liar, no matter how great their ability to use google to find code may be.

And anyone who hangs up the phone when asked to write a function to reverse a string because they think it means the employer actually makes their staff write their own string reversal functions in production code is so hopelessly retarded that they’re not worth hiring.

If nothing else, I don’t want to work with a primadona who’s so proud of their 20 years of experience that they’re offended at the idea that they have to demonstrate that they can do some basic coding tasks. Even if you’re all google-using geniuses, I can’t imagine wanting to be in the office next to most of the people complaining here.

…these points are…pointless depending on the state of your effort.

if you want to mount an expedition

  • you need an adventurer

if you want someone to lead the way

  • you need a leader

if you want someone to clear the path

  • you need someone with a machette

if you want someone to cart the luggage

  • you need someone with cartage abilities

only in the programming field have I seen idiotic retards asking the leader to cart the luggage, hack the machette AND mount the expedition
for next to nothing

every one of the fresh meats that I have worked with always think their way is the best way - why? - because they have
NO EXPERIENCE
and
mommy, daddy and the girl they just laid last week told them are the best.

comes back to the old saying

you can be a Jack of All Trades and a Master Of None but
you can’t be a Master of All Trades…

stick that in your pipe and smoke it

actually - I’d like to grab the lead pipe as well

2^16 is a reference to 16 bit OS or data structure.

someone grab bob and beat him over the head with the lead pipe.

he works in a cubicle next to us and is still looking for his god damn red stapler

hahahahahahaha

cha ching

let’s all lead pipe it

Thanks Dave. 2^16 = 65536.

Just reminded me that excel has a limit of 65536 rows. Was wondering if this was due to some internal limit.

Also, ^ can be confused with XOR syntax.