Hire A Developer, Not An Acronym

June 13, 2008

Yesterday I told the story of hiring a Django developer:

Python is really easy to learn, and regardless of what you hear, the significant whitespace makes code enjoyable to read. How easy? I hired someone who had never used Python or Django, and they wrote the Chesspark forum in about a week.

One person commented at Reddit that this was funny, and I’m sure several people read it and thought the same thing. Usually people place job ads that read “Senior PHP Developer” or “Django Developer Wanted”, and here I am hiring someone who has never even used the tools I need him to work with.

I think this idea of hiring someone based on the tools they already know is the wrong way to hire programmers. You want to hire a smart developer; why do you care if they do or don’t know PHP or Django? The specific tools used are often a product of circumstance, and do not represent the skills required.

Why Specific Skills And Languages Don’t Matter

Any good programmer is going to be able to pick up a new tool, and in fact, they will probably enjoy it. When I’m hiring new people, I want people who are naturally curious and self-motivated, exactly the kinds of people that will find the right solution to a problem. I look for people with experience in a variety of languages and who understand that programming is not merely knowing specific incantations.

It’s certainly true that I am often hiring with knowledge of the toolset ahead of time. At Chesspark, we use Django, Python, Twisted, XMPP and JavaScript quite heavily. The candidate needs to be interested in working with these tools, but I don’t generally care if they have already had a lot of experience with them. Their experiences with other tools will bring interesting perspective to our specific problems, and hiring only people familiar with a specific language is a good way to lock yourself into a monoculture.

This applies to new hackers as well as experienced ones. In fact, it’s even better applied with the inexperienced. What better way to learn if someone is going to be creative and curious than to expose them to a bunch of new ideas and watch what they do with them.

Programming languages aren’t that hard to learn for smart developers. It’s pretty easy for them to figure out how to apply their skills from one language into another, and along they way, they will pick up new skills. Do you really want someone who isn’t smart enough to learn PHP coming from another language?

An Example

I’ve already talked about one successful example of hiring someone who did not already know the tools. This is how I’ve always approached hiring, however, and the results have been fantastic. When I was CTO of Greenwitch Internet Radio, we hired several people who were not PHP or Perl coders previously. None of them had any trouble learning and becoming huge assets to our team.

After all, we have problems at Chesspark that do not have easy solutions and all startups face problems that are novel. Whoever is hired has to learn these things anyway, and in picking up a new language or framework is trivial in comparison.

Here’s an example of the normal way.

I've learned a few things from the search we've been doing over the past several months:
  1. What we really want is a senior developer, versed in PHP

The problem here is that the premise is only half right. At least they got from “senior PHP developer” to “senior developer, versed in PHP”. But why does it matter? PHP is an easy language to grasp. I think if they would have looked for a senior developer full stop, they would have had much more success. For starters, they would have broadened their search to include the Python people:

We might just as well use Python, eh? Sure, the market for Python developers doesn't look very big on the face of things, but there are a few things working in our favor here:

I’m sure many of those Python developers would be more than capable of learning PHP, and they might even bring some new skills to the table that will make a PHP application better. Whether they want to program in PHP is another story, but why shut the door on them before asking?

Switching your job ad from “Senior PHP Developer” to “Senior Python Developer” might have better results, but they will probably be superficial or temporary. Python isn’t as popular as PHP, but the community is full of very smart individuals. Paul Graham touched on this in the Python Paradox. Soon, Python may be popular enough that this difference no longer matters. Why limit yourself to one language or framework? Instead, go after the programmer you really want from the broad pool of all available programmers.

A Parallel To Education

Many startups have dropped the traditional requirement of a college degree during the hiring process. While there is certainly value to a college degree, it is not a necessary requirement for a skilled developer. If you can find someone that will be an excellent fit for your company, why would you care whether or not they have a piece of paper. It certainly doesn’t tell you much about what kind of programmer they are.

With that in mind, I think it’s time to start treating languages and frameworks the way we used to treat academic credentials. Recruit from as broad a pool as possible, and hire the smartest people you can find. If the right candidate happens to have experience in your particular domain, that’s a bonus.

:EXTENDED:

Hire A Developer, Not An Acronym - June 13, 2008 - Jack Moffitt