One of the most difficult decisions I make in my job is deciding on hiring a candidate. Make the decision well, and the team will grow with a productive team member and everybody's happy. Make a bad decision, and I'm in for a potentially long, difficult and distracting track.
There are many things I look for in a candidate, but for software engineers programming skills are obviously key. Over the years I've had good luck and bad luck when hiring new people, but I quickly learned that doing a good job interview is a lot harder than it looks. Now, years later, I feel competent, but finding a good candidate still requires a lot of attention and energy.
I always incorporate a little bit of coding during interviews, even during the phone interview. No matter how senior the job and no matter how many years of experience a candidate has, I'll always do it. It's amazing how a simple programming assignment can give you insight in how people think and write code. It's even more amazing that lots of candidates don't even pass a basic coding question. One of my favorite questions is this:
Given an array of integers, write a method that will return the largest number (the maximum value) in the array. The integers are: 4, 6, 2, 4, 11, 5, 3.
Yes, this is a real simple question, and yes, it has a real simple solution. I always make sure I carefully explain the problem, clearly state the assignment and ask the candidate if they understand my question. They can code it in Java or C or in the rare case that they know neither any other language. And yet, lots of them fail!
Clearly, this is only a first check. Beyond the first phone conversation and the simple coding questions there's a whole layer of other questions and coding assignments, but as a quick screening tool questions like this are hard to beat. If you're interviewing for technical positions, I strongly recommend you always incorporate such a quick test for basic coding skills.
Interviewing is hard, and it's an art I'm always working to improve. A book that helped me early on, and gave me a better understanding of the theoretical and practical aspects of interviewing is Hiring the Best by Martin Yate. I still occasionally re-read parts of it and I highly recommend it to anyone who wants to improve his or her recruiting and interviewing skills.
(If you're in the market right now and are interviewing at my company soon: bonus points for reading my blog and mentioning it during the interview. Another thing I look for in a candidate is a genuine interest in the company and team that you may work with for the next years of your life).