Every technology company laments the difficulty of finding great software engineering talent. The problem is ostensibly that the demand for quality developers dramatically exceeds the supply. In other words, the perception is technology companies would hire every great coder - if only they could find them!
I believe most technology companies are recruiting in a flawed manner, competing for the same talented 1% of engineers from the same pool of about eight schools.1 Instead, tech companies should be working hard to grow candidates with great potential. And I do mean working hard - this stuff ain't easy. It requires fostering an infrastructure and company culture that elevates engineers from good to great. It requires looking beyond the one-size fits all template of the background of a successful engineer, and trusting that people can approach engineering from different perspectives, skillsets, and disciplines - but still be successful.
Why invest this time? Because we have a proven industry parallel that illustrates the long term success a company can enjoy when it takes the time to develop talent - sports. The best franchises - as defined by consistently making the post-season and competing for championships annually - have excellent player development programs. Take the NBA for example. Very few prospects enter the NBA already considered elite. Most, only have potential. For NBA teams, It's important to have a talented roster, but its equally important to have depth. Therefore, the most successful teams are the ones that are able to find players that despite not being elite or having played for a prestigous college program can still fill a role. The defending champion San Antonio Spurs, with their three championship titles in five years, are a franchise that embody this practice.
In contrast to a concerted effort to develop talent, some teams chase the most impressive free agent or spend a lot to move up to a high pick in the draft. Rarely though does securing a well regarded single elite player affect the long term success of the program. In fact, having to chase the best free agents year after year is a huge vulnerability - a sign of a lack of instutitional control. My beloved favorite childhood team, the Knicks, illustrate this point perfectly. After spending over ten years casting aside potential, the Knicks have become one of the worst performing teams in the league.
By only feeling comfortable with hiring for previous industry experience, we are ensuring the pool of available candidates remains small.2 That student who spent last summer teaching high school students programming should not be overlooked for having foregone industry experience. And calling that student fresh out of school with a masters degree in computer science "good but unproven" is ridiculous.
The reluctance to hire candidates without directly correlative previous industry experience is palpable. To be clear, I am not suggesting that the bar be lowered for candidates. I am suggesting, however, that if you're having trouble finding people to fulfill your available positions, then it might be prudent to start allowing people to grow into them. Hire for smarts, passion, a proven track record of delivering3 - let the rest take care of itself. This is a profession that's ever changing and signing us up for a lifetime of learning anyway.
1. Cal, Stanford, MIT, Berkeley, Brown, CMU, Georgia Tech, Michigan ↩︎
2. This gets to a larger issue though, and one that's almost become a buzzword in tech at this point - diversity. Diversity is not about having an altruistic rainbow of employees to show off in marketing materials. It's about a necessary widening of the pool of applicants in order to fill job positions - which affects the bottom line. ↩︎
3. Even if its not code! ↩︎