Granted, this seems like a case that's less malice and more adequately explained by stupidity.
If you have already somebody's resume, GitHub provide clues and maybe a bit of evidence for your assessment of the candidate. Older, busy working software developer? Expect not many projects, possibly an intermittent commit history. Most GitHub projects are just unfinished exercises, so a workng project is unusual, and a clue that the candidate is also unusual. It's not scientific, but it's evidence that you can use, alongside the resume, and any communication with the candidate.
I would also check they PR, issue and comments, to get some idea about how they work with stranger; what are important to them when they suggest ideas, contribute to existing code base; how they reply to critic or question from project owner, etc.
Also, just my opinion, most of us - software developers - can't live without OSS. We should contribute back when we could. That's why I usually prefer resume with a non empty Github profile than the others.
As your professional accomplishments increase, the value of GitHub profiles (for most) as a marketing tool diminishes dramatically, but can still be helpful.
For developers at any level, repos are a good conversation piece for interviews. The interviewer can ask why choices were made, what the candidate might do differently now (shows growth), and start interesting technical debates.
I always ask my clients (I'm a resume writer and career consultant) if they have a GitHub profile if I don't see one listed, but I don't always include it on the resume. New entrants to the industry are not exactly punished for not having one, but it's becoming an expectation. This is different than expecting an older adult that may have life responsibilities that prevent (or simply no interest in) coding outside work.
Even within a larger organization it's possible to use side-project examples as a demonstration that you're ready to move from a team that uses one discipline/language to an unrelated team. While a large organization might be willing to move a senior developer who's a less-perfect-fit from a different department if they've demonstrated that they can be trained/learn what they need to know, it's a lot easier if they can demonstrate that they're a lot more than a "less-than-perfect fit"
In a genuine passion project, I'm having fun. If you're checking whether I've dotted the Is and crossed the Ts in terms of testing, documentation, edge cases, etc. you'll find that I haven't, because the whole point of programming outside of work is release from the tedium of professionalism and an opportunity to go straight for the novelty and joy of making things work at all.
For projects specifically intended as portfolio pieces, I'm not sure how I could design software appropriately (or evaluate candidates' designs) in the contextual vacuum of "needing something to put on Github."
While I agree that they're less important, especially if there are commercial products/accomplishments that the candidate can point to, I wouldn't say that they diminish dramatically.
For a candidate that has years of industry experience, a look at a GitHub profile can serve as a solid metric for their growth as a developer. I want to not only know that a developer "has been doing something for a while" but that they're honing that craft. For me, personally, I want to look back on anything that's 6-months old and be able to point out everything that I'd do differently[0].
It can also serve much the same purpose that it does for grads/bootcampers. It gives you an opportunity to show off your knowledge in areas that may not be covered by your professional work -- maybe you're doing mostly back-end/systems and want to demonstrate knowledge in React/TypeScript/Angular/front-end. I knew a guy who's repo is filled with rust projects. Professionally, he was a (very capable) Java developer[1]. His rust-filled repo landed him an interview for a job doing mostly systems work in C/C++ with a hope toward moving things over to rust where it made sense ... and no Java work[1].
> I don't always include it on the resume.
I don't include mine, either. The best advice I received on resume writing was "It's to get you an interview, not a job", so I treat it as marketing copy. My github repos (I have a few github accounts) contain a lot of code that I shared because a few others wanted it and Github was the most convenient way to do it -- but that code was hastily written and was never meant to demonstrate my abilities. Some of it -- were it encountered by someone who doesn't understand that caveat -- would make me look bad. If I get a pre-interview (phone interview), I already have an e-mail ready with links to all of that waiting for a "To" field which includes boilerplate that I've also already casually joked about "I'm happy to send all of these to you to reduce time spent googling, as long as you promise you won't judge the thing I wrote in an hour at 2:00 AM on a Saturday night as a prime example of my coding ability and will at least give me an opportunity to apologize for some of the evil I've unleashed on the world."
[0] I always joke that I don't feel like I'm growing as a developer if code that I wrote 6-months ago doesn't mildly embarrass me.
[1] I learned, by accident, that he hated Java (I asked him if he was interested in putting his resume in for a Java position where I currently work) -- it was his first serious language and he'd since explored Clojure and many others but because he was known as "The Java Guy" where he was at, he wasn't able to get out of that line of work over there.
Having a portfolio to show what your capable of is a great way to set yourself apart. I don't think anyone is expecting you to have developed Linux from scratch. But something is better than nothing. Which do you think is more likely to get an interview, someone with several source GitHub projects or someone that says "all my work was closed sourced" and has nothing to show.
Having founded three startups now (2x acquired), most of the best engineers I have ever worked with have a noticeably more active Github/Bitbucket/Gitlab portfolio than the average. In my experience, great engineers have public proof (open source, a self produced product, book, etc) of their craft vs nothing at all.
Now to be clear, just because someone has an active Github, or a book, or whatever doesn't mean you should hire on the spot. But should be someone you'd prioritize over someone that is seemingly too lazy to do any related extra circular activity.
I’ve also hired developers. I have a simplified version of a real world project that we are working on. The methods are skeletons with no code and a bunch of failing unit tests. Part 1 they have to get the unit test passing. Then I give them a harder set of requirements with unit tests. They have to make the second set pass without breaking the first set.
It tells you a lot about how someone thinks.
But hiring good people is very time consuming. The reason GitHub as a portfolio makes sense, is that it helps compare potential candidates--that I know nothing about--faster. Biased or not, I have had the best experience with people that are very active publicly. From Battlebots competitors, book authors, to startup founders, etc.
Ivy League Colleges, VCs, even Y-Combinator works very much the same way--trying to make an assessment based on past accomplishments. The more visible, the better. With the caveat being a strong direct reference.
I am sure we all have extra circular activities besides coding, but depending on how strong your experience or professional network is, really depends on how much you need in a portfolio. I have been coding since I was nine and have decades of experience, I still have stuff I hack on that is public, from SlackBots that control GPIO pins to Sonos controllers, etc. I would think the more experience you have, the better chances you would have more stuff you can add to your GitHub (portfolio).
At the end of the day, as a someone hiring, I am going to gravitate to engineers that have more and better examples of their work ability and output vs where they worked on their Resume. Not to say that we should ignore anyone that doesn't have public projects--but they are certainly at a disadvantage against someone that has.
Given the choice between not being able to interview and not being able to get references, you'd do better hiring sight unseen based off of strong recommendations from a source you trust than from conducting thorough interviews without references.
So people with life responsibilities are too "lazy" just because they don't code outside work?
Expecting potential hires to labor over portfolios and prepare extensively for auditions is a luxury enjoyed by the few most badly oversupplied artistic fields.
Some people aren't in the mood for extra curricular activity after working +14h a day. They rather unwind, and be productive the day after in their not-pushing-to-github jobs.
I saw PHP, game dev, JSON. I saw that he does do OSS stuff, though not much. I saw that he can write a decent readme.
That's the kind of thing a hiring manager gets from a github profile. It's not a one-dimensional test like how many checkins does the dev have.
GitHub will not even remotely tell you that, though. There are tons of open source projects that are not hosted on GitHub. If you, say, contribute to the Linux kernel, or to Firefox, or perhaps Xfce, nothing will show up on your GitHub profile to give you "credit" for that.
I agree with another poster that GH can be useful to disqualify candidates (say if they've posted something they've plagiarized as their own), and you might find interesting things on a candidate's profile that increases your impression of them, but it's absolutely useless for comparing candidates or getting a full picture of what they've worked on in public.
You're absolutely right. Using a single source as a metric, even if that source is as huge as Github, would be terribly misleading. Though a simple google search would likely surface contributions to Linux/Firefox/Xfce, I don't get the sense that was the point you were trying to get at.
The issue is that there isn't a way to get that full picture. But using Github and other sources out there is a lot better than nothing at all.
I'm not terribly convinced there's a ton of value in it pre-interview, but there's been a lot of value -- for me (both on the giving and receiving side) during interviews.
Here's the thing -- at the time I was involved heavily in hiring developers -- I'd get a few hundred resumes and had time to interview about ... 5 (I was usually the last interview for those candidates) for a given position. It was really important to me that those 5 be worth interviewing. I'd with any links in the resume, itself, and I'd google. I'd happen upon Github, SO, blogs, and even HN profiles. I discarded anything that wasn't code-related[0]. If I don't find anything, I pick up the phone and ask if there is anything they can point me to or send directly to me, code-wise (this was for every candidate that got a phone-screen and was being considered for an in-person).
I get, at best, an hour to judge someone. Interviews are terrible -- I'd argue far worse than anything I can glean on Github/SO. However, combining the two ended up being really effective. Start with a bit of code the candidate wrote and -- after some disarming (i.e. "I know this is personal code and won't be up to your typical code quality -- we all have lives outside of work and can't dedicate the time we'd like to our hobby projects" etc) I start asking about choices that were made (why did you opt for a functional pattern there?) and how they'd improve on it. This gets right into how the developer reasons about code and since it's something they've written (hopefully recently), it's less difficult for them to do than if they're given someone else's code to evaluate[1].
And I've used it on the other side, as well. I received a great offer at a company after flatly refusing to do a whiteboard coding session. It was a job I didn't particularly want[2], so when they handed me a whiteboard marker, I (way more flippantly than I intended) said "I could kludge my way through that using the worst IDE in the world and without access Google, but if you want to log in to Bitbucket on your laptop there, I can show you several different implementations of that which I wrote for a backup application I've been working with for a few years". It was in a private repo, but was all my own code -- I was just a little more embarrassed by it than other projects, but it had the code he was looking for. We went an hour over in that interview and spent 1.5 hours talking about my code. I turned the job down, but it was one of my favorite interview experiences.
[0] Partly because I believed it was the right thing to do -- your politics/pet causes, your silliness/rants/divorce are irrelevant ... life is messy. And partly because it could be a problem for me to know certain things (your religious affiliation, sexual orientation, etc). I don't care about any of those things anyway but managing bias never hurts.
[1] I used to work very hard at disarming my candidates. I felt like nerves tended to hide good candidates and anything I could do to reduce those nerves and make the interview feel like a conversation, rather than a "contest"/"judgment", the better.
[2] Generally speaking, my resume is up-to-date and I enjoy interviewing, so if I'm offered an interview, I take it. Even if I have no intention of finding a new job, provided that my current employer isn't going to be notified about the interview, there's nothing to lose by taking an interview -- even if all you get out of it is a little bit of additional practice.
For instance, the fact that some accounts are fakes for a TV show, or that some projects are jokes and listicles, has nothing to do with the particular GH project of a candidate that you're interviewing, having found that candidate in ways having nothing to do with GH.
Sure; GH being full of crap makes it impossible to use for searching for developers. (Not to mention that, oh, people don't use real names, and you don't know whether they live across the street or across the ocean).
The main valid point is that a great developer might have an inactive GH account.
"If you're looking for a thief, it isn't useful to look into pockets. Many pockets contain nothing, or lint. And those that contain something are almost always legitimate: stuff that the pocket owner owns. Some pockets are fake; just ornamental openings that are sewn shut, with no actual pockets behind them. The best thief I ever nabbed had nothing in his pockets; everything was in a big duffle bag in the trunk of his car."
It is not. If an employer can't ascertain your skill level through the interview process, their hiring is broken. It is a slippery slope where we allow employers to dictate uncompensated signaling necessary for a role.
Observe how it worked out for everyone who got a degree because employers won't hire without one, and then they don't get hired regardless of that degree. So we'll all toil on public Github projects in hopes that'll be what convinces an employer to hire? Will we all need to intern for several months for free next?
@always_good: Hiring is hard. If you succeed in hiring the right people, it won't be because they jumped through your hoops, but because they were passionate, had some of the skills and could grow fast, and a huge helping of luck.
Employer's have a limited amount of time and money too, why should they waste those resources having to mine for someone's skill level when there's plenty of candidates out there that will display that on some online site.
That's just outright factually inaccurate. Are you expecting employers to hire on blind faith? If employers are hiring without evidence to support your skill-set, then their hiring process is broken.
> Observe how it worked out for everyone who got a degree because employers won't hire without one, and then they don't get hired regardless of that degree.
I don't have a degree, I got my first job because I walked into the interview with a portfolio; more specifically a fully functional completed piece of software that I live demonstrated. This wasn't an open-source project, but I sent them the code to be reviewed nonetheless (I own the IP).
The reason some people with degrees don't get jobs is because people with portfolio's (irrespective of degrees) can demonstrate their skill-set, where as waving around a piece of paper and having no demonstrable skills makes it extremely difficult for a potential employer to evaluate you.
> It is a slippery slope where we allow employers to dictate uncompensated signaling necessary for a role.
I do somewhat agree with this. However, your portfolio need not be open-source work, it's just common as there's some proof (version control, although not tamper-proof) indicating you did the work you're claiming you've done.
Easier said than done, especially if you're talking about whiteboard interviews.
Nobody can even agree on what this perfect barrage of probing looks like.
I think the better way of putting that is "Interviewing is broken". Determining that a candidate meets a minimum level of skill-set is possible to do in an interview, however, determining much beyond that is highly elusive. I've had candidates that were incredible "Used Car Salesmen", who the previous interviewers wanted to "skip the technical interview" and just hire the guy outright because he was so convincing only to have his outcome in the technical interview end up being terrible (and I've had candidates get the job where this fact was discovered too late)[0]. I've had candidates that I've had to have a fight nearly come to blows to get a candidate hired because they were so nervous that they completely bombed the interview, and that "accurate portfolio of their skill set" was the only thing, outside of my insistence, that got them hired (out of the few this has happened with, all were good hires, too).
I'm not asking anyone to jump through my hoops (especially now that I'm working at a place where I, thankfully, no longer interview candidates). I don't ask candidates to white-board code (I wouldn't let them if they wanted to), but given a candidate who has a solid portfolio against a candidate who does not -- assuming all other things are equal (or the portfolio is incredible) -- I'm going to hire the one with a portfolio. And I feel it is a personal responsibility of mine to keep that stuff up-to-date. I could do a better job of it, myself, but if I failed to get a job because I lacked in that area, I wouldn't blame anyone but myself.
[0] I blame myself for this one -- he could talk up and down about concepts; was hugely into functional programming at a time when that was less mainstream. He not only knew all of the buzzwords, but he knew the "why"'s behind them. Academically speaking, he was incredibly knowledgeable. It wasn't until he had to actually learn an existing code base and contribute to it that it was discovered he lacked in execution. A manager on his team felt that he "froze up" ... would write something seven different ways and keep coming back to it while writing follow-on features until all he was doing was modifying code he'd already written to yield the same result, just slightly differently. I, arrogantly, assumed he was too good for the half-rate programmers we hired but upon running into someone who worked with him at the company he came from, it was discovered that he was not actually employed by them at the time he was interviewing as he'd been let go a couple of weeks prior ... and he had the same problem there.
That's what a resume is for. It explains the what and how I performed my last jobs. GitHub is possibly how I did my own hobby projects which have different requirements.
We're not artists who can easily keep a copy of the code we produce. That's a problem with asking for more effort on my own (unpaid) time.
Lots or most devs don't need to.
- GitHub also allows you to display your activity on private projects (as long as their development also happens on GitHub, of course). - It’s not a great indicator, but it’s an indicator of what kind of programming people do for fun (or alternatively, that their employment/life circumstances don’t allow them to be active on GitHub).
I don’t think not having anything on there is a bad thing, but I’d like to talk to the candidate about why. Sometimes you’ll learn that people have the most fun non-programming hobbies or the most responsibly-filled lives.
https://ignoranceanduncertainty.wordpress.com/2011/01/31/whe...
So you may in fact want to ignore relevant information to be more efficient.
I am currently working on building a tool [1] that helps developers build profiles that articulate very clearly both what they bring to a team and what they are looking for in a next job. We're approaching this as a data problem, but unlike many dark recruiting tools, we think it's important for the developer to be completely in control of the information that makes it into their profile.
One crazy idea I have it to experiment with some kind of "Sabermetrics for software engineers"–think "WAR for developers" [0]. Using GitHub would be an obvious data-source (how to use it and if its a good idea is an entirely different discussion).
While I think this article makes some good points, he seems to only touch the most simple approaches. There's a lot of things you can do with a GitHub profile. To me, they'd never be deciding factors, but you can definitely extract some pluses out of a person's profile.
In fact, contributing to public open source has been the proven tipping point that shifts hiring decisions in my favor if the hiring manager is on the fence. In all other cases the combination of a frequent open source contributions and a strong interview have allowed me to nail senior positions as the top candidate.
Whether or not any of this makes me a rockstar is completely subjective, but beating out all other candidates (several dozen) hands down on multiple occasions really increases my self-esteem.
“As an example in the latest Hacker News' Who is Hiring thread, there are a bunch of different job ads asking for a Github profile as part of the job application.
...
While both of those posts give excellent reasons to reconsider asking for open source contributions when hiring, my take here isn't about why it is ethically dubious to require open source contributions or why GitHub isn't great for showcasing your projects.
Instead, this post is about why GitHub profiles just aren't all that useful when looking to hire developers.“
So no one should be "filtering out" inactive or boring profiles.
The exception I'll claim is for junior engineers. At that stage in someone's career, having a portfolio matters, and should be actively cultivating some kind of public code presence.
This generalized statement is false; some do, some don't.
Been at multiple startups and the best candidates hired have great open source projects on github that indicates they're qualified for the role more than someone with nothing to show.
There are people who believe in it, it seems reasonable, but in reality nobody cares. Just another cargo cult.
It shows me they can code, perhaps in the languages I am hiring for. It also shows me they know how to use version control.
edit: I may have misunderstood, assuming you mean it's patchy because you're contributing to a private repo that's not on Github.
I am starting a side project mostly for learning but have no real interest in making it public.
Case in point, the candidates I interviewed -- if they had any public Github projects: (1) had maybe one or two projects of their own that were public. (2) They were personal projects of varying levels of "quality", i.e. not their day job. (3) They were the only developer/committer and new commits were somewhat rare. For the most part, just the existence of a profile with some projects was a plus. Most candidates didn't give me a way to see that they could actually write software (fizz/buzz?) -- though there are ways to solve that without resorting to white-board or in-interview programming.
I started using GitHub and "external work" as an interview technique after an experience with one of my best hires. This was a candidate not unlike others that had a pretty dead profile, but there was one project that showed code quality and thought that far exceeded "the typical". It was clearly "That One Project(tm)"; his baby. The code quality was quite good, it had documentation and it had thought put to its design[0]. It had zero stars or forks, but it was obvious this was a tool he wrote for himself and really cared about. His interview started out very badly because he was nervous, but the project saved him. Mainly because I started wondering if he actually wrote the code in that project (because he failed to answer some pretty basic code design questions), I pulled up his project and started asking him specific questions about his code. He went from nervous to excited[1] and was suddenly able to explain things that he had a difficult time with when they were presented simply as abstract concepts.
I used to facilitate many technical interviews, but it's been a little while since I've done one due to a new job/different company, however, I think the method I use is still the one I'd go to. The technique I used after this gentleman was to call the candidate a week in advance of the interview and ask if they have anything public, code wise (blog posts, SO/Github/Gitlab/Bitbucket profiles), that they can point me at or if they could provide some samples[2]. I always explicitly state "This doesn't need to be your best work, or even terribly great code, it just gives me a starting point to discuss development practices" and I recommend they pick something they've done recently since "any code we've written more than 6-months ago might as well have been written by someone else" The technical interviews would then, generally, be that candidate explaining their code, the choices they made, why they made them and what they think improvements would be in order of priority. That has worked really well for me and beats the daylights out of any paper/pencil, whiteboard or even "code this on this laptop while I look over your shoulder"[3]. Assuming you successfully disarm the candidate with the "we're not judging your code (!)" preamble, I've found that people are far more comfortable (and most legitimately enjoy) talking about things they've written -- even critiquing them[4].
[0] In this case, a unit tests covering the right parts of code, documentation, build instructions, logical layout/design -- he cared about this code and it gave a really good insight into
[1] Given his performance in the interview, I would have expected this person to be introverted and not a terribly motivated programmer... goes to show how terrible interviews are at judging people -- this guy ended up being the guy everyone else on the team looks to -- he was passionate in a job that, frankly, wasn't the sexiest programming job.
[2] This last point, to be clear, I expect to never receive proprietary samples. It did happen, once, and I didn't think this was something I had to actually state, but I wouldn't have hired someone who would share code they had agreed to protect since they'd be agreeing to the same thing working on the team they'd be going to.
[3] The difference between a great developer and a great developer who gets anxious during interviews is that the latter might be a little introverted/not good at interviewing -- a personality trait that I've found to be common and for every job I've done interviews for -- not a negative (and can just as much be a positive) for the work I was assisting in hiring for. One of the hardest working people I know -- a guy I'd work with on literally anything because he'll make up for any deficiencies with sheer will and hard work -- has such anxiety in interviews that he actually forgot his middle name in an interview (not completely, he just spaced -- hard -- my boss hired him anyway on my strong recommendation).
[4] A small tip: Complimenting the work is an easy way to get things started smoothly -- it doesn't need to be phony; there's usually some way to point out a few positive things about the work. Start there, ask questions in a manner that simply states a desire to understand the code more, and let things roll from there.
It was more important to me that a candidate could reason about the code in question -- even (perhaps especially) if it was an implementation they pulled directly from an SO post. There were occasions where I'd see unique implementations of common tasks (i.e. pulling a value out of a URI string that carried an unusual formatting pattern where simply using the URI parser in .NET wouldn't have worked directly). Having worked with a few different frameworks that use unusual URI formatting, I might ask why a regular expression was used over writing a custom parser tied to the Uri type (or vice-versa) and I was more interested in hearing the argument and reasoning behind it as well as whether or not the candidate could come up with pros/cons for both methods. Sometimes it'd be a custom implementation for something that could be done directly with features available in the framework -- and often the answer was obvious[0].
And a little humility doesn't hurt, either. I remember asking why someone used a regular expression to do some rather involved data extraction from an HTML source versus using something like Angle# and I recall the response was something along the liens of "Well, it started with pulling just URLs for a limited case and exploded into getting some metadata around the link, but it was for something at home and I put a total of ten seconds into thinking about how to do it right and if it stopped working completely, it didn't affect me all that much". Good enough; a lot of developers would go off into tall weeds defending bad code rather than just saying "sometimes the tolerance for error greatly exceeds the availability of time" or "I just didn't care enough" -- especially in an interview where you are hyper-sensitive about looking bad -- and we all have a bunch of very dirty scripts that "work ... mostly". Provided it's not a theme of ambivalence throughout the interview, a little honesty at a time when it's tempting to fluff gave me confidence that when that developer made a mistake, he might actually own up to it.
[0] It's either "I didn't know it could be done that way" or the most common "I wrote it before that method/call existed" -- since I was hiring for .NET positions at a time shortly after Framework 2/3.5, this was a really common situation due to many new ways of doing things arriving with Generics/LINQ. And both were acceptable answers since it took some time for a lot of .NET folks to grok generics/LINQ and understand them well enough to realize the appropriate place for them (outside of just "oh, I can make a List of anything without having to use ArrayList of object types")
"I've only had one job interview in the last decade or so, but as far as I could tell none of the people interviewing me checked out my GitHub profile before the interview"
So that makes this guy an expert?
I'd wager this is the kind of HN post where people read the title and post in the comments without reading the post at all.
For example, a good README can communicate someone's abilities in documentation, thoughtfulness, and design.
For ex: https://wakatime.com/@alan