How to Hire a Programmer

Not a fan of #5. It feels to me that you’re simply trying to get the candidate to do free work for you.

I’m also not a big fan of the “on the fly” testing. I can’t remember how every damn function works off the top of my head and some of the problems outlined in this article are things I have never run into (most likely because I’m a web developer rather than a software programmer) so I wouldn’t be able to answer them right away.

I’d rather just give a few examples (code and all) of what I’ve done and then talk with the recruiters to see if I would be a good fit. That’s how I landed my current job and it didn’t waste days of my or the company’s time jumping thru hoops with multiple rounds of interviews and crap.

“Why do programmers think asking if Oct 31 and Dec 25 are the same day is funny?”

How is this not a stupid interview question? It’s not obvious in context that “Oct” refers to octal and “Dec” to decimal.

@kasakka Read the article. He says that the audition project should be a regular contracting gig and paid on an hourly rate. Definitely not free work.

Scripting and regular expressions. “Give me a list of the text files in this directory that contain phone numbers in a specific format.”

Will I get bonus points for linking to the xkcd comic instead? http://xkcd.com/208/

“Design a representation to model HTML.”

LOL - have you seen the specification for HTML5?!

As mentioned by several commenters, not all good programmers have an online-visible portfolio, though the percentage seems to be growing. One thing I’ve found to be almost as good of a screen, that I tend towards at the phone screen level, is to ask them about a challenging project they’ve done and get them to talk about the tradeoffs that went into that project.

A good programmer will not only be able to explain the architecture of the project, but all of the things that were not ideal about it and that they’d like to have done better.

Great Article Jeff and couldn’t agree more. I’ve started four software companies the latest being RoundPegg.com, started just for the purpose of being more diligent about #3. Fit to company culture is one of the best predictors of success.

Context is all-important, and hiring for MegaCorp is vastly different to hiring for NextBigThing.

Interviewers can learn from the mistakes of others; don’t be that guy (inquisitor, invigilator, water torturer… http://cvmountain.com/2011/11/taxonomy-of-interviewing-characters/)

Your phone screen questions are crap. Do you know how often I use Regex? Almost never. I’ve got an open source project with a hundred tests for Regex if you’re that curious, but I almost never use it. Those questions are too in-the-weeds to ask without context.

Great article Jeff.

For people who are interested in this subject, I wrote a short blog post not that long ago about finding good talent that touches on many of the same issues from a slightly different perspective.

Check it out at http://machinegestalt.posterous.com/so-you-want-to-hire-good-programmers

“Why do programmers think asking if Oct 31 and Dec 25 are the same day is funny?”

Terrible interview question. Especially over the phone, where you wouldn’t get the visual hint. Unless you already know that “joke” there’s a good chance you wouldn’t find out the answer in that context. And that certainly doesn’t say anything about your programming skills.

I’ve always thought of the hiring process as a series of filters. Each step along the way (resume review, phone screen, programming quiz, interviews, group meeting, …) is useful at excluding candidates, but not at detecting whether they will be a good hire.

There is no test or process that can assure a person will be a good hire, short of actually hiring them. Along those lines, I’ve often hired people on a 3-month contractual basis to give me a chance to work with them and them a chance to see what the job is really like. It’s sort of like your auditioning practice but taken to a much further degree.

  1. Give them an audition project.

I like this plan, but if you try this make certain they get paid, state law here in Washington states you cannot have an employee work during an interview without them getting paid. Last thing you want is any state government having a talk with your managers… Then you may well be interviewing.

I assume any interview I go into is a sales pitch on my part and their part - do i want to work for them? They need to answer that question for me. As one of the gray beards I am too old to get into a crappy management structure. I’m getting picky in my old age.

eh…too much of a PITA to get a job with you Jeff :slight_smile: If a company needs that much time/info to decide, then I probably already got another offer somewhere else.

With an article like this you’re going to get the people who know the answers thinking it’s great and the people who don’t thinking it’s crap.

With that out of the way…

As others have said, the audition project step seems like it would only work if the candidate were self-employed or unemployed. I have a pretty busy life, and after leaving work for the day I don’t really have another eight hours I can put into a side project.

Similarly with the on-line portfolio. I have a few points on SO and EE, but I don’t have anything on GitHub as the software I do write on my own time is so specific to a problem I’m trying to solve that there’s really no benefit to sharing it.

However, I have consistently gotten outstanding reviews, commendations, and praise everywhere I’ve worked, so I like to think I’m a pretty darn good developer/engineer/architect who would be passed over because I don’t eat/drink/sleep software development every hour of my life.

One thing Joel Spolsky is well-known for is his expertise on hiring good programmers. I find it interesting that Jeff worked with Joel for 3+ years on Stack Overflow and the first posting he does after leaving that company is on how to hire good programmers.

Hey Jeff,

Very interesting topic you are raising here. However, I think it should come with a disclamer: “Works for really awesome workplace!” (Like Google, Facebook and other hot tech companies). It is very many hops to go over and as a potential employee, I should feel confident it is worth it. Too many places aren’t.

I do agree with commenters, that not everyone has an online portfolio. Partly because we we work on proprietary software and also due to the fact of having life besides coding.

Audition project - again, would work for very in-demand workplace, if you are not that sexy company, competent people will most likely not bother.

Cultural Fit - absolutely! Unfortunately, it is difficult to tease out during interview, as applicants are going to put their best foot forward. Perhaps only trial period can really show it.

Doing pitch - which position are you trying to fill?
It does not make much sense to me for a more junior one, with little administrative/managerial responsibility. Developers, who can pitch and do great presentations would command a hefty premium, because it is often way out of typical developer skillset.

It is better to hire a developer and teach him pitching/selling if it is that important, though I have yet to see it being necessary outside startup environment.

On the tangential note, I really liked Joel Spolsky’s take on hiring. You just need a person, who is a good cultural fit, smart and get things done. http://www.joelonsoftware.com/articles/GuerrillaInterviewing3.html

Oh god. Save me from the companies that think if you don’t participate in programming as a hobby you’re not worth hiring.

Do we expect surgeons to practice on their friends and family when home from the hospital? Do we expect lawyers to go file lawsuits for fun? Do we expect chemical engineers to go mad-scientist in their backyards?

You are self-selecting for those with extremely poor work-life balance. That may work for some. It is not a recipe for success across the board.

A live troubleshooting of a real world problem can work very well also. Hard to set up if your in a big business, but in smaller organizations it’s a very good test.

I don’t think there’s a single enterprise developer who could pass this process.