Using GitHub to Land a Job
Using GitHub to Land a Job
Jonathan Hall gives the lowdown on optimising your job hunt as a developer
I didn’t apply for my current job. They approached me, because they knew me through one of my open-source projects.
During the interview for my last job before that, my soon-to-be-manager said “I’m really impressed that you use pull requests for your own hobby projects on GitHub.”
And three years earlier, while interviewing for another job I accepted, I was told “One of our developers knows you from StackOverflow,” and also “I liked reading your blog. It’s clear you’re experienced in the technologies we use.”
If you’re relying on just your CV to get your next job, you’re missing out on some great opportunities to get yourself noticed.
In this post, I’ll focus specifically on how to use your public GitHub profile to improve your chances of being noticed, and ultimately hired, the next time you’re looking for a job. The same principles apply for any public developer profile, such as GitLab, BitBucket, or even code repositories like npm, PyPI, or CPAN. But GitHub is nearly ubiquitous, so I’ll use it as a short-hand throughout this post.
What do I know about hiring developers?
I’ve been writing code, in some form or another, since I was 8 years old. I’ve been coding professionally since 2006, and I’ve been involved in hiring developers almost as long—since around 2007.
In 2014 I reached out to a developer who worked closely on one of the open-source tools we used, and we hired him. A few years later, another colleague (on another team) was hired in the same way, for his expertise on another tool.
This was half a decade before my current employer reached out to hire me, specifically for the expertise displayed on my GitHub profile.
Not just for seasoned veterans
But naturally, most of the developers I hire, and most of the times I have been hired, it didn’t work like this. Of course, if you do land a job this way, that will be amazing. And if these tips help you do that, I’d love to hear from you, and I will buy you a drink to celebrate!
But even when I receive a job application through traditional means, a public profile, such as on GitHub, often makes a huge difference to how I perceive the applicant. When I’m applying for jobs, I constantly get comments from recruiters and hiring managers that confirm this is true for others as well.
Whether you’re a fresh graduate of a programming bootcamp, or a 20-year programming veteran, a good public profile can be a real door opener.
I know many developers, and have interviewed many times more, who have no public record of their coding contributions. They are not interested in contributing to open-source projects, and have no public profile on GitHub or elsewhere, to speak of.
Please don’t make this mistake. Even a very basic public profile can be the difference between being offered an introductory interview or not. Don’t waste the opportunity to stand out from the crowd.
Getting Past Gatekeepers
While a public profile may not get past the most superficial keyword-searching recruiters or computer algorithms, it will help you be noticed by any half-engaged human who happens to glance at your CV.
Whenever I see a CV with a GitHub profile link, almost without exception, I look at their profile—even if I’ve already decided they’re a bad fit for the role I have.
For example, if I’m looking for a Python programmer for a Machine Learning role, and I see a CV for an applicant with completely unrelated skills, let’s say a Java programmer specializing in Spring-Boot applications, if there’s a link to a GitHub profile, I’m going to check it out.
One of the most important things a CV can do, is to get a hiring manager to pay attention to you long enough to make a positive impression.
A GitHub profile link can easily be the difference between an early rejection, and an introductory phone call.
A Head Above the Rest
Apart from just getting noticed, a GitHub profile is a great way to show off several skills and attributes that simply cannot be conveyed through a CV. Every one of these can make you more attractive to a potential employer.
- Minor bug or documentation fixes or bug reports, demonstrate that you’re interested in helping others.
- Continued contributions over time to the same project can demonstrate persistence.
- Experimental and hobby projects can demonstrate your curiosity and interest in learning new things.
- Contributions, or even just stars, on a variety of projects can help demonstrate a curiosity that is very important to most hiring managers, especially early in your career.
- Contribution or interests in niche or specialized projects can help reinforce a specialization, which can be valuable later in your career.
- Demonstrate good habits or peripheral skills—things not directly related to your code, per se, but which are valuable on a coding team. Things like proper unit testing habits, familiarity with CI/CD, writing good commit messages, and even using pull requests on your own projects.
- Contributions to larger open-source projects can often be a strong indicator of working well with a team virtually and asynchronously—two skills that are more important now than ever.
Let’s talk about code
I like my technical interviews to be about code written by the applicant.
“I was intrigued by your decision to use GraphQL instead of REST. Can you tell me why you made that choice?”
When the candidate has a public profile I can view, you can be sure I’ll look at it first, and will ask related questions during the interview as well. Without such examples of code, this usually means asking the applicant to do a take-home coding challenge.
Simply having a broader sample of code from the candidate gives me a more accurate impression of their skills, interests, and aptitude. A public profile also gives me more of a sense of the “real” person interviewing. As an example, if I see unit tests in a coding challenge, it’s not clear if the candidate normally writes unit tests, or if he just did so to impress the interviewers. If I see unit tests in a public repository, though, then I have much higher confidence that unit testing is part of their daily routine.
But just as important, the more information I have about a candidate before the interview begins, the more focused the interview can be. A typical interview lasts perhaps an hour, and this is not enough time to answer all of my doubts about a candidate’s technical skills, soft skills, team dynamics, and work ethic. With more information at my disposal before the interview begins, the more impactful the 60 minutes of the interview can be, and the less likely I’ll be left with important lingering doubts when the interview concludes.
Icing on the Cake
If the pinnacle of GitHub-profile-as-hiring-aide is being actively poached by a company because of your l33t skillz, the next best thing is being able to fast-track parts of the interview process.
This should not be your goal, of course. At least not at first. But it does happen. From skipping a normal coding challenge to jumping past preliminary interviews, I’ve seen this happen from both sides of the hiring process, and it feels great when it does.
Where to Begin
If you’re still reading, I’m going to assume that you’re convinced of the merits of having a public GitHub profile. But where do you begin?
This should not be a daunting task. If you don’t already have a public GitHub account, go create one now. It only takes a moment.
Then with your GitHub profile in place, the best strategy is to make it part of your regular routine. And by that I don’t mean setting aside 20 minutes per day or per week to tweak your GitHub profile–I mean start using it as a tool in your daily work. More on that in a moment.
Make it Professional
Before I dive into how to use your GitHub profile to help land a job, let’s talk about the profile itself.
As with any social media account, you’re able to display some information about yourself on your GitHub profile, although on GitHub, only basic information is customizable. But you can make it work for you!
To customize your GitHub profile, while logged in, visit https://github.com/settings/profile, or follow GitHub’s instructions.
There are a few key things I suggest focusing on:
- Use a professional-looking photo. I don’t mean it needs to betaken by a professional photographer, but rather that it conveys the professional image you wish to convey. I use the same photo that I do for my LinkedIn profile. My wife took the photo on her mobile phone, but I like it so I use it.
- I still use a funny nickname (flimzy) that I chose when I was in high school, but I also display my real name on my profile. I suggest doing the same, unless you have serious privacy concerns (in which case a public profile may not be for you anyway!), or nicknames appeal to the kinds of people who may want to hire you.
- Consider what your Bio should say. It’s free-form, so you can include (almost) anything you want–just no HTML or markdown. Mine just provides a URL to my GitLab profile, for additional contributions I’ve made. You may want to include something about your interests, that you’re looking for work, or anything else you think is appropriate. My advice: Don’t sound like a salesperson. Let your profile speak for itself.
- You can include the name of your current company, your location, email address, and Twitter account.
- Link to your personal web page, CV, LinkedIn profile, or somewhere else that others can learn more about you, and contact you if they want to hire you. While it may be rare for someone to find you on GitHub, then offer a job, it has actually happened to me. In 2015, Google, in fact, reached out to me after finding me on GitHub (in the end they didn’t offer me a job, but they did fly me to Mountain View first!)
- And finally, any GitHub organizations you’re a member of, can be included on your profile. This will often just be your company (assuming they use GitHub), but could also be open-source projects, or even your own organization (more on these later). See GitHub’s instructions on how to publicize or hide your organization membership.
Making GitHub Part of your Work
Now you have an empty GitHub profile. How do you make it shine?
The following tips are roughly organized according to effort. Practically anyone can implement at least some of them. The later suggestions will be more discretionary, depending on your interests and time.
Star interesting projects
Whenever you run across a GitHub project that piques your interest, “star” it. Your starred projects appear on your public profile, and if nothing else, they provide recruiters and hiring managers an indication of what sorts of projects you find interesting.
Follow interesting people
GitHub also allows you to follow interesting people, and these people will appear on your public profile, as well. In addition to signaling to the world whom you find interesting, when people you follow make contributions to their projects, you will receive a notice on the GitHub home page. It’s a bit like a miniature Twitter or Facebook feed, for coding projects.
Become active on other projects
You don’t need to contribute large swaths of brilliant code, to begin contributing to other projects in a way that can have a positive impact on your reputation. Start small. Here are some simple ways you can contribute to public projects without coding, no matter the stage of your career:
- File bug reports. I’m amazed at how often a work colleague complains about a bug in some open-source project, such as an NPM module, but does nothing about it. It typically takes only a few minutes to file a bug report, and you need no special knowledge to do so.
- Provide documentation fixes. Typically when using a new project on GitHub, the documentation is the first thing you read. If you find the documentation is confusing, missing details, or is poorly formatted, it’s easy to create a pull request. And this requires no special technical knowledge. My very first PR was a documentation fix. My documentation contributions for the CouchDB project eventually lead to my nomination as a member of the CouchDB Project Management Committee, which looks great on a CV—without ever having written a line of Erlang!
- Offer support. Many GitHub projects use GitHub Issues for support requests, not just for bug and feature requests. If you find yourself using such a project, you can chime in now and again to help anyone seeking help using the project.
- Contribute to design discussions. Many feature requests, and some bug fixes, go through a period of discussion before they are completed. You can contribute to these discussions, even if you’re not qualified or interested in providing code for the solutions.
Also, no matter the stage of your programming career, you can use your GitHub profile to showcase your personal projects.
- Use GitHub for all your code. Even if you’re still in school, you should keep all of your code in version control. Aside from all of the excellent utilitarian reasons to do so, it’s also great practice for your work.
- Make all possible projects public. Any time you write code that does not contain sensitive information (i.e. the answers to a school assignment, or company secrets belonging to your employer), and for which you own the intellectual rights (i.e. not code your employer owns), you should consider putting it on GitHub. Don’t be ashamed of publicizing half-finished or experimental projects. One such project I have was asked about in an interview, that led to an offer.
- Follow best practices. Even for my personal and hobby projects, I pretend I’m working on a team and create pull requests, conduct code reviews (of my own code), practice good Git hygiene, use CI/CD, and other solo devops practices. I encourage you to do the same. Not only does it make your code easier for others, in the event that one of your projects becomes popular enough to attract other contributors, it’s also good practice for yourself. Perhaps most important, it’s a strong signal to future employers that you know how to work with a team. I’ve had more than one hiring manager comment on the fact that I do PRs against private projects, so I know it leaves a good impression!
Of course, providing code contributions is also great, and you should strive to do this, especially as your career advances.
- Follow up bug reports with PRs. When you find yourself submitting a bug report, if you have the knowledge and skills to fix it, contribute a pull request, too. Or maybe more than one PR, if you’re not sure of the best solution, as I did with this bug report, and two possible solutions (one, two).
- Contribute forked fixes upstream If your company keeps forked copies of bug-fixed code, contributing those fixes back to the original project both improves the original project, and reduces your company’s patch management overhead. Some of my first bug-fix PRs were of this sort. Of course, make sure your company permits this before proceeding!
- Fix other people’s bugs If you find yourself with some spare time to hone your hacking skills, rather than wasting your time on HackerRank or other such sites, consider finding a previously-reported bug in a project you use, and try your hand at fixing it.
- Create new features Contributing brand new features is very rewarding in its own right, but also shows a high level of commitment and engagement to hiring managers.
Sharing your GitHub Profile
Now that you have a GitHub profile, and are well on the way to making it shine, what should you do with it? Broadly speaking: Spam it all over the place! (Within the confines of taste and reason, of course.)
I link to my GitHub profile at the very top of my CV, right next to my email address and phone number. I encourage you to make yours prominent, as well.
I also add links to my GitHub profile anywhere I have a social media presence related to my profession. Try to think of any place that someone might run into you in a professional capacity, and be curious about your technical abilities. Some places to begin, and links to my examples
- LinkedIn allows you to specify arbitrary website links, but the feature isn’t very obvious to visitors. Consider adding links directly in your About section.
- StackOverflow (see mine), and other StackExchange sites related to your professional niche are a natural place to be noticed by people interested in your skills.
- Your personal blog (see mine), or blog profile if you use a platform such as Medium or Blogger
- Twitter, Reddit, Quora or other social profiles, if you use them for topics related to your profession. Some (such as Twitter) only allow a single URL–I have mine pointed to my blog. Others only allow free-form text, and not specific links. Make the best of what the site offers.
I hope I have inspired you to invest a small amount of time in pruning, or even starting, a GitHub profile to advance your career. I would love to hear what other tips and techniques have worked for you or those you know. And if an interviewer asks about your GitHub profile after reading this, please let me and the other readers know in the comments!
Editing contributions by Mitchell de Rijcke