Hiring Tech Talent
“Fast-growing companies at large scale do enormous amounts of college recruiting. That’s because the quality of the pool is much higher than the pool of out-of-work programmers… not because young people are smarter or better programmers but simply because the candidate pool includes a cross-section of skills, whereas the candidate pool of out-of-work programmers is biased to programmers who can’t find work.” [1]
Who should you employ?
It’s very important to get the best people possible to work for your company. There are two qualities that you should look for: character and ability. Experience and advice has shown me that often character is more important than ability [2]. Look for those that have a high internal locus of control and have taken ownership of their destiny as they will have passion and drive. It may not be possible to fully judge character in a technical interview but if you treat probation as a period of time to find out developer fit then you will have more time to do so. Always keep in mind: action reveals character; character is destiny.
The next most important quality is technical ability. In developers this is highly variable and in terms of quantity and quality of work a smart developer can often be 2x, 4x or 10x more productive than others while there are also people that are net-negative producing programmers (NNPP) who will cause irreparable problems with a codebase [3]. Hiring great programmers is better value so improving the hiring process will be very effective in improving the quality of your services.
In concrete actions
- Use a service that will quantitatively rank developers’ code [4].
- Hire developers from networks with high-entry barriers that can act as credentials: github/open-source projects, the elite graduate pool, stackoverflow, tech meetups, etc.
- Don’t hire to fill short-term demands of extremely specific skills. If you hire smart people it will only takes a few months for them to become proficient at a new technology.
- Don’t build a development team out of contractors. They are modern day mercenaries, solely motivated by money instead of a shared company vision. When times are good they cost you, but if times are bad often show no loyalty. Use them sparingly to scale with elastic demand.
- Use the word of mouth of your best employees and healthily compensate them for this service.
How do you entice and keep employees?
The development employment market is very competitive and there are many reasons for it being difficult to attract the best employees [5]. A good first objective is to pass the famous ‘Joel Test’ [6].
The Joel Test
- Do you use source control?
- Can you make a build in one step?
- Do you make daily builds?
- Do you have a bug database?
- Do you fix bugs before writing new code?
- Do you have an up-to-date schedule?
- Do you have a spec?
- Do programmers have quiet working conditions?
- Do you use the best tools money can buy?
- Do you have testers?
- Do new candidates write code during their interview?
- Do you do hallway usability testing?
Other important motivations for developers [7]
- Autonomy: Form a culture of “Freedom and Responsibility.” [8]
- Mastery: Allow them to work on interesting technical problems [9].
- Purpose: Create a company vision with high-impact projects to aspire to.
- Compensation: Measure business value and compensate based on this.
[1] http://www.joelonsoftware.com/articles/FindingGreatDevelopers.html
[2] http://www.birdsnest.com/garcia.htm
[3] http://www.forbes.com/sites/venkateshrao/2011/12/05/the-rise-of-developeronomics
[5] http://news.ycombinator.com/item?id=3357152
[6] http://www.joelonsoftware.com/articles/fog0000000043.html
[7] http://www.ted.com/talks/dan_pink_on_motivation.html
[8] http://practicalcloudcomputing.com/post/14040261889/netflix-linkedin
[9] http://cdixon.org/2011/12/29/recruiting-programmers-to-your-startup/