Reading Github profiles doesn’t have to be difficult. If you are sourcing technical talent then you have at one point or another, looked at a candidate’s Github profile and said to yourself: “Ok, now what?”
Defining some terms
People confuse these terms all the time, so before we get started, let’s start with some definitions:
Git is a version control system, which means it is a program used to store and manage source code.
Github is a business that is a hosting platform for Git projects, and has a social network on top.
Open Source is an ideology of making software in which you openly share the source code of what you are building, usually for free. What this means in practice is that many software developers collaborate out in the open, and most of them do it on Github.
An open source developer is any software developer publishing source code to open source projects.
Commit
A commit is a single chunk of work. You can see the author’s name and the date, as well as the lines of code changed. This is all public.
Repository (or repo)
This is a single project of source code in git. A repo has a log of commits that have been pushed to it and you can read through this, the information is all there so you can track changes over time. A repo has branches where each can have their own history and lineage. The default and usually main branch is called “master”. Typically, all finished code is merged into master.
Fork
A fork is a clone of a repository. This is important to understand because you normally fork a repo before contributing to it. So if you see a developer has forked the main React repo it might mean that they are going to contribute to it. It might mean that they already did contribute to it. It DOES NOT mean they wrote React, or they own it. A fork is just a copy. You can tell a fork by the fork icon:
Pull Request
A pull request is the method that a developer who has forked code and edited it on their fork is able to request back to the owner that a change be made. In the pull request you can see the “diff” which is a view of the differences in the code they are adding/removing.
Readme
A readme is a file that you should read first when you open up a code repository. A good open source project usually has a Readme with an explanation of what the project is for, where it is published and some documentation about it’s usage. This helps people get started using and sharing the project.
Okay, okay, so how do I look at Github profiles?
A developer that is active on Github and is an author or contributor to a major open source project is likely to be highly experienced as a software engineer in the language of the project. So, in theory you can look at somebody with an active profile and see how popular their contributions are and make some basic generalizations about their level of skill.
The inverse is not true, however. Not every engineer uses Github, and not everyone is even contractually allowed (per their employer) to participate in open source. So a developer with a strong open source authorship background is a strong signal that you have a very good developer, but a developer with little or no open source work essentially tells you nothing good or bad.
Assuming they are active, what do you look for?
What you are looking for is contributions to major projects. Basically, you want to see someone adding code to a repo with a strong reputation in the community and you can sometimes use stars as a proxy for reputation. If a repository (a project of source code – “repo” for short) has over 500 stars it is probably popular and reputable.
It is also a neutral sign if a developer is creating their own repositories (not forks – I explain below), and contributing to them regularly but they have no stars and no readme explaining what the code does. You can’t really tell what is going on unless you read the code.
Inspecting history
You can see what people are doing based on their history. It is good if you see a lot of pull requests to popular repos. It is good if you see lots of commits to a repo with a high number of stars. If a developer has pinned a repo to their profile and you go to the “insights” tab of that repo, you might expect to see they listed. At least you can search their profile name and see how much they have actually contributed.
Examples
We can start with my own Github profile:
You can see the first pinned item is something called target/react-native-svg-parser. You can see it belongs to someone else (it was open sourced by Target while I worked there) so you really need to go look at the repo to see my contributions to it. If you did, you could how much of the code I authored. Each repo has an “insights” tab where you can see this stuff.
Next you can see the other projects that I own, most of them have very few stars. This does not tell you much unless you can read code.
Finally, on the right side you can see some repos I have linked. These are things owned by other people but I have contributed to. But, in truth I have made very few contributions to each of these. You can go look them up. Jasmine has 15k stars but I only made 1 commit to it.
What can you conclude? I am a real developer and I have some experience in JavaScript and React it seems, but you may not be able to make any other conclusions.
Okay, let’s look at a very well known open source developer:
Note: I blurred out the contact info as a courtesy, but this is all public info. If you have a Github account you can see anyone’s email.
His profile looks similar. Let’s look at the first pinned repo. It is owned by someone else but it has about 38k stars. That would mean it is extremely popular and highly regarded.
Okay, let’s go check that out.
In the insights tab you can actually see that he is the number one contributor. So this is a very strong signal he is well known and well regarded in the industry and is a capable engineer.
Activity History
The activity history is a somewhat decent indicator that a person is an active developer, but again the same caveat applies. It can be a very good tool to spot a junior developer and verify that someone has been active in open source if that is what you are looking for. You can see mine here- basically you can see some activity of me doing things on various open source projects.
Faking history
I once interviewed a developer who was a bootcamp graduate with a fake github history. He said he had seven years of experience but when we actually sat down to interview him he could not answer basic JavaScript and CSS questions.
You can create and fork repos and write whatever you want into the git history. Git, the version control system that github uses under the hood does not prevent you from changing history and changing dates.
This guy’s history went back years but when you looked at it this was all just junk he had forked and the history was re-written.
This is why I say if a person has activity and projects on their Github, it doesn’t really mean anything. They only thing that is a useful signal is if a person has commits going into a major open source project. You can’t fake this on Github.
Using Profile analyzers
There are some pretty cool open source projects that analyze what languages developers are working in. As a recruiter this can be a useful tool to understand someone’s activity in open source.
I’ll run this one against my profile. I’ll tell you now, I mostly work in JavaScript and Java. I have done a fair amount of other random stuff in other languages too but this should reflect my JavaScript and Java work if it is accurate:
Look at that, it actually worked pretty well! When somebody has an active profile, sometimes you really can use this to get an idea of the kind of code they work on.
In Summary
It takes a little bit of effort to really understand what is going on in the Github interface, but it can be well worth it to get a better understanding of candidates.
Doing this kind of research can be time consuming for Sourcers and Recruiters. It may feel like you don’t have time to do this, but it is well worth your time to go through a candidate’s Github profile to understand if it can tell you anything useful.