Friday, January 13, 2012

Hiring Great Engineers

How do you hire great engineers in this competitive market?

1. I look for people who have special skills (Lisp, F#, Popcorn, etc.) which have not yet become mainstream. That shows a person is passionate about what he does and experiments with new technologies. The best way to find people is through your network on LinkedIn or direct references.

2. Good people don't want to just be paid well. They also work on an innovative product, learn along the way, and see their work used by millions of users.

There's a good reason why A-players come to work for A-players, and B-players hire B and C players.

3. The work environment needs to be fun.
Nobody wants to work in a cubicle farm. Writing great code is not akin to typing. It takes creativity and inspiration. Most of it happens outside of the work environment. So the companies which evaluate people based on the number of hours they keep will never attract good ones.
The first thing I did for our office is get a foosball table.

4. Be genuine.
Many companies try to 'sell the company' to candidates. People can easily see through B.S. Tell your personal story about how you joined a company. What are its +s and what are the -s.

5. Always ask engineers to write code, and ask obvious questions.
A good way to understand if a software engineer knows his stuff is to ask obvious questions 'ad infinitum'.

Let's say you ask a person to implement Fibonacci sequence algorithm to compute 1,1,2,3,5,8,13,21,etc.

The obvious way is to use recursion (70% of candidates don't get even this, so they are out).
int fib(int n) {
if (n == 0 || n == 1)
return 1;
return fib(n-1)+fib(n-2);

But what are the drawbacks to recursion? About 15% of candidates know that the stack grows and can overflow if n is too large. They suggest to implement an iterative solution.
By the time, you start asking questions about assembly language and about why the stack grows, only 1-2% of candidates remain. And you should hire them.

6. Conferences
Going to Tech conferences on specific subjects (scaling, mongodb, etc.) or even better presenting at them is a good way to find engineering talent. If a person preferred to spend his weekend listening to tips on sharding, he'll be a good catch.

7. Look for engineers, who can be a co-founder of a startup at any point.
A good manager will not be afraid to lose his employees. Instead, he will cultivate them to become better technologists. 3 engineers in Cinchcast team have been CTOs in the past but prefer to work with us, because they learn new things every day.

In the end, hiring is not easy, and there's no silver bullet. But the difference between losers and winners is that losers don't fail enough. Keep trying!

And by the way we're hiring great engineering talent at Cinchcast.
You can email me at:



Hiring the right engineer is important to success, so is creating ahead achievements in your organization. So make sure you are truly discriminating in your necessary record of requirements.

Post a Comment