As a computer engineer and former CTO, startups often ask me “how can I hire an awesome developer?” and “how do I an interview a software engineer?” It can be tough, but it shouldn’t be much harder than hiring a non-technical person to join your team.
Here are my 4 best tips for hiring an awesome software engineer (or developer or hacker) to join your startup.
1. Embrace Open Source
Why is this important? Open source profiles show passionate developers. These are the ones that will code all night, the ones you want on your team. They often write stronger code and leverage open source projects in delivering superior code. This means they can get more done in a shorter amount of time, often with higher quality.
The developers that shy away from open source tend to favor a 9-5-type job. They aren’t the type of folks you’d want on your startup team.
2. Grab a Beer
Developers love free beer (or root beer for the non-drinkers). Take them out for a beer and get to know them. Do they have other interests or hobbies? What’s their life story? Can they hold up a conversation?
This is a key insight into how a developer will act on your team. Developers don’t work in isolation. They need to work with product folks, UI/UX designers, marketing, and business teams. They will constantly be communicating with different teams. If you can have a conversation with the developer, then there is a good chance they will work well with the rest of your startup team.
3. Look at Their Background
The key here is to better understand how they can execute on software projects.
Top tier schools show that they can withstand the rigors of intense curriculums. Online code schools show they have cutting edge software knowledge. Previous companies will show experience in developing large-scale software projects.
Note, I never mentioned they need a computer science or computer engineering degree. While this can be helpful, it doesn’t mean they are a great developer (see #1 and #2 above). Some of the best developers I’ve ever worked with were history majors (for real).
One red flag to watch out for: too many coding languages listed on a resume. No one can be proficient in a ton of coding languages. Look for focus and specialization to show they can go deep on languages your startup uses the most.
4. Conduct a Code Challenge or Whiteboard Session
This last tip is one of my favorites. This tip will show you how a software engineer thinks—a key insight to know before someone joins your startup.
There are 2 flavors to this.
Flavor 1: Email the potential engineer a coding challenge. Specify what type of language to use and any software constraints (e.g., type of open source projects allowed or not allowed). Also specify if you want to see executable code or pseudo-code (useful to limit the amount of time a candidate spends solving the problem).
Here’s an example:
Write a web proxy in [Ruby / PHP / Python / Java] that caches HTTP requests. You should be able to open Chrome and set the proxy settings to use a computer running your code on a port that you define. In addition, after visiting a website, your proxy should cache the information from that website into a non-persistent cache. The total cache size should be 5 MB. If a new request is made that will exceed the cache limit you will need to override the cache. You may implement any strategy for cache overriding, but be prepared to justify your decision. You are only required to service GET requests. Do not worry about persistent HTTP connections. Your solution should be able to handle multiple requests (e.g., multithreaded).Hat tip to Silicon Mint who turned me on to this specific code challenge
When reviewing the coding challenge, you’ll gain huge insight into how this person thinks. What libraries or open source projects do they use (resourcefulness)? Do they have nicely formatted code and comments (thoroughness)? How long did it take them to solve the problem (readiness)?
Flavor 2: Bring in your developer for a whiteboard session. Give them a problem to solve on the whiteboard, one your startup is currently facing or one you have already solved. This will give you insight into how this developer would work on your team. It will also shed light on their ability to solve engineering problems.
Hire an Awesome Software Engineer
Those are my 4 best tips for hiring a software developer. I feel they give a strong balance of technical capability, problem solving capacity, and general awesomeness.
Do you have any tips that work well for hiring a developer? If so, share below for others to see as well.