What I look for when I hire

I recently wrote this in an e-mail to an ex-colleague who was looking for advice on hiring:

Here’s what I look for when I hire:

#1: I worked with them before and I know them to be great
#2: Someone I trust (who is a #1 for me) says they are a #1 for them (worked with them and says they are great).

After that, it’s been luck — I’ve actually been thinking about this a lot lately — getting a little better

Here’s what I look for:

  1. They must program on the interview — I don’t care which language, but I want to see something.
  2. I want to see evidence that they have set and met long-term goals — ones that take perseverance — not just ones that are what they are paid to do for work, but something that augments that (or even something unrelated). So, leading and completing a big work project is not what I am looking for, exactly, because you don’t have a choice to do or finish them, and there are rewards all along the way (your paycheck)
  3. Along those lines — self-improvement — learns about new tech, languages, etc. Tries to build things on their own.
  4. Community involvement — could be twitter, a blog, going to dev groups or even stuff totally unrelated to tech (volunteering, etc) — if not, it’s nice if they have broader interests (music, art, etc). There are a lot of user-generated content outlets out there (StackOverflow, CodeProject, GitHub, FooCamps etc. — do they contribute to any of them)
  5. Some evidence that they read our company’s website, the blogs of our employees, twitter feeds, etc. I can’t understand why people don’t prepare for interviews — but I take it to mean that they don’t prepare for anything.
  6. Must be able to write — I want a nice cover letter that is a convincing argument for why I should hire them.
  7. Some evidence that they care about their work and are self-critical
  8. They must be experts in something — I don’t care what it is, but whatever it is that they are doing, they must know it deeply. If they have been web-programmers for 5 years, I should be able to ask any question I want to about HTTP life-cycle, JavaScript debugging, etc. They can’t have total blanks on the core stuff they are supposed to know.
  9. For very entry-level, I teach them something simple in one context, and then later ask questions where they need to apply that knowledge.
  10. They must explain things to me that I don’t know, and I have to be able to understand it.
  11. I’m looking for go-getters — so, I like people that reach out to me (I am easy to find) — that follow up after interviews — do more than what is expected in the interview process.