Site News for 9/16/07 through 9/22/07How To Update Controls Using BackgroundWorker in VB.NET

7 Ways To Hire Smarter Programmers

September 23rd, 2007

OK smart guy, why are septic tank covers square?When you’re in a team lead or management role you will inevitably be called upon to do a job interview. Even if you are a team member you might interview a potential peer. So, once you’ve given them your programming language trivia quiz, asked them why manhole covers are round and had them to tell you a little bit about themselves what should you look for in the job candidate in order to hire the best candidate possible? What should you look for ‘between the lines’? And what should you avoid doing?

1. Look For Intelligence

This, of course, is the point of your programming language quiz and brain teasers. Do they know their stuff? It seems pretty straight forward, doesn’t it? Just pass or fail, right? However, you have to look beyond just what might be rote memorization. Do they seem like they’re just reciting answers to you? If you follow up with a “Why?”, can they launch into a detailed explanation or do they give you a ‘deer in the headlights’ look? Remember, you’re not looking for someone who can memorize a lot of stuff but someone who can also apply this knowledge in a meaningful way.

2. Look For Compatibility

How well do you click personally with the candidate? Do they seem able to get along with the people they’re interviewing with? Is this someone you can work with on a daily basis? Are they a know-it-all or champion BS’er? Do they seem overly nervous or reserved? Do they seem aloof or disengaged or are they involved and engaged in the interview and with the interviewers? Do you think this candidate helps you think and does it seem that you make them think? How do they make you feel? Comfortable or uneasy?

Ultimately, a programmer might be quite smart but if they don’t mesh will with the group this will reduce their ability to perform at the top of their game. Just beware of being too selective in this area or trying to find someone who’s exactly like you.

3. Look For Problem Solving Ability

If you ask them an open ended question, how do they seek more information from you? Do they just make assumptions or is there give and take between you? Are they willing to ask for or accept help or are they too arrogant or unsure to ask? Do they seem confident or confused?

Once they’ve solved the problem or stated they can’t solve it, ask them about the mental process they used to solve, or try to solve, the problem. Note, them saying, “I didn’t even know where to begin” or “I just guessed” is a bad sign while them giving you a rough outline, even if it isn’t completely right, is usually good.

This is where you examine how they apply their intelligence and use it to interact with others, a combination of the first two items on our list. Hopefully you will gain some insight into their internal problem solving process.

4. Look For Creativity

Often you’ll find programmers who lack creativity. You can give them a detailed spec and they can code it quickly but if you give them something fuzzy or incomplete where they have to fill in the blanks, they can’t do it. Or, if you give them a user interface assignment, it is very dull and takes a brute force approach rather than an elegant one. Do you need creativity in your position? Maybe not. However many organizations do need it.

So how do you gauge creativity?

One way is to ask them about outside activities. Some of the best programmers I’ve known have had outside creative interests like music, painting, or furniture making. While this isn’t a 100% solid indicator of creative programming ability it is a good sign in my book.

Also look how they draw out their thoughts on a white board or piece of paper in response to a puzzle or a design question. Do you get the feeling that they’re painting-by-numbers or are they capable of developing a masterpiece?

5. Look For Passion

Does the candidate have a passion for programming and computers? How can you determine this?

One way is to ask about the most recent programming books they’ve read. Another is to ask about which web sites they use to learn about the latest industry trends. Where do they go for help in solving problems. Do they participate in online programming forums? Do they have a programming related blog or web site?

Ask them about their home computing setup. A passionate programmer is likely to have quite a home network setup and will be able to describe it to you. However, a not so passionate one might tell you they’re still using their college PC from 10 years ago and that they only boot it up occasionally.

6. Look For Diversity

You don’t want a clone army in your organization. If every programmer is from the same school and has roughly the same background you’ll end up with a case of groupthink that will limit the overall brainpower of your group.

If you’re were a heavy duty computer science major, don’t be afraid to hire that sociology major who has a knack and passion for programming. If you went to a highly rated technical university don’t summarily dismiss the ability of a night school grad. Likewise, if you’re the sociology grad, don’t allow yourself to be intimidated by the CS major.

Don’t get hung up on finding a candidate that has extensive knowledge already in your specific field. A smart programmer should be capable of applying knowledge from one field to another. In fact, they may be able to offer a different insight from their experience in another industry.

Everyone has different perspectives and can learn from someone else. Don’t let your hiring practices cause your team to become inbred.

7. Look Past Stereotypes

Many programming job want ads ought to read like this if they were truly honest:

