Deprecated: Function set_magic_quotes_runtime() is deprecated in /home/raedan/public_html/textpattern/lib/txplib_db.php on line 14
State of Flow: How not to get good people::journal

How not to get good people

Channing Walton - Monday March 27, 2006

A number of friends have been going to interviews lately and there is a common theme of exasperation with the so-called technical component of the interview. As a result, almost all turned down the jobs offered …

interviewer: can you tell me the 2’s compliment of 0000 0101?
interviewee: um … give me a moment … ( thinks: WTF? ) ... 1111 1011

interviewer: how do you detect cycles in a list?
interviewee: er … ( thinks: for pity sake, search on Google any one?? ) ... use two references blah blah blah

interviewer: what is the order of performance for Arrays.sort?
interviewee: probably n.log(n) ( thinks: and who the hell cares? ) but its performance has never been a problem for me

... increasing tedium

interviewer: can you describe the radix sort algorithm
interviewee: no, but I can describe how to solve stiff ordinary differential equations numerically using heterogeneous multiscale methods, which as you know, is a general framework for the numerical approximation of multiscale problems. ( thinks: can YOU do that? Goodbye, you lose ).

Although flippant, the last exchange illustrates my point. People’s experience in software (or any field) cannot be reduced to bit twiddling and sorting algorithms. When was the last time an enterprise system required developers to implement their own sorting algorithm?

So what is the purpose of that last question? To establish if the interviewee has just graduated 5 minutes ago and may have answered that question in final exams? Is it to establish if the interviewee has implemented that algorithm? But then why that one? Why not ask about numerical methods for solving equations? Is it any less valid? I really don’t get it.

The reality is that no one would ever code up either solution in 99.999% of projects, they would use libraries built for the purpose. Implementing well known algorithms is an indulgent waste of time and client’s money, there are many good libraries available to do it for you.

The result of questions like these, and questions about parameters of methods in a particularly obscure part of the Java 2D graphics library, or bizarre behaviour of version x.y.z of the BlingBang library is that the intelligent interviewee rejects the job.

These questions reflect on the interviewers level of thinking and raise alarm bells in the experienced candidate.

People I speak to are increasingly fed up with these nonsensical interview questions and companies are losing good people as a result.

So what should be asked?

Ask about design patterns, discuss problems and how the candidate would solve them. Does the candidate have a web presence? Read their blog, look at their code.

Here’s a radical idea: get them in for half a day and work through a simple problem. You’ll get a much better idea of their ability and be more confident that they will fit your team.

Ask bit-twiddling questions at your peril.


  1. Ashok    Thursday September 20, 2007

    True! I totally agree with this. I do always the same in all of my interviews in my company.

    Great post.

    Thanks,
    Ashok