I've been getting a lot of questions from friends about hiring recently. Right now there is insane demand for tech workers in Silicon Valley, and finding the right fit is a hard, ambiguous. A startup raises money for a reason, to grow in some way. Many times, in early stage startups, the reason to raise is so that you can grow the team. Money is certainly important for doing so, but there's (as always) more to it than that. You can't just post a picture of your cash hoard to twitter and expect a team to crawl through the windows, zombie-pocalypse style. Successful startups realize that just like their signup funnel, hiring can be treated like a linear process. Taking a principled approach to optimizing it will keep you sane and focused.

It's worth noting that this differs from something like your signup funnel in the early stages because there are a small number of events, and an even smaller number of successful outcomes. For your first hire, you don't know what an ultimately-successful candidate looks like at the beginning of the process.

Here are some lessons from hiring a (incredible) team at ReadyForZero:

Start early

When we raised a Series A, our team of 4 was obviously super excited and ready to move even faster, but we were still just a tiny team. Only at that point did I begin the hiring process. Like starting a race with cold muscles, or starting from a dead stop, getting something moving requires herculean effort [1]. Looking back, I should have started optimizing the process assuming the money was going to be in the bank tomorrow. Especially since most people will need to wrap up other commitments [2], or may be looking for the future. Before you're ready, you should already be warming up your personal network - all of your friends should know you're hiring, and you should already start the practice of reaching old cold to people that you think might be a good fit. If you immediately attract top-notch people, this can also help you close funding. This will prime the top of your funnel so that you don't have to start cold.

Know who you want

It's easy to say that you want someone who is a specialist in multiple fields, eg: a designer that codes javascript and knows ruby, or someone that is a rails ninja and can do DevOps in their spare time. If you find them, you should hire them, but I've found that looking for unicorns can be really time-consuming and not necessarily better in the end. If you really do need a generalist because you can only hire one person, then you need someone that can and wants to learn quickly.

Avoid the trap of thinking that you'll find someone who will be so good at everything that you'll be able to relax and focus on "more important" things. Not only will you need to ramp this new hire up, but in the end, you'll still be ultimately accountable to ensure that the team is running smoothly and things are gelling. One of the most important things that I've found is to look for people that take operational accountability, so that the number of things you need to constantly worry about stays manageable.

Startups are hard not because there is a lot of work (although that is true), but because there is so much to be responsible for. The most important question you can ask yourself about a hire is not "Do they know Rails 1.9.3?", but "What will they own, and will they rise to a challenge?".

We do small team programming projects for our interviews (2-4 hours) that involve the candidate and 2 other people. In one instance, I pointed out a concurrency bug in the candidate's code. A few hours later, they sent me a note saying they had fixed it because it really bothered them. This, more than anything, was exactly the type of person we wanted: someone that held themself accountable.

Know what you offer them

Talented people accept a job that satisfies some intrinsic need. Either they're motivated by the work itself, or by the purpose, or by being part of a productive team. It's important to know in your mind what are the intrinsic benefits that attract candidates to your company.

One of the questions I always ask candidates is: "What do you want to learn or improve on?". Not only does that help me make sure they're actually learning that when they start working, but good people are always seeking to learn something, whether it's better coding practices, management skills, or a new language. A great corollary question is: "What have you learned in the last 6 months?".

Another potential intrinsic benefit is that your company has a very lofty purpose. Helping real people with painful problems (eradicating debt) or making the world a better place (disrupting education) are powerful motivators. Practice selling them, you should be able to rattle off several real answers to "Why should I work there?" without thinking about it.

Before telling someone how great your company is, you need to ask them questions to figure out what is really motivating them, and use that to determine what points you focus on [3].

Get flow

For most people in the valley right now, you reach the end of personal networks quickly. So that means that you're going to have to increase the number of people you talk to. And the hardest part about any funnel is the top, in this case: how do you increase the number of people that think "Hey, that would be a neat place to work!". Focus on contacting a certain number of new people every week helps you realize that you might need to pull out some unconventional methods. Building your brand by blogging, advertising, getting inbound links on design blogs, open source project pages, mailing lists, conferences, and job sites [4]. Like traffic on the web, people need to be able find you. When they do, make sure that your jobs page reflects the personality of your company.

At ReadyForZero, early on in the hiring process, we posted a short set of programming challenges that got a lot of attention on Hacker News. This not only was spread around the community, but established us as reasonably intelligent people, and our working environment as one that embraces curiosity.

Building flow takes a long time, and is on-going. For example, with the programming challenges, one of our early hires made early contact through that, but because of some personal circumstances, we didn't interview him until nearly 6 months later.

Screen effectively

If you're meeting your first goal, then you'll need to vet out the candidates that are applying en masse. For this, I found that early on I wasted too much time with candidates that didn't go anywhere. I found that if I settled on a goal of meeting, in person, at most 2-3 people per week, this was a great limiting factor that required that I just say no to those on the fence.

Now my process involves asking a candidate to spend 2-4 hours writing a plan for a small project, working on the code, and getting it to some finished state. Any open sourced project will do, but the end result should be something that they feel good presenting and should be in some form of completeness. I'd rather see a trivial project, completely done, then a complex project that has dangling pieces everywhere. Finishing is hard, and "completion risk" is something that startups cannot afford.

Look for a mutual match

You want to find those people that not only are a good match for your team, but also those that you feel you can "tip". Like fundraising, you don't just have to find someone who likes you and thinks your idea is good, you need someone who is ready. Those are the people that you should spend your time trying to pull over the edge. If someone has a deal-breaker or a motivation conflict (eg: excited about the vision, but looking forward to option vesting at Google in 6 months), then they're not gonna move. Don't get your hopes up or waste your time.


For those that are fits on both sides, don't take no for an answer. This is a problem in convincing people, and in those cases, fortune favors the bold. Don't sit back and wait for the phone to ring. As mentioned above, because the number of people that you get at this stage is so small, avoid "learning" too much from failures (the only lesson you should probably learn here is that you weren't tenacious enough). It's easy to generalize about why you lost one person, but you don't have enough information. Just keep trying.

Keep in touch (see "Get flow")

Be respectful (actually say "no" if the answer is no) and leave a good impression. For those people that are interesting, follow up occasionally. I label "good hackers" in my inbox, and will make sure to send open sourced news or projects that match their interests every once in awhile. I schedule time in my calendar about once a month for these kinds of "review" tasks so it doesn't take up day to day mental energy. The network effects from doing this are real. We had a candidate that didn't work out, but he later referred his girlfriend (now fiance) to ReadyForZero for another role.

Like most challenges in a startup, there is no shortcut, but hiring is a numbers game, and optimizing it like one will make sure that you're moving in the right direction. I'd be curious to hear about your hiring funnel, what other questions you've found to be really illuminating during an interview, or what selling points you use for your company.

  1. This is clearly evident in physical systems, where the energy required to keep something moving is only what's required to overcome resistance forces like friction and air resistance. Getting it moving actually requires you to perform work on the mass of the object.
  2. I think this is one way that young folks are more attractive to startups. For the early hires, startups need someone NOW, and can't afford to wait, and someone that's built up years of responsbilities at another place can't responsibly drop them fast.
  3. Yet another straightforward application of the core principles of selling.
  4. We've had moderate success from StackOverflow, but not much to speak of from other sites.
  5. As is true of many topics, Elad Gil has also written insightfully about hiring.

Discuss this on hacker news.