Wanted: Senior Level Expert In VB.NET

  • 6+ years of increasingly responsible professional experience
  • A minimum of 4 years of working with VB.NET
  • Database experience in SQL Server 2000/2005
  • Successful candidate must be a healthy Caucasian, Asian, or Indian male of between the ages of 25-35. No women, people over 35, people with disabilities or those of other ethnic groups or racial minorities need apply.
  • Hopefully you don’t think and hire this way. Sadly I’ve known many organizations that do behave this way to some degree. While such discrimination is illegal, at least in the US, many use clever HR approved code phrases to not hire or even interview people who don’t fit within a narrow stereotype of what some think a programmer should be. Narrowing your choices by allowing yourself such prejudice will cause you to cut yourself out of a pool of potential talent and often lead to hiring someone less skilled, less smart. Don’t let this kind of thinking poison your ability hire the best people.

    I hope you’ve found this article helpful. Let me know what you think by leaving me a comment.

    Share This Article: These icons link to social bookmarking sites where readers can share and discover new web pages.
    • Digg
    • Reddit
    • StumbleUpon
    • Technorati
    • DotNetKicks
    • DZone

    Entry Filed under: Development Teams

    Rate This Article:

    Not That GoodCould Be BetterOKGoodGreat (1 votes, average: 5 out of 5)
    Loading ... Loading ...

    10 Comments Add your own

    • 1. Mr eel  |  September 24th, 2007 at 6:47 am

      I would add a few more, but this time from the perspective of a potential hire:

      Sell the qualities of the company. A job interview is also an opportunity for an applicant to check out a business. I’ve always been struck by how many employers automatically assume you are desperate to work for them and make no effort to convince you why you should want to.

      Don’t bullshit about salary, and actually pay people what they’re worth. ‘Cheap’ employers have trouble holding onto staff and you would certainly have trouble getting good developers if you can’t pay them properly.

      DON’T TREAT AN ADVERTISEMENT AS A SHOPPING LIST. Having an employer list every skill under the sun is a sure sign they’re cheap and are hoping to get one person where they should be hiring multiple. Define the job as narrowly as possible.

      Have a clear procedure to be used during an interview. A business looks pretty amateurish if they can’t structure a job interview properly.

    • 2. jfrankcarr  |  September 24th, 2007 at 8:49 am

      Thanks Mr. eel

      I agree with your points.

      The assumption that you’re desperate to work for them is common these days, unlike during the dotcom boom when potential employees were calling the shots. While things have evened out some now since the bust years, many employers do still act this way. The salary thing kind of plays into this as well.

      The “shopping list”, yes, that’s a problem too. One of my pet peaves is to see someone asking for things like 10 years of .NET experience or 5 years of Ruby experience. It’s obvious that the person who put together the ad didn’t have a clue.

      In my article I’m assuming that an organization already has the basics of interviewing down. If interviewers are unprepared or if job candidates are left cooling their heels in a conference room for 5+ minutes then getting back to the basics is called for before hiring anyone new.

    • 3. Rodney  |  September 24th, 2007 at 10:46 am

      The last bullet in Number 7 is so awesome. As an African-American, this is something that I face when interviewing for various jobs and while I can never blatantly accuse a company of discrimination, it is always amazing to see the interviewers response when they first meet me.

      My most valuable response has been to be myself and answer their questions with substantiated, well reasoned discussions based on my past experiences.

      Once again, thank you for including this in your entry.

    • 4. jfrankcarr  |  September 24th, 2007 at 10:58 am

      Chaucerian posted this comment in the DZone comments and I thought it was worth responding to:

      Sorry, but this is a load of wank. An interview situation is the most unnatural situation you can create - and the people doing the interviews will ALWAYS want to appear smarter and better than the person being interviewed, to the point (sometimes) where no matter what they ask a candidate there will never be a satisfactory answer.

      Interviews are not meant to be comfortable, however - interviewees, suck it up and hope the people in the room are not complete nob-ends - interviewers, get over yourselves, chances are the guy in front of you is at least as smart as you and look for someone’s potential and cultural fit above all. If they don’t have the experience and skill set at this stage then it’s your fault for not doing better filtering beforehand. Oh, and how about actually *reading* the f__king resume before you show up?

      I agree that interviews are a rough experience for almost everyone. It sounds like you’ve had some bad interviews. I have had some awful ones too between know-it-alls, ill-prepared interviewers, and ageism. That was one of the inspirations for this article.

      As for filtering out candidates beforehand, this can be tricky. When I’ve been on the interviewer side I’ve seen a few “paper tigers”. Resumes can be unreliable because a good candidate might not be a good resume writer while a poor one might have one that is embelished or professionally written for them. Not to mention the often inaccurate ones provided by recruiting firms. I prefer doing a phone interview first that’s mostly skills oriented before bringing them in for a face-to-face. I’ve found this worked well for screening out those who don’t have the skills.

    • 5. jfrankcarr  |  September 24th, 2007 at 11:21 am

      Thanks Rodney

      Sadly, I’ve seen prejudice of various sorts raise it’s ugly head a number of times in the 20 years or so I’ve been working in this industry. I just hope by pointing it out enough that people who’re in charge of hiring will avoid allowing themselves to think this way.

    • 6. Nicolas Birth  |  September 25th, 2007 at 2:07 pm

      Reverse an string first iteratively and then recursively.

      Can’t do it?


      If they can’t do what you are supposed to learn in freshman year, never mind hiring incompetent people.

      Also, do they do unit testing? Do they do functional testing (for example using Selenium?)???

      Let them explain why it is important to remove duplicated code.

      Also ask them why protoypes are important.

      Ask them about UML.

      If they fail one of them, do not hire.

    • 7. jfrankcarr  |  September 25th, 2007 at 2:57 pm

      Thanks Nicolas

      That’s really my step 1, looking for intelligence. The problem is, as I mentioned, that a lot of the basic answers and algorithms can be memorized. Sometimes it helps to throw in a twist, like only reverse the last half of the string. I’ve also found asking open ended questions like “How did you apply UML in your most recent project?” to work well.

    • 8. phloid domino  |  September 26th, 2007 at 2:45 pm

      I have hired programmers. I have been hired as a programmer. The first time I was on the hiring side of the table,it seemed to be quite different.

      But that changed over time, as I came to see that the same dynamic is at work: people are trying to assess each other and get a feel for a match.

      And it is a ‘feel’. In the end, you can ask or answer detailed technical questions, or any kind of questions, but usually one can feel whether things click on enough levels to go forward.

      That being said, it is good to some techncial probing. As a candidate, I always welcome a good grilling. It shows me something about who I might be working for and with. As an interviewer, it gives me a sense of how the candiate thinks and expresses themself.

      But rarely should a single question be definitive. How many times have we all seen comments like “if they can’t write a stack or linked list (or reverse a string), they’re no good”? Fact is, I wrote plenty of the above over the years, and am so glad that in today’s world, I don’t have to. The correct answer, in my view, is something like: “use a List (or Stack, or whatever) class; let’s move on to what is it for”.

      In the end it’s always a gamble. You can usually tell when someone just isn’t right for the job or organization, but there’s no guarantee that the person hired will work out. Be careful, do some due dilligence, go with your gut and cross your fingers!

    • 9. jfrankcarr  |  September 26th, 2007 at 3:10 pm

      Thanks for your input phloid domino

      I agree that it’s more a matter of knowing what to do with a particular structure or class. That’s why I’d prefer to ask someone to describe a situation where they would use a stack rather than asking them to reinvent the wheel for me.

    • 10. graffic  |  May 18th, 2009 at 2:48 pm

      @phloid: I’m glad too about not having to write stacks, queues, lists. And also use extensions like Linq to handle complex structures.

      But is also true that data structures are a simplified way to work with certain type of data. Many times you find them hidden in XML documents or file structures.

      Lacking the basic understanding of the node as an abstract entity. Or the idea of reference. Will you hire someone with doubts about what is a reference and/or with problems to abstract an entity?

      I do know the “list” guys. This people that fix everything with array’s, lists and for (or foreach) loops. From time to time they put an if in huge amounts of code. And they call that solution.

      Btw, I’ve answered to the “reverse the linked list” question with: go an use a stack, (next question). I was hired the next week.

      Is not only to solve the problem. Is how to react. If the candidate is able to come up with a nice idea… or he cries for a List with Add and Remove.

      Also how the candidate tries to build the solution. Does he start to write code directly? does he first organize his ideas? does he try some basic test cases on his algorithm?

      And of course, the conversation later. Does it work? what did he forget? are all cases working?

      When you have to tell a candidate step by step what he has to do. He doesn’t organize his ideas, he doesn’t prepare test cases. He starts writing directly without thinking. And then he asks why he cannot use a List object… All yours :)

      If the question is too stupid for you, just blow it up with a smart answer.

    Leave a Comment


    Required, hidden

    Some HTML allowed:
    <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

    Trackback this post  |  Subscribe to the comments via RSS Feed

    Visit Me At My New Site, Programming In C#

    Most Popular Articles

    Highest Rated Articles


    Most Recent Articles


     Subscribe in a reader

    To subscribe by e-mail
    Enter your address here

    Delivered by FeedBurner

    VB Opportunities