Thursday, October 18, 2007

How to ask a senior programmer to reverse a string

I don't ask candidates to program when I interview. Maybe I should, this certainly seems to be popular opinion, and is one point in the Joel Test. Generally I find questions of this nature are either way too easy (how reverse a string) or take way to long (any real programming). If you are interviewing for a senior level position, how can you ask someone to reverse a string (or print Fibonacci numbers or any other trivial problem) and do it with a straight face? I would be insulted if someone asked me, and would have serious doubts about my future coworkers and boss. Do I really want to work for a company that at first acts impressed by my background and then proceeds to test me on this?

I have been lucky, and have never hired a candidate who cannot code. But thinking back to some of the dumber answers I have had to the questions I did ask, I think asking for basic coding is justified.

So I thought a lot about this, and think I have the solution. Tell the candidate they are being timed. How fast a programmer can type a function to reverse a string is not important, and the candidate knows this and may still think you are weird. But generally, technical people enjoy technical challenges, and this will override any negative reaction in their brains. After all, most companies hiring at my level make decisions based on how many years I've used C#, and I would much rather be hired based on how fast I can type a simple program.

How long they actually take is unimportant - this is just a better way of asking them to prove they can actually program. It is important this timing trick should only be used to avoid insulting senior programmers who should be able to solve these programs in seconds - asking a shy candidate for an intern position to be timed could easily scare the better candidates away.