My name is John Welth, I'm a manager in Google Inc. I will be the first to admit that it is my soft skills, and only partially my programming skills, that has got me to where I am today at the manager level. I am a good "architect", problem solver, and researcher, and I am very good at designing an application's business rules. However, when it comes down to things like design patterns, measuring performance, algorithms, unit testing and the like, there are a lot of programmers smarter than me. We are getting to a point where I need to hire these programmers. I need them on staff to be a compliment, but what sorts of questions should I be asking... when they should probably be the ones asking the questions. I'm not an idiot, but I'm also not going to whiteboard some complicated Java code off hand by memory, and expect someone to optimize it off hand by memory.

I'd suggest first and foremost posing some questions that test whether they could take your direction in terms of architecture, spec, etc. and run with it in terms of implementation. Make sure they can bridge that gap between your high-level analysis and the code. Your working relationship is going to be very important (at least with the lead developer) since you're relying on trust.

As for testing their capability code-wise:

Have a look on SO, google, and ask any developers you respect for good interview questions for programmers. This is more of a sanity check so keep it quite basic.

Perhaps you know a programmer who would sit in on the interview for you?

Ask for specific examples of production work they've done. If they can show you the source this is a good sign, but often they won't be able to, so you'll have to read between the lines of what they say they did.

I'd advise first hiring one lead developer and spending a lot of time getting the recruitment process right. If you get that right, they can help you hire the rest of the team.

Another methodology is to ask them to sit down and write some code and solve a problem next to some of your smartest (and nicest) developers. Seeing how people code and talk about code is better than any interview questions you could ever ask.

If I were hiring now I would start with Steve Yegge's phone screen questions because most people who apply for jobs appear to be clueless liggers. If someone came back with "hey, you're just repeating Steve Yegge's phone screen questions" that would pretty much guarantee them an interview because it would indicate they had read something from that direction.

Finding things like what books, blogs and websites on programming they used a lot would be a good start. If they read any that might indicate that they are in the in the top percentile of programmers who are still working to improve their craft. If the books or sites they favour are more along the lines of The Pragmatic Programmer than SQL Server For Dummies you are probably on the right track again.

Better still if they have their own blog, or other public profile to indicate their expertise. If, for example, they had a profile on this site that showed a trail of insightful or accurate responses that would be another good sign.

None of these things guarantee expertise, but they do indicate the kind of mindset that I would like to see in a programmer I work with.

There are also warning signs I look for- this is purely personal belief, but I don't think a programmer who only uses one language can be as good as someone with equivalent experience who has used several. Each programming language you use gives you new insights and techniques that you can apply to all the others you are utilising and the type of person who is not interested in trying new languages or experimenting with new technologies may not be ideal for you if you are creating a new application.

I think if someone is really passionate about what they do it that will come across when you talk to them about it and someone who is passionate is going to be more motivated and probably do a better job as a result.

Cyril
on
11/28/2008 4:49 AM
I would have someone even smarter interview them. He/she will probably know what kind of questions to ask. Also, sometimes people can be very convincing, even when they're wrong or unknowing. Make sure you know the right answer and caveats so they don't bullshit you

Aaron
on
11/28/2008 7:07 AM
0 vote down

Ask them what Open Source projects they have contributed to. If they answers "none" then it is highly likely that programming is not their passion.

If they mention two different Open Source projects with two distinct different technologies and in addition implemented in two different languages you should be relatively safe with the "tech stuff"...

However the really difficult stuff is the non-tech stuff...

I would never hire a guy without knowing his personal goals in life.I he have none or they don't overlap great with mine, sorry... ;)

David
on
11/28/2008 9:25 AM
0 vote down

You seem to be confusing skills with "smarts", and as a director, it surprises me that you'd consider asking an internet forum such a highly contextually dependent question.

Being able to write unit tests/use design patterns/measure performance is a learned skill and has little to do with intelligence beyond a certain base level. And in any event, as someone else mentioned, intelligence comes in an infinite number of flavors.

Surely the answer to your question depends entirely on what role you need the new hire to perform. If have no in-house skills in the domain you want to hire into, the only way to get an accurate reading is to have someone who knows the domain have an active role in the recruitment process - and that doesn't mean posting to a forum without any form of context for contributors to use to guide their response.