I found out last week that a large tech company had passed on one of our newest developers because he didn’t have a computer science degree. Given his extensive background and proven experience, it surprised me to hear that such a developer-driven organization would eliminate a good candidate based solely on a degree.
As many have learned, unlike many other disciplines, software engineering isn’t a skill you can simply learn – it’s something you learn by doing. Want proof? Just look to the vast number of stories about self-taught teenage hackers or high school coding hobbyists who pique the interest of big corporations. In fact, to some developers, a formal education in computer science can seem like a hindrance after spending years learning how to code on their own.
Kasra Rahjerdi, one of our mobile developers at Stack Exchange, echoes that sentiment: “It’s really hard to sit still for four years when you know you can do it yourself. That’s why I dropped out. I was so bored and I just wanted to work on my own stuff.” This decision didn’t hinder his professional success. Since then, Kasra has worked for both startups and for larger companies, including being accepted to Google’s internship program. His is not a unique story. Dozens of company founders and other professionals have opened up about their self-taught programming education or early roots in coding.
This isn’t to say that there isn’t value in receiving a formal education in computer science, but if you’re hiring developers for your organization, you may be doing yourself a disservice if you automatically weed out applicants without degrees. For one, you may lose out on top talent who skipped the college step to get right to work. And in an environment where the number of programming jobs will far outweigh the current graduation rates of computer scientists, you can’t afford this risk. There are many great programmers who don’t have degrees. Hackers are a great example—they get a negative connotation, but at the end of the day, they know how to get things done. They like learning and they are self-motivated. Second, you may box your organization in a corner when it comes to the type of programming philosophies you adopt as a team. Academically trained computer scientists are taught the principles and the theories behind the practice—but you need to back up this perspective with someone who’s actually completed projects on teams from start to finish. Those who have coded a project on their own or held a previous job in programming know that there isn’t just one correct way to do something. That’s a lesson that recent grads need to learn with experience.
At Stack Exchange, we strive to maintain a programming team that comes from a wide variety of backgrounds, so we hire developers with degrees and those who are self-taught. We don’t focus on hard-and-fast requirements, but rather how it fits into the bigger picture of the candidate. It’s the same reason that we don’t only look for developers with experience in our tech stack—we want to expand our development team to encourage multiple perspectives.
So how can you tell if a programmer is good enough to join your team? Here are three things to look for in any applicant, whether they are an Ivy Leaguer or a college drop-out:
Look for evidence that the developer has gone through some type of highly selective process in the past. As Joel has pointed out, this has been a major component of our hiring process from day one, and we’re sticking to it today. Selectivity can include being accepted to a school that accepts less than 30% of its applicants, but it can also include a work history at a company with a difficult hiring process or acceptance into a highly selective course in the military. The main element to consider is whether or not that person has made it through some type of vetting in the past. Chances are, if one group of people found that candidate worth pursuing in the midst of a tough process, they’ve got something worth noticing.
There are a lot of ways to figure out whether a candidate has brains without turning to a college transcript. Start by piecing together their digital footprint. Check out their participation on Stack Overflow or other online programming communities to get a good idea about whether or not that candidate knows their craft. Their Stack Overflow reputation or the number of times their projects have been forked in Github can also help you gauge how they are perceived among their peers. Finally, look for involvement in coding competitions and contests (and even unrelated competitions such as chess matches) as indicators that they’ve got a good head on their shoulders.
Perhaps most important of all, seek out developers who truly love programming. If you focus on hiring people who get to do what they love, they’ll be happier doing it, they’ll improve the quality of your team and products, and you’ll ultimately minimize turnover. The easiest way to determine passion is to see whether they work on personal side projects, open source, or write an industry-specific blog. In the interview, ask the developer what got them started or what new language they are excited to learn—you’ll know passion when you hear it. With the ideal blend of passion and self-motivation, you’ll stumble upon the type of employee who will bring your developer team to the next level.