Because career-specific sites like LinkedIn are inundated with recruiter mail, most software developers are skeptical of them, to put it mildly. In order to keep your tech talent pipeline full, you need to be where software engineers are, and GitHub is definitely one of the best places. In this post, we explain how to source developers from GitHub.
When it comes to hiring software developers, you can leverage GitHub in a number of ways:
- Source candidates by means of finding projects which correspond with what you do,
- Evaluate quality of code based on publicly available projects candidates are currently working on. Bear in mind you’ll still need a code test later in the process for a reliable assessment of their coding skills..
- Find email addresses of people you’re interested in. Bear in mind you cannot email people inside GitHub, but many users provide their email addresses which you can see either in profile information or directly in search results.
A word of caution is necessary at this point: if you’re a recruiter on GitHub, you need to make sure you’re on your best behaviour. Why? GitHub brings together great developers who are contacted by recruiters left, right and centre, which they’re not very happy about.
Here’s an example I’ve come across within the first couple of searches I’ve performed on the day of writing this post:
Table of Contents
- What is GitHub?
- GitHub glossary (based on GitHub Help)
- The anatomy of a GitHub profile
- How to search for candidates on GitHub?
- Searching by language, location and number of followers
- Finding email addresses
- Searching commits of a given candidate
- Finding good repositories
- Sorting your search results
- X-ray searching GitHub
- Searching for code
- Best behaviour
What is GitHub?
GitHub is a social coding site where developers share open-source projects they’re working on. It was launched in April 2008 by Tom Preston-Werner, Chris Wanstrath, and PJ Hyett. The name comes from Git Revision Control System which tracks changes from original code in a given piece of code.
The code host gives the opportunity to showcase projects, talent and skills and there’s very little room for written descriptions. On GitHub, code speaks for itself which is good news for recruiters because you get to see practical applications of people’s skills.
The way GitHub works directly impacts how you should search for tech talent in the platform. It’s packed to the gills with active developers who share their projects, so there’s a lot of potential when it comes to hiring. You just need to know what to look for.
GitHub glossary (based on GitHub Help)
If you’re not a techie, you may feel slightly confused when you start using GitHub mostly due to the terminology used on the platform. Here’s a quick explanation of the most frequently used terms:
Commit: revision; an individual change to the file.
Forking: copying projects from other users with the aim of using the code yourself. Forks are personal copies of another user’s repository which live in your account. It’s possible to make changes to forks without affecting the original project. Attention: Stars and forks are a sign of good, usable code.
Pull request: Thanks to pull requests, you get to tell other users about changes you’ve made in their GitHub repository. When you submit a pull request, you ask the author to update their project with your changes.
Repository: open-source development projects the person has chosen to host on GitHub, plus projects they’ve copied (“forked”).
These terms should make it easier for you to move around GitHub. If you need more, you can, access their full glossary here.
The anatomy of a GitHub profile
As GitHub say in their Help section, ““Your profile page tells people the story of your work through the repositories you’re interested in, the contributions you’ve made, and the conversations you’ve had.”
GitHub profiles include the following info:
- Date joined,
- Number of followers,
- Number of Sponsors,
- Personal email address (optional),
- Bio (including @mentions and emojis),
- Organizations (including ones you’ve previously worked for),
- Projects you’ve contributed to,
- Timeline of important highlights (joining GitHub, opening first pull request etc.),
- Repositories owned or contributed to,
- Repositories started,
- Stars (quick reminder: good code is forked and starred a lot, so pay attention to these elements),
- Contribution calendar (you might be tempted to think it’s useless for you, but read on to find out why you should like it A LOT).
To access the repositories of the person, click “Repositories” in the bar menu and choose from the dropdown list.
While code listed as “Sources” is essentially code authored and hosted on GitHub by this person, code listed as “forked” is basically code copied from someone else that this person found valuable and copied to use for themselves.
Looking at the code authored and forked gives you an idea of what they’re currently working on as well as their level of expertise.
You can also follow promising candidates and watch projects you find interesting.
How to search for candidates on GitHub
To search for candidates who match your criteria, here’s what you need to do:
…and advanced search you can find here.
Here’s what it looks like:
On GitHub people aim to present their projects, and not themselves like it is the case on LinkedIn. Because of the nature of the platform, you shouldn’t search by job titles but use industry-specific keywords like programming languages. This way, you get to identify candidates through code they keep in their repositories or in repositories of someone else they contribute to.
As an example, when you run a simple “python” search, these are the results that you see:
- in the “Repositories” tab:
- b) the “Users” tab, you see people who used the word “Python” in various context, including these with the word “python” in their bio or email address.
b) the “Users” tab, you see people who used the word “Python” in various context, including these with the word “python” in their bio or email address.
However, if you run a “language: python” search, you get more results:
Interestingly, the number of results varies significantly for these two search queries:
“Python” vs “language:python”
Repositories: 1M vs. 5+M
Issues: 5m vs. 20m
Users: 115k vs. 2M
As you can see, simple searches don’t return satisfactory results so I advise you to use advanced search parameters like language, location and number of followers.
Searching by language, location and number of followers
For the purpose of tech recruitment, the most important parameters for searching GitHub are:
In this case, you need to remember about quotation marks because location is a free text field.
No need for quotation marks in location in this case.
You can also narrow your search results by adding more information, like the number of followers your candidate should have:
In the search above, I’m looking for Python proficient software developers based in London with more than 60 followers.
Here’s the syntax you need to find candidates with the desired number of followers:
followers:>10 – users with more than 10 followers,
followers:5..50 – users with between 5 and 50 followers
followers:<75 – users with less than 75 followers
Another cool GitHub search tip is to change your parameters directly in the url:
All you need to do is change language names of location names directly in the URL in your browser, which I’ve personally found saves a lot of time and effort.
Finding email addresses
There are two places where you can find email addresses:
1. Search results:
Alternatively, some users (like the one above) provide their websites in the bio section and you can find their contact details directly on these sites.
There used to be a hack with an API link which could show email addresses of all users, but the method no longer works. Grab a tissue.
Searching commits of a given candidate
You can find commits authored or committed by your candidate by using one of the following search commands.
author:defunkt returns all commits authored by @defunkt
committer:defunkt returns all commits committed by @defunkt
Finding good repositories
Like we said earlier, good code gets forked and starred a lot. Here’s how you can find frequently forked repositories (and more importantly for us, users who created them).
forks:5 repositories with five forks only.
forks:>=205 repositories with at least 205 forks.
forks:<90 repositories with fewer than 90 forks.
Forks:10..20 repositories with 10 to 20 forks.
Sorting your search results
Results are sorted by “Best match” by default. You can change your sort options in the drop down menu:
The “best match” ordering gives you people who have coded most in the language you’ve specified in the search criteria and who are nearest to the location you’ve provided.
You can also order your results by number of repositories, most followers, or most/last recently joined.
X-ray searching GitHub
Unfortunately GitHub profile URLs don’t have a specific indicator telling you (and Google) that the site is a profile page This makes X-ray searching slightly more difficult but still doable.
There’s a way around this because you can search for elements which are present only in user profiles, like the contribution calendar. One such element is this search recommended by Vince Szymczak:
It works because of the phrase used here:
Similar to regular searches, you can use the language and location details in your X-ray search. To do so, simply add the information you need to the string without quotation marks. It should look like this:
You can use a number of parameters, including the phrase “gmail.com”
Searching for code
While GitHub allows you to use qualifiers such as location on their own in code searches, the results might not be relevant. For instance, if you enter ‘London’ as the location, you will not see users or code created in the city. Instead, as in the image above, you might end up with a string of code which features London apartments listed on Airbnb. Not exactly worthy content from a recruiter’s perspective.
The solution is to search by function, a short piece of example code. You can look at it as a sample of the work the prospective hire could be delivering for your company, should they be employed. to “function, a short piece of example code the future hire will work with, and might currently use as well.” You can get this sort of information for your Hiring Manager and use it to find users who created it.
Let’s look at a “float invsqrt language:C++” search suggested by Szymczak to illustrate how this works:
The problem with this is that you search for fragmentary nuggets of coding wisdom which don’t guarantee the person who knows it is a good developer.
If you need more help on searching GitHub, read this GitHub guide on search syntax.
I am pretty sure you know this, but given the bad reputation tech recruiters get, let’s just say it again: be sure to respect people’s boundaries. When you go through search results, you get to come across all types of information, including “no recruiters” claims in the bio section like I’ve shown you above.
This feels kind of similar to Stack Overflow where you’re not very welcome as a recruiter. If you’re on your best behaviour, you should be fine, but first rule is to respect people’s boundaries.
- NEVER email people if they say they don’t want you to.
- ALWAYS respect their boundaries.
- CROSS-REFERENCE profiles in other platforms, including Stack Overflow, LinkedIn, and Twitter.
- DO YOUR HOMEWORK before you email your candidate. Dig into their Stack Overflow and GitHub profiles to get an idea of what they’re doing and try to start conversation with that.
- BE SPECIFIC when you decide to reach out. Don’t offer “a couple of cool opportunities” but provide all the necessary information like salary, location, job title.
Sourcing from insider sites like GitHub allows you to get off the beaten track and discover talent that isn’t on everybody’s radar. You can use the data available on the platform in a number of ways, including lead discovery, verification of skills and level and expertise, finding a topic to start a conversation, and finally, acquiring contact details of the candidate.
When you decide to reach out, remember you should aim to build relationships and not spam people with vague job offers. Talk to people about their work, even if they’re not looking for a new job opportunity at the moment. This type of relationships pay off in the future, as 57,6% of developers “are open to new opportunities without actively looking for them”. Make sure that when they change their mind, you come to their mind as the recruiter who didn’t try to bullshit them “with a couple of cool opportunities”. Good luck!