Aaron Schwartz: How I Hire Programmers

image About the Author: Aaron Schwartz is an American Internet activist, programmer, writer, hacktivist. Died for freedom of information.



  • At the age of 12, he created the Info site, where everyone could write about what they know (and others could add and comment). It was the forerunner of Wikipedia.
  • At the age of 14, Schwartz co-authored the RSS 1.0 specification.
  • Aaron Schwartz worked under the leadership of Tim Berners-Lee on the core RDF working group at the W3C.
  • I got on the first program at Y Combinator with a startup Infogami, which later merged with the popular site Reddit.
  • Worked on Open Library and Creative Commons
  • Made significant contributions to Markdown.


2009 Post

When you hire a programmer (or anyone, for that matter), you are faced with three questions. Is he smart? Can you do what you need to do? Can you work with him? Someone who is smart but unable to complete a task may be your friend, but not a worker. You can discuss your problems with him, while he will delay doing important work. Anyone who is capable of completing tasks, but is not clever, is ineffective: unwise people do the work in a laborious way, work with them is slow and full of frustrations. Well, with someone you cannot work with, you simply cannot work.



The usual procedure for hiring a programmer consists of a) reading a resume, b) asking some tough questions over the phone, and c) giving them a programming problem in person. I think this kind of hiring system is terrible. There is very little to learn from a resume, and difficult questions during interviews make people very nervous. Programming is not a job done under pressure, so watching people who are nervous is pretty pointless. And interview questions are usually chosen according to the principle "the harder the better." I think I’m a passable programmer, but I’ve never done an interview like this, and I doubt I could do it at all.



So when I hire someone, I just try to answer the three questions above. To find out if a person is capable of doing the right things, I simply ask what they have already done. If a person is really capable of doing work, by this time he should have done something. It is difficult to be a good programmer without some work experience, and now anyone can gain experience by taking part in some kind of project to create a free program. So I just ask the person for sample code and a working program and see if it looks good. So you can really learn a lot, because you do not watch how he answers a contrived question during an interview - you look at the code that he actually gives out.Is it concise? understandable? elegant? practical? Would you like to have something like this in your project?



To find out if a person is smart, I just have an informal conversation with him. I try to do everything to relieve any tension - I make an appointment in a cafe, explain that this is not an interview, I do everything to be informal and friendly. Under no circumstances do I ask him standard interview questions - I just chat with him like I would chat with someone at a party. (If at parties you ask people to name their strengths and weaknesses, or figure out the number of piano tuners in Chicago, you're in big trouble.) I think it's pretty easy to find out if a person is smart in casual conversation. I am constantly evaluating the intelligence of the people I meet, just as I am constantly evaluating their attractiveness.



But if I had to write down the signs of why someone seems smart to me, I would emphasize three points. First, how deep is his knowledge? Ask what he has been thinking lately, and "probe" him on this topic. Does he seem to have a detailed understanding of the subject? Can he explain it clearly? (A clear explanation is a sign of genuine understanding.) Does he know about the subject that you don’t know?



Second, is he curious? Does he ask questions about you in return? Is he really interested or is he just trying to be polite? Does he ask additional questions to what you are saying? Do his questions make you wonder?



Third, is he learning? At some point in the conversation, you may be explaining something to him. Does he really understand what you are saying, or is he just smiling and nodding? There are people who have knowledge in some small area, but are not interested in other issues. And there are people who are curious but don't learn, they ask a lot of questions but don't really listen. You need someone who is both the one and the other, and the third.



Finally, I determine if I can work with a person just by spending some time with them. Many outstanding people seem adorable in their first hour of communication, but after a couple of hours their eccentricity starts to annoy. So when you're done with a casual conversation, invite him over to lunch with the rest of the team or to a game in the office. Again, try to keep things as informal as possible. The goal is simply to see if he will get on your nerves.



If everything looks good, and I'm ready to hire a person, common sense says that a final check is necessary to make sure that I have not been somehow cheated: I ask him to do some of the work. This usually means that he should write some more or less independent piece of code that we need. (If you really want to see him perform under stressful conditions, give him a deadline.) If necessary, you can offer him to pay for the work - although I find that most programmers are not averse to doing a small task, if they can then make the resulting sources open. This test doesn't work on its own, but if someone passed the first three tests, it should be enough to prove that the person didn't cheat on you, that they can actually do the job.



(I've met people who say, β€œWell, okay, let's try hiring you for a month and see how it goes.” This doesn't seem to work. If you can't make a decision after finishing a small project, you don't you can do that in a month, so it turns out that you are hiring someone who is not good enough. Better to just say no and look for someone better.)



I am quite happy with this method. When I only partially adhered to it, it ended up hiring inappropriate people who eventually had to leave. But when I followed this plan, I got people that I liked so much that I actually really regret it if I have to part with them. It's amazing how many companies use other, stupid hiring methods instead.



Translation: "Webplanet"








Follow the YC Startup Library news in Russian in the telegram channel or on Facebook .



Useful materials






All Articles