This is a planned follow-on to my first post on hiring. In my first post, I talked about the general process I like to go through when hiring a new programmer. Of course, you can bet that this is continually evolving based on what works and what doesn’t. So far, this is working very well.
When hiring, you obviously want to ask all kinds of questions, but I have to admit, I agree with a popular mantra that many speak about, including Joel Spolsky: “Smart people who get things done.” Smarts isn’t everything. Take me, for example. I know so many people who are smarter than me, hands down, but I make up for it with drive and persistence. 🙂 “Getting things done” isn’t everything either, because I’ve known my fair share of those people as well. Sure, the system works (now), but with the “smart” in there, it could be a big jumbled mess that’s a maintenance nightmare. I believe the two go together.
How the heck do I determine if the candidate is a good mix of the two? Ha ha. No easy answer there either. I have to use my own experience to weight everything the candidate has to offer. Some reference checks can help to determine the mix. Some phone screen questions can contribute as well. For me, I think the coding assignment can help determining the “smart” part. I’m not fond of assignments like “create a Roman number converter” because that mostly tests procedural programming skills. While there is value in that as well, I’ve preferred to ask them to do a little something with a technology that they have no experience in. I leave it open-ended. Using every available resource, this is downright easy for a smart person, and it should be because I need to respect their time. It has the potential, though, of saving an interview for a candidate we wouldn’t hire.
Getting things done: I think questions can bring this out. It seems like it almost a mentality of getting things done as opposed to talking about getting things done. Stories of past projects can help with this factor.
What else is pertinent in a candidate I’m looking for? Ignorance of something! What? Did I read that correctly? Yes. If there is something the candidate doesn’t know, he is human. If the candidate is so well-versed in everything, then he’s kidding himself. Very few people are like that, and they certainly don’t have to interview. Real people don’t know things. Real people are constantly learning. Someone who is slow to admit ignorance might be hard to work with. From personal experience, the more I learn the more I realize how much I have to learn. Does that scare anyone else but me? I hope so, but it’s real. Remember the teenager syndrome? Teenagers know everything! In fact, they know little, but are foolish enough to think they know everything. Wise folks reject this notion as time progresses. I’m impressed with someone who can talk about the things he doesn’t know. This shows me that he can recognize gaps in knowledge that need to be filled.
Continual learning is another biggie for me. Someone who is constantly learning impresses me. I ask what technical things the candidate is reading/studying. Answers that include books, magazines, etc are all good. Nowadays, podcasts are in that boat too. If a candidate struggles and finally comes up with an article they ran across “last week”, I get suspicious and follow up on the topic.
There are so many different techniques to find good people, and there is no way I can know them all, but I continue to learn. 🙂
[tags: hiring, technical, candidates, recruiting, interview, interviewing, managing, programmer]