Ask HN: What about a GitHub profile tells you a developer is quality or not?

62 points by good_vibes ↗ HN
Trying to learn every day.

59 comments

[ 3.5 ms ] story [ 120 ms ] thread
* Do they have their own projects or do they contribute to others?

* How interesting are those projects generically and in the context of what I would need this developer to do?

* Are these projects actually used by anyone? Are there pull requests, etc?

* Does the developer actively keep working on existing projects or move around? I.E., are these learning vs hobby vs commercial?

* How is their readme? Does it exist? Is it sufficiently complete to convey meaning?

* How is the code organized? Is it reasonably laid out? Do they make use of third party packages and tools? Does it seem like they are re-inventing the wheel?

* Does the code work?

* Is the language chosen the right language for the job? Are they using idioms of that language or more generic ways of expressing loops, vsriables, etc.?

* How extensible is their design? Does it feel krufty or is it a pleasure to read?

* Is the code novel? Are they re-inventing the wheel or are they actually fulfilling a need?

* Are their projects wide and varied in scope and tools?

Those are a few things off the top of my head. Not an exhaustive list.

The idea of someone telling me I chose the wrong language for the job in a hobby project makes me want to delete all my oss code.
Sample size one in a forum...
I do not see how sample size has any relevance. There was no claim.
sounds like a great way to weed out companies you don't want to work for

"I see you choose x but I would say the appropriate choice here was clearly y due to Z"

"I see your hiring process is flawed, good-bye!"

As long as you understand idioms, programming paradigms in general, and good patterns in specific languages (e.g. list comprehension in python, prototypal inheritance in js, metatables in lua, etc.) you shouldn't be afraid of showing off your stuff in X language.

I know good Java developers that have become really good front-ends.

Well Java doesn't have a stigma attached to it like COBOL or BASIC does. What about those of us who have terrible QBASIC code they wrote when they were 14 on their github/bitbucket/etc profiles? I'm not going to hide that; it's public because it's useful. (I intend to dig up more terrible code I wrote and put it up)
If someone chooses FORTRAN for a web app of their own free will, then not only should they not be hired, but they should be executed.
(comment deleted)
(comment deleted)
Here's one take, in order of increasing quality:

1. Participates somehow in popular open-source projects, by posting bugs or updating wiki entries.

2. Opened merged PRs for popular projects that fix bugs or add test coverage.

3. Opened merged PRs that add new functionality.

4. Is one of the maintainers of a popular OS project.

5. Created a popular OS project.

Define popular. For example: No one really uses reactos in production and a significant number of hn commenters are disappointed its not a js framework. Yet I would consider legitimate contributions there to be similarly interesting to contributions to any other OS (Linux, Minoca, BSD, etc). I'm fact, I suspect much of the work to be done for reactos is far more interesting than the work to be done on reactjs, despite the latter being leagues more popular.
I've contributed fixes/updates to GNU Emacs, Make, Less, and Screen. None of those will show up on github.

(Once upon a time I received a lot of random recruitment SPAM based on people who'd "read your github profile" - that all stopped when I moved one of my most popular applications into an organization of its own. Now it no longer gives me good ranking for C++ code. I'm not sure whether to be pleased or disappointed.)

Im an experienced developer who doesn't really have much on my github profile. One or two contributions to open source projects that I've used and a handfull of issues created or commented on. Most of my code is private. I'm not sure what, if anything, someone would take away from that, other than I'm not that active in the open source community.
I know experienced developers that have few or none activity in GitHub at all. So, it depends.

You could find developers that:

1. write good code and are active in the community

2. write good code and are not active in the community

3. write ok code and are active in the community

4. write ok code and are not active in the community

5., 6., etc., (... you get the idea)

So, with number 2, you could see an empty GitHub profile and perceive it as low quality, but that's the wrong perception. See `pyrophane` comment as example.

Obviously on a hiring process a GitHub profile with activity is a great plus, but, again, it depends.

As a hiring manager, I used to want to see a profile that competed with my own (at the time).

Now I've learned that (1) burnout is real, (2) work CAN be intellectually stimulating enough to not create that OSS desire, and (3) eventually your job ends at 5 and life takes over.

With that said, I WISH more developers opened issues on the projects they've used.

All too often I've seen people drop one dependency for another due to an edge-case.

Even a simple issue explaining the problem, providing a test case or sample code would be great as an indicator to how a developer approaches problems and seeks help.

I have had good luck with this approach. I keep my fork but usually the main line fixes. Also I learn about cool CI stuff and obscure platforms I don't worry about naturally.
> I WISH more developers opened issues on the projects they've used.

Tangential, but I wish I had the ability to rename GitHub issue titles on other people's projects, or that at least the maintainers would do this. There's too many "Help thing no work plz assist" that needs to be renamed to a useful description of the problem.

(comment deleted)
I would never take negative signal from a GitHub profile, because for many, many developers, that will not be a meaningfully sized or representative example of their professional output. There exist many employers where you can do excellent work for many, many years and never OSS a single line of it.

I also think that the developer community far overestimates how much "have a good Github" is worth in terms of creating career equity, both because the people who you attempt to influence via it are largely not developers and, to the extent they are developers, are unlikely to spend hours looking at your Github profile trying to extract signal from it. You can probably get superior results for far less effort by writing ~3 good technical blog posts. (Do what makes you happy, naturally, but to the extent that getting well-paying exciting jobs generally makes people happy I'd recommend almost everyone treat having a small number of technical blog posts like exercise, in the "simply too useful not to do" bucket.)

Any tips for what to target in those three technical blog posts? Would something rudimentary like 'how to create your first react application' be less impressive than something like 'how I cured cancer with the blockchain'?
Geez, surely you could shoot for a middle ground: something you have a unique insight on, but is within reason for others to want to learn about.
What are some topics for a technical blog post that you would like to see? I'd consider myself an advanced beginner or a novice intermediate developer. I can't get better if I delude myself about how 'great' I am.
Speaking by as a hiring manager, I'd be very interested in a blog post that a) defines a real world problem you are facing, b) describes your approach to solving the problem and c) provides details of the actual solution. Basically, you are answering a key interview question for me.

Also, I'm not looking for a cure for cancer here. It can be something that you faced in your notmal developer life, or it could be a silly personal life thing. The key is to show me how you go about solving problems.

Thanks! Revamping my personal site and portfolio, thinking of how to best pitch myself as a designer-developer with previous experience as a technician and in sales.

I will try to do each of those for each item in my portfolio to highlight my design thinking and technical acumen.

Quite the opposite. I'd assume the latter is misleading bullshite.
Not at all! Especially since React is super popular right now. People love reading intros into stuff.

As for good things to write about: has anything about your work bother you lately? Are you struggling with a problem that you can't crack? Are you trying to learn about something new and want to elaborate on why you're learning it?

Write about those things.

Noted.

I was at a coding bootcamp for a little while last year and some of the people around me made me feel like I wasn't 'as serious' because I didn't have as much green on my contributions. My rationale: I put a lot of thought into my designs and learn best by Googling tutorials of 'how to build x', it's not always something I care to share in that way. My gut says I should follow your advice instead of worry about 'how lit' my contributions are. :)

This coming week is gonna be a productive one!

You say you would never take negative signal from Github, because the sample size would be too small and non-representative of their normal output, but surely even a handful of projects is a lot of information relative to whatever a company can interview in the space of how many hours?
There is more information there buts it's not useful information until a trusted technical lead goes through all of those projects, and then questions the interviewee about them. And this takes loads of time, and is incredibly hard to standardize.
Have hired and let go of big time OSS developers before, with hundreds of packages they had written or maintained. Ultimately there was no correlation between their impressive Github resume and their ability to work as part of a team delivering product to customers, focusing on what matters to the business.

It seems to me that working on distributed OSS projects with strangers on Github or working on personal projects in one's spare time is a very different experience from how most software development shops are run, so there's only so much overlap there between the skillsets.

It does show you that the person knows how to write some code with no clear scope or deadlines, but that's a pretty low bar for most places.

I think Github is a tremendous resource, but while Github profiles can give a positive signal, they are not sufficient for negative filtering.

Many, especially older developers it seems, only begrudgingly have a profile for tickbox judgments encountered during job seeking. The best developer I ever worked with just didn't care about bothering with a Github profile, and the worst guy I ever interviewed had an expansive profile, including a repo with 80+ stars that was trivial and terribly coded, and our team's conclusion was that he got his bootcamp associates to star it.

At the end of the day it's a private company seeking a profit, and it's a little ridiculous that it's become defacto mandatory for proving you are a good developer, in the same (somewhat annoying and unfortunate) way that FaceBook has become defacto mandatory for proving you lead a social life.

Excellent point. I asked this question based on two experiences:

1.) after attending a coding bootcamp for 6 weeks (didn't finish) and being around a lot of people who believed it to be important to 'job placement'.

2.) after someone I know who first asked to join their startup started to question by abilities because 'your github doesn't have much there. are you sure you know what you're doing?'

Looking back, doing some HN searches, and after reading this thread...the bootcamp community in general sketches me out. And that guy having no technical skills, was not in any position to evaluate my skills.

Haven't githubs new interface made it almost impossible to investigate what a developer has written? For example, on my profile page I have 32 repos. But 29 of them are forks of other projects which I haven't added anything to.
(comment deleted)
You can filter these out actually. When you go on someone's profile, and then to the "repositories" tab, there is a drop-down menu that reads "Type: All" from which you can select other repository-type filters, namely forks, mirrors, and sources (the user's own repositories).

It's somewhat imperfect as not all forks or mirrors are marked as such by github (if, say, it's a fork of a repository not originally hosted on github), but it works in the vast majority of cases.

Nothing.

The presence of a high-quality, well-rounded set of projects in GitHub is mostly indicative of the fact that the candidate in question has the spare time to work on Free Software. That's a lifestyle thing, and not relevant to the hiring decision.

I've never known a developer with an impressive github profile.

I've worked at startups, and banks.

Thats 20 different people at least ... and all pretty good imo.

I think it's a pretty bad idea to try to judge a developer from their github profile.

For the vast, vast majority of developers (no matter skill level), their github profiles are somewhere between "non-existent" to "a collection of weirdo stuff I played around with for a few minutes five years ago that doesn't reflect my professional output or interests at all". It just doesn't have much correlation to anything.

I've got several things on github, but even then it's not really representative of anything. If you look at my profile you'll see that it's a mess of random projects and toys in random languages. But it doesn't reflect how I spend most of my time.

There are a few niche cases where a github profile might matter - like if you are a consultant that specifically works supporting a OSS project and you want to show evidence of that to potential clients. But otherwise, don't worry about it.

Noted. I got this misconception hanging around at a coding bootcamp for a few weeks.

I got a job on my own as a Jr. Developer and all they wanted to see was URLs to things I'd made and explaining to them how I built them.

I want to keep progressing. So I should just focus on making more stuff, describing my process in blog posts, and writing technical tutorials to help beginners get at least to where I'm at?

(comment deleted)
Yep. I agree with patio11's comment. I've had more success due to writing technical blog posts than anything. It's way more useful / beneficial then fluffing up a GitHub profile.

I have several GitHub personal projects in the 1000 star range and literally no one looks at that or cares at all. It just gets me an unpaid side job answering users questions and reviewing PRs.

But people email me all the time about stuff I've written online and that has often led to new opportunities. Plus writing online is also tons of fun for me and a great way to keep learning new things.

This thread has been invaluable. I'll keep this in mind as I rebuild my personal site, showcase my work, and write a few technical articles to help other people get to where I am.

Glad I asked! It's amazing the depth of experience you can glean from here.

Yes, yes and yes! In addition to progressing as a developer, you'll be surprised at how much you'll forget as you move on to other projects and having it written down in a way that you can understand is incredibly valuable.

Its been over three years since I've graduated my bootcamp and I still blog regularly, have multiple breakable toys and keep my documentation up to date. Its saved me more than once!

FWIW, Github now allows you to pin things to your org/profile. Not that this means that a github profile will tell you much, since most professional work remains private.
I don't judge as a developer's quality based on their github profile. What a github profile does give me, is credibility to the claim that they are passionate about software.

When during an interview someone says they are passionate about software engineering and they have a github profile that reflects this, it gives me a reason to believe this person. But, I take the attitude that 'absence of evidence is not evidence of absence'. When another person makes the same claim but with an empty github profile, I don't assume this person is lying. You can usually tell if someone is passionate or not by the way they talk abot their previous projects as well.

That being said, a well-used github profile is not a reason to hire someone and neither is an empty one a reason not to. Some of the best people in the field that I have had the chance to work with had zero, or close to zero, github contributions.

---

From the other side (the 'looking for a job' one), when interviewing with a company I worked for some years ago - they did ask me for a link to my github profile and some open source code I did. But the company made most of their software open source and they believed strongly in OSS. I believe this was done not to judge a person for the quality of the work, but rather to get an idea if the person also liked OSS.

I've been told I have a "good" github profile. What I've found is that it doesn't go very far in interviews.
It's good for getting interviews I think. Most people inviting me to interviews bring up my Github and it gets mentioned in beginning of interviews frequently than not. It's a good "opening salvo". It's a positive if you have it but not a negative if you miss it.
Nothing. IMO, the only thing that a Github profile itself tells me is how often they spend time interacting with Github and writing code.

The code within their Github repositories, on the other hand, can say a lot. But I won't spend too much time perusing it; I'll probably look at their resume, see "Oh, they can write Ruby and Golang and have a Github account", view their Github repositories, see their code, say "Okay, they can write ruby and golang" or "Oh no, they can't" and move on.

I'm amused by all the "nothing" responses.

At Google, a candidate was referred to our team but had chosen to do all his interview questions in Python. This left me unable to discern "Can this candidate write code in C that actually understands memory handling and pointers?". Luckily, he had a GitHub repo for his work on a FUSE layer he had written that demonstrated that not only could he write in C, he also had reasonable commit hygiene (good commit messages, reasonable granularity, etc.).

I would never begrudge someone for having an empty GitHub profile (mine is unimpressive), but I've definitely both decided for and against candidates given the extra data it provides.

Noted. I got the Google foobar challenge a year ago while on a flight to Seattle. I didn't finish it because I was still a noob at the time (it happened when I googled a few things about Angular 2). Will I ever get it again or did I blow it?

I would ideally like to work at Amazon or Google, both companies have had a major impact on my quality of life and I would love to contribute in a meaningful way.

I still get weekly emails for job openings at Google but I've done a lot of adventure travel in the last year between entry-level tech jobs and had to work through some personal issues before I could get back on my 'A-game' for expanding my skillset.

What advice/tips can you offer me about making a quality portfolio site from what you've seen at Google?

Something other than github. Especially self-hosted gitlab or similar.
It depends on the size of the company.

- big companies: it's all about eliminating fake Resumes. they only use your web presence as a background check since they already have their own hiring process in place to evaluate a candidate (whiteboarding crap). In other words, they ain't care

- small companies: they will dig deeper since they don't get many Resumes on their desk. In this case, it will be about code quality, complexity, comments, design, etc. think of it as a coding assignment. It's much faster to pretend that the assignment was a project you've already worked on in the past. The evaluation criteria are the same as a coding assignment.

Unfortunately, the signals for hiring you get from GitHub aren't great. It could help more junior developers to show off some things that they've built if their initial resume doesn't have the experience people are looking for.
Nothing at all. Some of the best developers I have ever worked with are not interested in writing OSS software in their spare time. They want to spend time with their family instead. I feel the same way myself.