Ask HN: What do recruiters look for in a GitHub profile?
I've submitted a fair amount of job applications that often request for a GitHub profile.
I'm however convinced most don't look at it or only take a cursory glance at it.
What do recruiters look out for?
225 comments
[ 2.0 ms ] story [ 240 ms ] thread* I want to see thoughtful README files. If the README is whatever was generated default by the framework and not edited at all, that's a huge groan and turn off and you lose tons of strength (credibility) as a candidate.
* I want to see your code looking pretty. Consistent indentation, run through a linter, good comments, and so forth. Would I be able to contribute to and maintain this code?
That's pretty much it. The most important thing that companies want to see is employment history, either at brand name companies or somewhere where you've already been doing the job they're hiring for.
It’s a personal Github profile. Why would anyone add thoughtful readme’s or a clean coding style if they’re the only contributor?
I mean, those things are great of course, but not sure if I’d expect it on Github.
1) Why the code looks so unconventional
2) What you do in your spare time.
- It is the default.
- Free private repos are new and no one is going back and making things private.
- If you are working with someone it is many times easier to make it public.
- You want to share code with someone, public is easier than making them a collaborator.
Honestly I don't think a lot of people, if any, are reading the stuff I have on GitHub.
This profile is my personal space where I can put any junk I want to. When you're a recruiter randomly looking at that profile, you won't know the context. If you want to know the context, ask about it. It's not my responsibility to provide it in my personal space.
(plus, what I do in my spare time is the last thing the recruiter should be interested in, unless I mention it to them myself)
Ok, but now you can.
> people dump stuff there for reasons other than explicitly wanting to share it with the world or show it off.
Maybe, but that doesn't change the fact you are sharing it with the world and you are showing it off, and if you put a bunch of sloppy inscrutable code on your GitHub, people are going to assume you tend to write sloppy inscrutable code, especially if you don't contextualize it with a Readme. That's just the reality of it. The real big assumption here is thinking people aren't going to judge you by how you present your work online.
Given that I don’t, and am in a position to hire people tells me this isn’t as hard and fast as you present it.
Im sorry, but wouldn't most developers have a large amount of code that fits this description? I likely have several mB of hacked python and bash scripts that were only intended to run once. But, I kept them in a repo because I occasionally would refer to an old script. But expecting a readme is a bit much, most of those scripts were lucky to get a descriptive file name, much less documentation. I hate doing documentation professionally, I'm certainly not stressing over it in my free time.
Personally one thing I've learned over the years is when it comes to referring to old code, having spent a few minutes writing out a description on how to run and configure it is a net time saver in the long run.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
The question before us is, how do recruiters judge them?, and the answer one has given is he or she looks at style and clarity in code. Others have come back responding that's not fair or relevant, but that's the reality of putting things into the public sphere; you are judged whether you like it or not on terms that you don't get to dictate.
Look at it this way: when you go out and about to meet someone, you might get all gussied up to present yourself in the best way. But when you go to the grocery store, you might not have done your hair and makeup, maybe you might be wearing day old sweat pants. If someone catches your eye at the grocery store when you're looking like a slob, your chances don't improve just because you put your best foot forward last week at the club.
If you have a project that you didn't care enough to write cleanly, or even document in the most bare minimum of ways (a helpful README to contextualize the code) then why are you even putting it online?
If I put it online for a different intended audience then the question "how do recruiters judge them?" is beside the point.
I am well aware of the difference between git and GitHub. I alluded to some projects that I don't put on GitHub. Let me be explicit in stating that just because the project isn't on GitHub doesn't mean that I don't keep it in a git repository (or other version control, for certain employers). This has nothing to do with confusing git and GitHub.
I have a repository with 4500 stars, and hundreds of thousands of visitors. Not one person has ever commented on the quality of my code, but many people contribute. Back when I had 100-200 stars, potential employers were impressed by the popularity and rarely commented on the code either. When I got any comments at all, it would be questions like why did I decide to do something one way and not another. No judgment there either.
Bottom line: nobody will ever judge your code if it's public, unless you work very very hard for it.
But this whole thread is about people reporting that they do just that for recruiting purposes.
As a developer in a professional context you'll hardly ever work alone or be the sole contributor.
Even if you use a GitHub profile just as your personal code repository code still is communication, even if it's just with your future self.
Therefore communication skills are crucial. A well-thought-out README file and consistent, readable code help others to understand your work. These aspects often are more important than what the code accomplishes.
Working, even efficient, but unmaintainable code is a risk. Ultimately, code is a precise specification of what the software at hand is supposed to do. If that specification is hard to understand it'll be much less useful.
The problem is when others assume this on your behalf. I would take a lack of proper readme as a signal that the repo isn't intended for viewing and judgement by others, not as a signal that the candidate has poor communication skills. If the repo is for a library that the author has published and is marketing for production use, then sure, but I'd wager that does not represent the vast majority of repos on GitHub, and to assume otherwise is foolish in my opinion.
Nowadays unless you pushed your profile and repos hard in the resume or interview process, I couldn't care less if the rest of the interview went fine. Worst case scenario they're "forced" to write good documentation as part of the job - not everything we do at work is natural or fun for us.
If a developer writes sloppy code when they're doing it for passion, then that doesn't show them at their best. Of course we all have repositories, tools, or code, that was just thrown together to solve an immediate project but in general I'd expect something that is a labour of love - not a project for work - to be something that they'd put more effort into.
I think the obvious thing to do is create a showcase profile and a scrappy scratchpad profile. keep the former clean and polished
If I see a tower of inscrutable Haskell on someone's Github, that is a great thing: both that they have the urge to do it, and the good sense to scratch that itch away from the company's codebase.
But on the other hand I'm no employee and don't know the "virtues" employers look for, haha.
Do you ignore all my half-done prototypes and junky hacks and experiments?
Toxic and off putting. You put too much weight on relatively minor things. It’s preventing you from fairly considering the rest of the candidate. You could be the one to teach them to do READMEs well.
1. A developer who doesn't respect himself first and foremost to write a README/maintainable code so that his future self and others can have an easier time.
2. A developer who cares about communicating his work to himself/others and making the environment easier for everyone to work for the future.
Right.
Developers are at various stages in their expertise when they go looking for jobs. READMEs are nice but try not to let yourself get tied up with emphasis on a few signals that document the whole human. README quality is a pretty weak signal.
If you bring up the README in an interview, and the dev cannot find any motivation or acknowledge that it could be better, then maybe you might have to pass on them. My problem with your methods is that you get to this point without even opening a discussion.
READMEs are a relatively teach-able skill and in pretty quick fashion. Maintainable code, much less so obviously.
It's a fantastic signal of what the quality of the code will be. Lack of a README indicates many things, including unmaintainable code either via lack of experience or rushed work.
But hey talk is cheap and you seem to know a lot - so how about you link an open source project you've published ;)
I wrote tech docs explaining the jungle of IT systems that we were relying on at a hospital I worked at, and sometimes that included diving into old code. These were usually much longer than READMEs.
Having a README wouldn't have saved this code from needing to be refactored. Nor would it have really changed my opinion of the code. It hasn't been a reliable signal.
The hard part about documentation is keeping it up-to-date and accurate and not filling it with extraneous details and going off on tangents. A lot of the READMEs are written for quick bootstrapping and that isn't going to reflect much on your code quality. I care more about good documentation and that's harder to write than a README and a much better signal.
I don't have time to work on open source but it's clear my experience has been vastly different than yours and I doubt either one of us are going to come up with a peer reviewed reason for either side.
Turn this around and say "this repo has a README! surely it's really good and so is the code" and it makes no sense to give that much credit for something that really isn't impactful beyond the first few days of using something.
I've seen it too many times, exceptions are rare.
A good readme is concise, it offers key 'bring me up to speed as fast as possible' information, nothing more. It's not documentation.
A good readme should include a quick bootstrapping info, but it's not enough, it should have a concise summary overview and list any important gotchas. As well as provide the procedures for builds/releases if apply. Links to relevant docs if exist are fine if the information becomes too large for the readme.
> Having a README wouldn't have saved this code from needing to be refactored. Nor would it have really changed my opinion of the code. It hasn't been a reliable signal.
See I read that and figure that it was actually a perfect signal - since that "bad unmaintainable code" lacked a good readme.
It's like the Van Halen requiring Brown M&Ms at their concerts https://www.snopes.com/fact-check/brown-out/ - I've found the README is one of the best indicators of the level of detail a person applies to their work.
> it makes no sense to give that much credit for something that really isn't impactful beyond the first few days of using something.
This is the attitude that I wouldn't be looking for when recruiting - a README has a ton of use, for helping bootstrapping new people to the code base - to even helping yourself if you do some maintenance on an old project and don't want to spend more than the minimum time necessary.
It's this forethought I'd like to see in a candidate, and that 99.9% of the time shows in the quality of the readme.
https://news.ycombinator.com/newsguidelines.html
Anything beyond that is unfounded bias IMHO.
(I have a lot of personal projects and I've conducted interviews)
If 4 ppl disagree with something No one else is even able read it??
We shall all only say that which no one will disagree with.
The popular opinions win.
The users with unpopular opinions get downvoted/censored and are either banned/leave.
Leaving one opinion behind.
Moderators also a play a huge part in this - which is why it's only an illusion of democracy.
I wonder if it would be possible to create truly neutral discussion platform that doesn't end up as an echo chamber.
Google is known to can applications if there are typos in either the resume or cover letter. Supposedly there is a statistical correlation that backs this. While this seems arbitrary and absurd it is important to know it's a thing so you can at least work around it.
So what am I looking for? Clean code that's more than just boilerplate. Comments, good logic, some sense of purpose. There can be garbage repos in there, too, but I expect there to be some that show off who you are.
In short, they want to see who you are. If your Github isn't showing who you are, you're not helping yourself by providing it to the recruiter.
It's almost like a dating profile. You use the items as jump-off points to start a conversation and get to know the other person better.
That's a good description!
I'm riffing on a comment chain elsewhere in the thread about candidates who provide links to empty Github profiles.
Reading the comparison to online dating just makes me think of the dating profiles out there that have a couple of photographs, but nothing beyond the line "Just ask" in the summary/description field of the profile holder.
But agree, it's an interesting and apt comparison I think.
But that’s just my opinion.
Is this generally true?
If the profile is empty, I close the tab and find something else to talk about. I will never, ever penalise a candidate for an empty GitHub profile. So many people just do not have time for open source and that’s totally fine.
GitHub activity helps lubricate conversation at interviews, but it should never be taken as anything other than a superficial representation of the candidate’s ability or experience.
If you have something really notable in your GitHub account, maybe it should probably be on your CV/resume, too!
It feels to me like having a blog site and only putting notes, scraps and drafts in it. Maybe there’s some functionality i’m not seeing?
But anything on your resume or linked from your resume is fair game.
If you haven't been able to meaningfully participate in open-source work there's no penalty, but don't link to an empty GitHub page on your resume.
Granted, it might be less prudent to skip some fields than others, of course.
Nobody is a expert in everything, of course, but if you specifically put "TCP/IP" or "OOP" on your resume, you better be able to explain TCP vs UDP or class vs interface (both real examples from real phone screens I've done).
You could probably drop education from it if you have 5 or more yoe.
Frankly you could do this in one 5 or 6 line paragraph without a resume
I never read them anymore. It’s such a waste of time. Totally useless compared to our phone screen templates.
For example, I might use Chef daily. If I put it in a list of other tools I use it can mean I know how to use it for my very specific use case, but usually it is taken as "this guy thinks he contributes to the Chef source code and knows every bizarre scenario involving it" by some tech screener trying to get his rocks off.
I 100% blame every tech recruiter for furthering this mess.
When I am looking for a job, I send my resume to my curated list of local recruiters followed up by a phone call. We talk about what they have available and what I am looking for. I have enough of a history with them that they make sure that my resume shows up on top of the hiring managers stack.
My success rate from submitting my resume to being invited to an in person interview is 100% unless the req was closed. My non rejection rate is close to 100% (I’ve taken myself out of the running because I found a job.)
Mostly LinkedIn these days. I only got really serious about my career about 10 years ago. Before that I was your typical “dark matter developer” working at one job for almost a decade.
“Hey, I am not looking to make a move right now/I’m looking to make a move in $x months. What are the trends you are currently seeing and what are the salary ranges? Send me a list of open reqs. I might know some people who are looking”.
This will also let me stay up on market trends and know which projects to focus on and what to emphasize on my resume.
I took C and C++ off of my resume years ago even though I did both for 12 years and I still know all of the ends and outs of C. There is going to be that one old geek (I’m 45) who wants to ask me some obscure question just to prove how smart he is. I definitely leave PHP and Perl off. I don’t want to show up on recruiters search results looking for WordPress developers (I never did WP).
I want to keep the conversation and the interview focused.
This is java specific, that's not OOP.
C#: https://docs.microsoft.com/en-us/dotnet/csharp/language-refe... TypeScript: https://www.typescriptlang.org/docs/handbook/interfaces.html
On the other hand, it's hard to imagine someone senior enough (in terms of experience, not years) who haven't ever hacked a FLOSS dependency to do something it originally didn't.
Of course, it could be that the source wasn't on GitHub, or that author did effort to persuade upstream into accepting their changes and then repository was removed, or that the code is in the company's internal systems (which can be a good idea for various reasons). However, I'd say that most typical scenario is "you see it, you find it on GitHub, you fork it, patch it and leave it there - just in case". I have a bunch of those, and I'm just archiving those repos when I recognize they're not relevant anymore. It's not like I'm paying for those - and having an ancient fork had helped me once, when someone from my old place had a problem and asked me if I still remember how things worked there.
I mean, many (most?) of software engineers are directly working with free software every day. And, sadly, world isn't that perfect this software provides everything one might need without any tinkering. :) So, in a certain sense, "no time for open source" is a little bit questionable.
But, yeah, there are valid reasons why a good engineer may not even have GitHub account at all. Unless you're drowning in a torrent of great-looking resumes (and you're not GitHub Inc.), no harm in not making GH account a mandatory requirement.
No, I find that pretty easy to imagine.
I think there's many more working on proprietary software, we just naturally don't hear about it due to its nature. Open source is prominent only because it's public.
E.g. I open Slack (a random pick - it's open on my desktop right now), a proprietary software app. And in the "about" section there's a huge list of FLOSS libraries they use: https://slack.com/libs/desktop
Moreover, I'd say, every website out there (and web is a giant niche) uses lots of FLOSS components.
And for GitHub contributions, I meant that once in many years there happens to be a library that's out of date but otherwise useful, or lacks some nice feature.
I can think of plenty of developers working in non-OSS (either internal/nonlicensed or proprietary licensed) shops who, even if they have and work with OSS dependencies, and even if they might hack on them for the sake of the projects they work on, have never, by (or at least as a result of the requirements of) employer policy, contributed a thing back.
Of course, that's because I've spent most of my career in that kind of environment, which is why I've got very little on my GitHub none of which has a direct relationship to my paid work.
We work in GitHub, and of those who use their personal profile for work, all of them have "empty" profiles and no meaningful OSS contributions. They spend their free time with their family and in other hobbies.
People who hack on OSS for fun are usually good developers, but good developers rarely hack on OSS for fun especially once they get older.
I meant, using FLOSS libraries for the actual job, during normal work hours. Depends on the industry, of course, I guess.
Here are some things that I check for in a GitHub profile, as a hiring manager and as a recruiter (hooray startup roles!):
1. Repos that aren't just forks. I've seen plenty of profiles where the majority or entirety of repos are forks. Unless there's some annotation that talks about contribution to those projects, I assume that those forks don't contain any actual development.
2. Code past the boilerplate. A lot of projects start with enormous boilerplate, checked-in node_modules, and large-app scaffolding. The README should have a pointer that says "actual code is in src/app/site" or something, otherwise I click around for where the commit message is something other than "initial commit".
3. A real README.md. Bonus points for README.md in the subdirectories.
4. A "real" photo of you. LinkedIn profile pictures tend to be very professional and buttoned-up (sometimes literally). Most GH profile photos in my experience are a closer of the real person though. You're more likely to see a casual photo, a hobby, someone's dog, a photo of their art, etc. When that person is working with you, they're going to act more like their GitHub profile photo than their LinkedIn profile photo. Conversely, when I don't see a profile photo, that's concerning.
5. Nothing too boring, or too creative, in the name. The era of screen-name judging is not over, and you will get judged based on your GitHub handle. John35082192 makes me think that John reluctantly created a GitHub account and loathes using it. XxCodeMurdererGoatSlayerJohnnyXx makes me think that John is a bit of a weirdo, and his code reviews may be... uncomfortable.
6. Stars. If your real repos have real stars (or even forks), that means that not only have you creating something cool, but you've created something useful, and marketed it at least somewhat well. NB: repo stars are not expected for professional-profile style repos, only if you're creating something for an actual OSS community.
7. A real github.io page/repo. Maybe this is the basis of your professional profile, maybe there's a link to a personal website in your profile, but I am interested in seeing how you present yourself beyond which repos you show first.
FWIW, as a woman, I leave my photo off github to avoid the assumptions people make when they know someone’s gender. In fact, there’s research to back that up: https://arstechnica.com/information-technology/2016/02/data-...
Just something to humanize the profile, even if it doesn’t gender the profile.
EDIT: and re forks: surely regular PRs against other projects would also tell you something?
Ever considered how women or non-whites feel about this?
Perhaps you are not aware of the workflow many fs developers use when creating pull requests? You start out by forking the project's repository and create a branch in it where you put your bug fix. Then you submit a pull request using the github UI. End result is that your profile contains a lot of repos appearing to never have had any activity unless you dig into them.
It also appears that you are using candidates github profiles more for finding negatives rather than positives, which is disheartening.
Worth to note: GitHub itself does NOT matter, the contents your profile and you contributions do. Prefer GitLab? awesome! Just don't forget to put it in your resume.
Isn’t that your job as a hiring manager? Also how do you know that their github projects actually work in production? Do you do a through code analysis to evaluate performance bottlenecks or do you do a build-deploy-test do figure that out? IMO if you want to evaluate candidates on complete end to end projects you should give them assignments based your your evaluation parameters and ask them to explain their code/solution
Daily stars in the seize_the_means_by_any_means repository is going to get your resume tossed.
To me, being able to see an interviewee's code is like being able to see an artist's portfolio. Alternatively, if an interviewee can point to mailing lists, code repos, etc, for open source contributions, that also is very valuable.
Some other folks in the comments are saying they use Github, etc, as a dumping ground for projects. Still valuable. In my opinion, that means you're interested enough in the project to at least save the code. Plus, even quick and dirty code can have valuable information. Does this person understand, for example, the common idioms in C, C++, Python, etc? (Specific example, using malloc/free/printf correctly, new[]/delete[], not using for i in range(len(foo)). Simple stuff like that.)
Note a repo containing "this is code where I'm learning this language, this library, etc" won't have the best use of the language, obviously, but will be a good sign this person is learning something new. It's another signal.
Just my opinion.
Consider that your iterable may not be a list, and may not actually have a "length" prior to its being consumed
A couple of times I’ve seen real code and it certainly didn’t hurt.
I think there’s a lot of people like that. Making github a mandatory requirement is strange.
This is the first time I'm hearing about something like this. Why would your employer sue you?
Assuming you have put lot of commitment or hard work in it maybe there’s more to talk about :p. I personally have personal projects I rate higher than previous employment experience so this isn’t applicable to everyone.
In all, I find it to be a fairly poor signal. I get a much better feel for someone from conversation alone, and some well thought out questions about someone's previous projects and workflow usually tell me all I need to know.
They'd use GH to evaluate coding style and as a proxy for skill level.
It was a terrible proxy IMHO, because a lot of the projects or contributions they were looking at were years old. (People change and grow.)
Anyway, if there's a takeaway here it's this: Delete old repos that you wouldn't feel comfortable putting forward as examples of how you currently work. Or refactor the code to match what you'd currently do. Or don't maintain any public GH profile, frankly -- there are plenty of great engineers out there who have a family and no time to contribute OSS.
95% of the times when they respond with "I don't have a Github|StackOverflow profile" they prove to be juniors or time wasters applying for a high salary. That's fine if I'm looking for a junior but they often apply for senior positions.
I trust the data on these two as I consider it to be really difficult to get by as a programmer without decent activity on at least one platform. HAving code out there, IMHO, adds better than any CV. It's just data but it helps me get a clearer view.
But if you have a high amount of applications then statistically it may work for you. Same as throwing half of the CVs in the bin, as you only hire lucky people.
Github and SO data is a conversion point, not a filter. Sure I am also suspicious if no public profile, but never exclude as it often has valid reasons.
My personally github code is a lot more slapdash than my commercial github code. Nearly all of my commits in commercial github repos are private repos so not on my profile except in the activity graphics.
I have worked with and hired really good developers with a great public github profile and with lots of SO points. I have also worked with many very experienced and good developers with no github or SO presence. And I have met people with lots of SO points that I never want to work with again.
But if you got too many applicants you can apply whichever filter you want. It just wouldn't work for me, or my location (London)
I've always used SO as a "read-only" source, and generally when I need an answer to a question not on there I ask on a relevant IRC channel. My github has quite a few OSS projects though.
Do you find there are any other devs like that?
I’ve answered questions enough that I have enough rep to edit review queues, and probably 90% of what gets asked on SO these days is unnecessary.
I’ve been coding since the 80s.
Some people don’t live on social networking - and that is, after all, exactly what those sites are.
You cannot learn new things without asking questions.
damn kids and their internets.
;)
So I guess you weren't familiar with the industry before 2010?
SO is the most frequented place with the least reliable, least trustworthy information on current topics that comes to mind. In fact, all in all it's a very mediocre site (the 'practical programming' parts). Its only merit is its discoverability via search engines. The pearls are few among mountains of rubble. I wouldn't expect a really competent person to waste their time with that.
I wrote the /bin/ps program used by Linux. You might have heard of it. I maintained procps for about a decade. I also did a few Linux kernel changes. That all stopped around 2006 due to having 5 kids and working at a start-up.
StackOverflow and Github were both created years later, in 2008. I still don't have much use for either. Occasionally one will show up in a search for something.
There is no indicator of my struggles. When I had them, I'd walk over to the office of a more-senior developer and have a chat. Back when I started as a professional software developer, the web... existed. It wasn't a place with forums for asking beginner questions. One could turn to Usenet or IRC, but that was often useless. We used to buy books about computer programming by traveling to a bookstore, usually paying with cash.
Someone besides a recruiter? Might give it a glance out of curiosity and for conversation starter material, but if they're overly concerned about what's there or how much is there - you didn't want to work for/with them anyway. Honestly, most people that have been in the industry for any time at all quickly run out of free time and motivation for this stuff, and their github profiles will be rather barren as a result (unless they work at a company that publishes open source software, of course... but that's the exception not the rule).
Mostly overall activity, consistency in commit messages, and actual code and PR.
Now that Github allows free private repositories, if you're planning to use your profile as part of a recruitment process, you're arguably better off only making your best work public. It doesn't have to be your best code, just something you're proud of and are happy to talk about.
This may run counter to normal thinking, but I have no way of knowing the extent to which my assessment is unconsciously coloured by seeing code that isn't representative of your ability, so I worry about the impact of that.
However, there is one thing I look for that will, usually, be a huge negative against the candidate. I have run into many candidates where their github projects are just 100% clones of various tutorials. When a github profile is only full of such projects it doesn't tell me anything different than what is on your resume, and my trust in the candidate goes down.
Other than looking at code quality, I actually look into their commit history and see if they are using the various best practices of git.