Saturday, February 6, 2010

Hiring the First 5 Engineers: What Sort of People Do You Want on Your Team?

Often when discussing the first engineers to hire for your startup, people will say things like "hire people smarter then you" or "hire rockstars". This is NOT sufficient criteria for getting your startup team going.

While you always want to hire people who are shockingly smart and outstandingly great at building things, this is not sufficient for an early stage startup. For a raw, young company, you also need people with additional traits which differ from what is * necessary* for a later stage company.

For small startups I think you should find people with these traits:

  1. Do what it takes-edness (to coin a term). Willingness to dive in and fix any problems that come up and to take charge since there will not be anyone else to do so. This includes the willingness to do lots of grunt work - there is no one to delegate to.
  2. Persistence/tenacity.
  3. Ability to deal with uncertainty and not freak out. You may end up with multiple pivots depending on company stage. You need people who will stay calm and keep with it.
  4. Generalist technical knowledge. You will not have a "front end team" an "ops team" a "backend team" and a "database team" etc. You need someone who can optimally work on all parts of the stack.
  5. Not religious about technology (or other aspects of the company). This is useful at any size company, but at a startup you really don't want to waste time debating the merits of Python versus Java. You just want to build stuff and get it done. No engineering ego (I find the most confident engineers often don't need to reinforce their ego - they already know they are very good so dont feel threatened easily) and no drama.
  6. Get a lot done. You need people who can just crank on product. They need to be able to problem solve independently and go figure stuff out.
  7. Do "just enough". Focus on the 80% of stuff that needs to get done, not the 20% edge case which most users won't care about (i.e. hire people who buil things that are very solid, but not "perfect" - this applies to an internet company, not e.g. a later stage hardware co)
  8. Get along with the team. This does not mean the person is not quirky or lacks personality. It does mean that you will be 5-10 people in a room every day and you need people you and the rest of the team get along with.
  9. Bonus points: financial stability. This could be a low personal burn rate, or ability to take a low salary either through a past financial success, being straight out of school so living costs low, or other means. This means the person may be more willing to take a low salary in exchange for more equity, which helps the company survive longer on less.
  10. Lots of other stuff, but I think the above is important.

How Do You Ensure People Have These Traits?
  • Reference checks. Make sure you ask hard questions of the people with whom you check references. Push on quantitative, not just qualitative feedback (e.g. what % of engineers are they on characteristics a,b,c) and ask for specific examples of how the candidate exhibited the traits you are looking for.
  • Beer test. Take them out for a beer or dinner and see if there is a good culture fit.
  • Have the candidate come in to work with you for a day. Give them a simple, tractable problem that can be coded in a day. See how they solve it. Were they pragmatic? Did they use open source packages or build something from scratch? Did they solve the problem? Can they defend their design? Did they think of the next steps they did not have time to tackle? Did they define the problem properly? How do they react to tough questions? And, importantly, are they serious enough about the opportunity to spend a half or full day working with you guys?
I will be writing another blog post on Guerilla Hiring Techniques for Startups - How to Find Your First 3 Employees.... :)

Any traits I missed? Thoughts?