Posted by: Suresh S | July 26, 2012

My experiences with technical interviews

Over the past few weeks, I have been actively taking a lot of technical interviews. The good side is that, I get to talk to lot of people, and there is a very healthy discussion about technical stuff. The bad side, it takes a lot of time to find a good candidate that fits the requirement.

From my personal experience, I have jotted down a few traits of good programmers, which has really been a common thing I observe in all the candidates who clear the interview.

I would broadly classify the candidates whom I have interviewed till date, into 3 categories.

  1. The how-to-do-and-why-to-do programmer
  2. The how-to-do programmer
  3. The others

My decision to pick a particular type of candidate, is purely driven by the job description and how the candidate’s skills matches it.

  • The how-to-do-and-why-to-do programmer

This type of programmers usually are the best of the breed. I would almost always end up giving them a thumbs when I interview such people. They always bring out a logical reasoning angle to every question I ask them. 

    • Sample this.. If you ask them, “Can you explain me why abstraction is important?“, they are most likely to give me examples which not only gives you a bookish definition, but always add their understanding of it. They go on to take examples from their past projects or real world examples and highlight the key points how utilizing the concept of abstraction helped them design/code a solution better.
    • They are always able to explain me the concepts very very clearly, in the most simplest terms. I carefully watch out for their communication skills when they answer me because, I firmly believe that if you cannot explain me something in simple terms, you just don’t understand it enough!
    • They ask a lot of clarifications when you ask them vague questions. If they have to make assumptions they let you know about it.
    • When thrown with open ended questions which have lots of alternative solutions, they almost always present the pros and cons of each approach. Very rarely have I found a programmer of this type
    • They are open about things which they don’t know and don’t beat around the bush too much.
    • They are passionate about their work and eager to share with you on what they have done in the past.
    • They are open to admitting the mistakes or bad decisions they have taken while working on a project before. They are almost always candid in their opinions.
    • Last but not the least, they not only know how a thing works, but almost always know the why part of it. This by far, has been the most impressive aspect of it.
  • The how-to-do programmer

This type of programmers are usually the ones who have got a lot of “hands-on” experience but for some reason have never bothered to or not had enough zeal to dig into the why aspects of the programming.

    • They know how to configure things in a framework and how to use an API.
    • They know how to use xyz tool.
    • They know the text book definitions of almost all concepts.
    • But the one thing that I have always seen in them is the lack of effort they have shown in understanding the why part of things. I understand that there is a practical limitation on how much one can dig into why aspects of it. But they usually don’t seem to go any deeper than shallow definitions.
    • They are pretty good at taking directions and executing them. They are do-ers.
    • They are enthusiastic and work well when given a clear definition of what is to be done.
  • The others

This is the third category of programmers who usually don’t answer questions to the point and simply beat around the bush. The biggest problem I see with this lot, is their own inability to assess their levels of proficiency in things. They almost always assess themselves higher than they actually perform.

    • They don’t know about their concepts.
    • Their answers are shallow.
    • They show lack of inquisitiveness to learn.
    • They usually avoid getting into specifics as you dig deep into the concepts.
    • They wait for your inputs when asked with a vague question. They don’t ask for clarifications.

Now having known the types, which one would you prefer to hire or take into your project?

I would say, I prefer both type1 and type2 because you actually need both of them. Here’s why…

  • You need type1 people in a project because they always have the big picture. These are the people who looks for design violations, coding violations and any discrepancies in the implementation. They are just like any other team members but they care of your project and have a good overall understanding of how things work and why. They can think on their own feet and almost work independently in the team with very little to no guidance or supervision.
  • You need type2 people in a project because are the doers. Though they may not come up to you and suggest hey why don’t we do this instead of this, and so on, they are pretty good at taking instructions and executing them. I believe they can be trained over a period of time and they have the potential to move to type1.

I would strictly refrain from hiring  type3 candidates because they not only lack technical skills but also lack an zeal or enthusiasm to learn. They almost always end up being a pain, if you happen to hire them. They show lack of ownership of things assigned to them. So I would rather not be taking them into them system than having to deal with them later.

P.S. Please feel free to share your thoughts on this subject. I think the process of interviewing is interesting and it gives a good opportunity to know more about people and technology.

Advertisements

Responses

  1. Wow! Technical interviews were always a weak point for me. I’m not a programmer but still… I’ve given a few of those in my life! 😀

    • Ha ha.. Sure.. It can be daunting task 🙂


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Categories

%d bloggers like this: