Channels ▼

Jack Woehr

Dr. Dobb's Bloggers

Hiring Coders

April 30, 2008

This item consists of random observations, tips, and anecdotes. It is not a system nor systematic. Just a some things to think about next time you interview a candidate for a coding job.

Human Resources or People?

"A lot of them were fired. You know, fired. Management wanted to curtail redundancies in the human resources area, so many people are no longer viable members of the workforce." - George Carlin

Human resources, uh, personnel, uh, people, do matter as individuals to the Director of Development, whether or not they matter to the Invisible Hand. At present there is:

  • no "automatic programming" at the top level.
  • no failsafe methodology for development.
  • no surefire curriculum for producing excellent developers.

Coding is still Art, and it's still performed by People. And they're Individually Unique People, albeit they share certain traits. I'm blogging today about identifying these individuals in a pack of candidates responding to your hiring campaign.

Teams vs. Unteams

We are talking here, in case it's not clear, about searches and candidates pertaining to forward-looking, well-managed development teams, not the cluttered unteams of poorly managed organizations populated by dead-end dullards who poke apathetically at perennially broken code without ever bettering the overall situation. Underachieving unteams should always hire individuals with low self esteem whom the Boss can browbeat and underpay. That way, nobody's spoiling the grade curve!

Skill Set

The grandest shibboleth in coder recruitment is the skill set questionnaire. The only interesting question which skill set questionnaires can be used to answer implicitly is, "Is the coder candidate engaged with our problem domain and the kinds of tools used in this problem domain?"

Any cross-connection is valid. Let's imagine that you are hiring for a web application running on Windows. Familiarity with coding web applications on Linux is enough to preliminarily qualify a candidate; so is any advanced Windows programming, especially Windows services. It almost never matters if the coder has actually written a web application on Windows.

To use an algorithmic illustration, when you are hiring, you're trying to do a pattern match between a gap in your project and the shape of the candidate. The pattern can match in a number of multiple dimensional orientations. The pattern may not match so well on the specific plane of the list of tools you are using. However, the pattern may match better in some other dimensional rotation. Searches are expensive, in HR as well as in algorithmic execution time. If you can rotate your perception and find a fit sooner rather than later, you have achieved economy.

Sometimes, for a very short time, tool expertise is critical to a team getting past an obstacle. Then the obstacle is gone and the team is rolling. In such crises, consider contractor or contract-to-hire tool experts.

Well-roundedness

How many programmers do you know who:

  • Play Chess?
  • Play a musical instrument?
  • Speak one or more foreign languages?

Clearly some of the same "brain muscles" are used in Chess, music and spoken language as are used in programming. All three deal with branching trees expressed in symbols.

Say you've got a candidate for a high-end development job with all the right skill set. The question on your mind is well-roundedness. Well-rounded individuals make better team members. Ask about miscellaneous intellectual interests outside programming to get a glimpse of well-roundedness.

Two from Column A, one from Column B

You need a mix of personalities and capabilities to make a good team. Hire more than one type. You're going to need "B" players as well as "A" players. There's nothing duller than a room full of geniuses. Besides, no-one will take out the breakroom trash.

Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.
 


Video