Styles

Saturday, January 29, 2011

Hiring programmers in the age of search engines

From my observations in interviews, speaking with fellow programmers, and questions on LinkedIn, I've seen that most programmer interviews focus on technical skills.  For instance, an interview for a mid- to senior-level C# developer often consists of questions on technical issues such using delegates, architecture concepts such as object-oriented programming or placing logic in the business layer, simple SQL questions, and so forth.  These are all tools that are important to have.

But are they the tools that programmers need to succeed?

Here is my list of top six skills I'd want out of a senior-level programmer, in order of importance:
  1. Ability to understand the implications (business and technical) of making certain changes
  2. Ability to understand the business need behind a certain feature and be able to suggest technical alternatives to meet that need
  3. Good grasp of general programming best practices
  4. Ability to find appropriate solutions when a difficult problem arises
  5. Ability to pick up new technologies and ideas quickly (since technology changes quickly)
  6. Specific knowledge of the language/tool-set being used at that time
It's true that if you have no knowledge of programming best practices or of the specific quirks of a particular programming environment, being able to do any of the items on the list would be difficult.  But with so many blogs available (and easily searchable using your favorite search engine), it's difficult to justify hiring programmers solely based on their knowledge of the technology.  If a programmer has a good knowledge foundation, they can easily fill knowledge gaps by running a search query.  So specific in-depth knowledge no longer becomes the most important skill needed for a great number of programming jobs.

Yet this is exactly the approach that most hiring managers seem to take.  They try to gauge a candidate's technical skills, focusing on what I'd argue is the least important skill a programmer needs.  What's the alternative?  Start by listing the most important tasks that the programmer will perform.  Don't focus on just the technical skills.  Ask questions to gauge the candidate's abilities in this area.

For further details, you can read one of my previous blog posts about the subject.

No comments:

Post a Comment