GitHub Won’t Help You with Hiring
benfrederickson.com
benfrederickson.com
Maybe they work 8 hours a day on a bank or government project that is all private and then they spend the rest of the day acting as a care giver to a relative, studying, or volunteering in a women's refuge. All noble activities that I would consider positives for a candidate, but I'd never know if I just checked "Do you go home and cut code out of hours?".
I mistook my own privilege of free time as a universal truth and I'm glad I was called out on it early on and able to change my (interviewing/screening) ways. I wonder what else I need someone to call me out on...
$10/mo isn't bad for a 'professional' service. Basic manicures are ~$20 and last 7-10 days; they are common with in-person sales and marketing jobs.
- get approval from VP to spend time on that
- get approval from legal (they checked the license and if the company has any liability from that code not working, this alone took a couple months)
- get approval for release of code from a so called open-source committee (basically checked if your contribution doesn't damage company's reputation)
It was easier to set up a fake account and get things fixed this way. But no way I could do that on company hardware or time.
> I will still think odd that’s someone who is a professional hasn’t found one bug in an open source lib that is worth a PR or even an issue in a decade of work.
It seems like the person is surprised how nobody has any contributions from just their professional work. Naturally unless I had no life outside of programming I would spend the vast majority of my time doing my 9-5 stuff.
Free Github private repos has been a blessing for just storing modifications to existing projects.
I have no idea about enforcement, and most coworkers I've had have ignored those clauses.
I'm going to guess you're in USA, is it legal to stop phone workers using the phone outside work. Seems like not allowing people to work on things directly related to their actual work (due to IPR claims by the employer) would be a thing, but no OSS at all?
My last company did have a policy that you are prohibited from participating in OSS, unless getting a bunch of approvals per project or per patch. I'm risking my job sending a PR.
It's work related, it should be fixed at work. (I certainly don't want to patch things in my spare time because the company forbids me to work at work).
P.S. I am in London. USA would be worse.
Based on the people I've worked with (both great and mediocre programmers), I think that is highly uncommon.
https://www.joelonsoftware.com/2016/12/09/developers-side-pr...
It's almost always yes for the former and no for the latter.
For example, I once found and patched a bug in paperclip, explained why it happened and sent a PR. It was ignored for 5 years and then they abandoned the project.
Or I once fixed Heroku issues by upgrading the ImageMagick version with a custom build pack. They featured it somewhere and suddenly I was getting entitled emails every day by random strangers who strongly felt that I should fix their Heroku deployment.
Then there's the issue of dependencies. My cool tool for analysing satellite photos won't be of much use to anyone who doesn't have API access to a satellite ground station. I.e. there's no benefit in making it open source.
And lastly, I've had the unpleasant experience of a company taking my open source project, adding copy protection and then selling it as theirs while simultaneously refusing to adhere to my license of either following GPL or paying for closed source use.
Nowadays, I only share source code for hobby projects with friends, but not publicly. Otherwise it's more work and less pleasant for me.
Notably the first. You fixed a bug, you contributed, you did your part but it was ignored. Did you learn anything from that? Beyond "Open Source is a waste of time" I guess?
It's easy to look at things negatively, but there's often positives to be found if you simply look for them. Not to say you're wrong, just, trying to offer some perspective.
Opensource is enormous at this point. One data point(or even 30!) is no longer particularly relevant. Instead think of it like any endeavor in life. You are taking a leap of faith. Sometimes you'll have a great experience that may even blossom into greater things you never expected. Sometimes you'll be let down despite your best efforts and intentions.
You mentioned the full extent of your attempt at contributing to open source consisted of a grand total of two meager pull requests.
I'm sorry to say but if throughout all those years you only managed to put together two patches then quite obviously you did close to zero contributions, both in absolute and in relative terms.
In fact, it seems you complain more about floss than actually contribute stuff.
I find that I general it's terribly easy to get your pull requests accepted to random FLOSS projects. Whether your PR is janitorial work, fixing bugs or adding features, you don't need much work to get your contribution in. So, quite frankly it sounds like you are grossly exaggerating and overstating not only the extents of your work but also the challenges you supposedly face.
> Then there's the issue of dependencies. My cool tool for analysing satellite photos won't be of much use to anyone who doesn't have API access to a satellite ground station.
In that case your so called cool tool to analyse satellite photos sounds very poorly designed. I mean, the whole FLOSS earth observation stack is designed literally from the ground up with extensive separation of concerns in mind (see GDAL and proj4 and orpheo toolbox for example) and apparently somehow you failed to learn the lesson that everyone doing professional, academic, and even amateur work knows by heart.
Also, I’m glad your PRs are accepted. I see a lot of projects with lots of old, open PRs. Maybe others don’t have the same experience as you do.
Similarly, I've had unpleasant experiences with entitled users more than once, I just picked the Heroku buildpack randomly.
As for the satellite tool, open tools will only take you so far. I do use GDAL, for example. But when you need to take photos on demand, you need very precise real-time trajectory and weather data, for which there is no free equivalent. Plus you actually need to send your photo request somewhere. And that's when you become dependent on an NDA-ed proprietary API.
There's good open source tools if you want to do offline analysis of static archive images. But not everyone has such relaxed requirements for refresh period and processing latency.
Consider using satellite photos to analyze traffic. You schedule photos with a proprietary API, use proprietary modules to download them, followed by proprietary file format converters. And then there's a block of image processing that I could open source, but that won't be helpful without the data acquisition and conversion pipeline. But actually it's a TensorFlow AI trained on proprietary data, so even releasing that is a legal nightmare. The whole project is commercially tainted from start to finish.
Submitting a PR allows others in the community to apply your patch (or incorporate into a forked version of the project) if the PR doesn't get merged or deleted. From a project maintainer's point of view, significant patches can be difficult to test & review, and merging a PR implies accepting the long term maintenance of those changes. I've left some promising PRs for much longer than I'd prefer to because of factors like time to review and the risk of merging code which may not have adequate tests. If an open PR attracts some community interest or discussion, that can give project contributors a helpful signal for prioritising.
If a PR is featured somewhere, this can be an opportunity to raise your profile and perhaps introduce those inquiring users to something you can benefit from more directly. If I get direct emails about a PR or project I contribute to, I try to politely point those users to the right channel (eg raise a GitHub issue) and ideally a contributor guide so they can be empowered to contribute directly. This may not be a straightforward reflex to develop, but I think responding with "This is a volunteer effort -- here's how you can help with docs, testing, or code" is a better viewpoint than "Ugh, more entitled users". I've been pleasantly surprised to see this approach turn some agitators into useful contributors.
If a project has very niche dependencies (like requiring API access to a satellite ground station), there can still be an audience and they may be even more motivated to collaborate on your open source project. I feel like this may have the best upside in terms of potential ratio of users to collaborators.
I think your last example is the most challenging. If you are concerned about someone else benefiting by stealing or repackaging a project you have openly shared, it would be best to keep that effort private. Compliance with open source licenses (or the spirit of open collaboration) requires ethics that are not universal across developers, companies, and countries. This problem isn't unique to open source (commercial licenses also don't prevent piracy), but is a harder blow when you are personally affected.
niche projects that can only be used by a small group of people still benefit from open collaboration that FOSS enables.
also, i might patch your code to work without that ground station on publicly available satellite image data.
that last example is clearly a copyright violation. you should have legal means to go after them. i realize that is not trivial and may cost you a lot of effort, and while i would love to say there is help available i can't right now point you to one.
is there an organization that helps any FOSS project (not just their own) with license violations?
And yes, I did eventually succeed in resolving the copyright violation. But it was still a lot of work for me which I could have avoided entirely by keeping my source code secret.
What many fail to understand is that disinterest in Github absolutely does not tell you anything meaningful about that programmer.
Too many hiring managers/recruiters/HR people focus only on the first point, as some sort of religion.
Well, it does. It says he doesn't have a portfolio for some reason. Is it because he is incompetent and has nothing to show for? Perhaps not, but if the candidate makes it difficult for recruiters and interviewers to get an objective way to corroborate his claims regarding his level of expertise then just for the sake of avoiding wasting your time with yet another paper tiger... It would be better to cut him out of the shortlist for further interviews.
No, you do not have to have a "reason" for not having a public portfolio. Not having a public portfolio doesn't say anything at all about someone's competence.
>> if the candidate makes it difficult for recruiters and interviewers to get an objective way to corroborate his claims regarding his level of expertise
Public code is not the only way to assess skills, indeed as I mentioned elsewhere in this thread its actually a pretty bad way to assess skills. If the best tools you have for assessing competence is github then your recruiting process is lacking.
>> It would be better to cut him out of the shortlist for further interviews.
I can imagine employers with this attitude lamenting how hard it is to find good people.
I just self-host Gogs, GitLab, Trac, cgit, etc. They are independent of each other, of course. :) Different teams, different needs. As far as my personal projects go, I just self-host cgit, and I accept "pull requests" through e-mail. It works.
It is an opinion I share but disagreeing with the inclusion of politics into tech makes people believe you have taken the opposite stance.
There is little nuance permitted in US politics and US politics is the only politics permitted in technology.
I blogged about it. It has cost me job opportunities.
I tend to not share my political views anywhere, especially not on Twitter. I do not even own a Twitter account! If I express my beliefs, it is under a pseudonym. Sometimes I even argue in favor of something with what I disagree only to learn more.
By all means, they can care about politics- but they cant force me to care about their politics and they should not be as reactionary as they are when I take my business elsewhere.
I am just a dude who likes computers. I don’t need to shoulder problems from half a world away on behalf of billion-dollar corporations.
could you elaborate?
a place that forces me to get involved in political arguments or where partisan politics influences business decisions or the company openly favors a particular party such that all employees are assumed to support that choice, is not a place where i want to work.
The parent explicitly said they disagree with GitHub's political views. I take this to mean they in fact have taken the opposite stance.
Don't know what they though that my involvement in open-source projects would correlate well to e-commerce CMS work (I've worked in e-commerce dev well before opening a Github account). But it's probably some weird "tie breaker" decision given that I am not local to LA.
Yes those things I did took a lot of time but I typically do it out of boredom . To be honest my GitHub projects are demos and I just like giving presentations .
If you compare yourself or anyone on any given metric you will feel bad. What is even worse is when people tell you all the time about a metric that you should do but once you do it you find that it wasn’t necessary at all and it’s some kind of mental gatekeeping.
I've been coding since 1995 and my open source contributions tailed off around 2002 or so. Wasn't how I wanted to invest my spare time.
The point isn't that the hypothetical banker can't have an active github profile, it's that there are reasons they might not.
Take me for instance, I haven't really done anything significant in the public for over a decade now. The vast majority of my code has been for one private company or another.
And that's the case because either my job has me working the hours or after putting in 8 to 10 hours of code in private, there's exercising, practicing guitar, socializing with friends and family, building Lego sets, reading, playing video games, and other activities that don't involve me writing more code.
That's not to say I don't, it's just I don't have that much time to do it outside of work.
I just spent the past 4 years getting an MBA, my github repos are all horribly out of date because I had more important things to do. It doesn't mean I'm any less passionate about the technology.
Some companies I've interviewed with claim that I'm just not enthusiastic about programming, or that I'm not motivated enough, simply because I don't do any programming at home. They also questioned how I could learn new things. And my answer is usually the same; if they expect someone that wants to program 24/7, then I'm definitely not the right person. I have other hobbies I'm interested in, and I have no desire to burn out. I also expect to be given the time to keep up with new tech on the job.
And lots of code should not have tests, or be works of art, or be bug free, or be commented, or be comprehensible to less experienced developers.
It's a problem that Github is used for assessing programming skills at all because those assessments ALWAYS look for consistent perfect code as a high arts with full code coverage etc etc.
Public code also has time context - maybe you wrote that four years ago when you were new at some technology or skill - what exactly does that mean to the assessor who is seeking perfection?
I don't want to direct anyone to my code as an assessment because it's always misread by the assessor. Even worse I find myself rethinking posting code online because I think "but what if I get assessed on this will it hurt my career"?
I think that analysis of people's public/Github code is a hiring antipattern and the fallback of those unskilled in assessing candidates.
The more useful signal for me is GitHub as a portfolio piece, if they got some concrete relevant work done that I can ask them about in the interview but I don't need to see the source code for that.
I talked for nearly an hour about one of my projects, first of all the broad design, then various interesting aspects of the implementation. (Most projects have lots of "dull"/"boring" code, but I certainly highlighted the areas I had the most fun/pleasure/difficulty implementing.)
Was a nice interview, although it was only possible because I've posted a whole bunch of projects online. I know other people keep their stuff private, or don't even write code in their spare times.
Also, my side project code is garbage, because only I am going to look at it, and so it only needs to make sense to me (and maybe, future me), and it's more fun to write awful things.
I'm sure this gets you good insights on some candidates, and probably is pretty decent for fresh grads (who should have something from school), but I can't imagine it working well for a lot of experienced candidates.
I got a ton of useful experience doing open source that aided me in my day job. Experience building abstractions and DSLs, building frameworks, and testing stuff really effectively are all examples.
There's a kind of common thread with all of these things in that in my day job I didn't really practice and hone my skills in these areas because of the constant churn of work that the business wanted done. The incentive structure of corporate development encourages a kind of frantic slap-dash "just get it good enough and get it out there" approach while open source is much more relaxed and pensive and thoughtful and elegance is valued much more highly (sometimes too much).
There is valuable experience to be gained from both environments - I wouldn't say either one is really ideal. Open source, for instance, doesn't put the same emphasis on customer feedback that business does and often takes too long to develop new stuff.
However, if I see someone engaging in an issue or PR discussion in a way that would make me nervous about having that person in my team’s slack channel, I am much more likely to pass on them.
A well-populated GitHub profile can be a positive signal to me. It makes it easier for me to see how a prospective candidate works and thinks, and provides me with a more useful and instructive set of questions to ask during an interview.
It is also possible that I will discover that the candidate is not sufficiently experienced to meet the requirements of the position that they are applying for, but at least this way I don't have to try to ferret out these answers or waste their time.
An unpopulated GitHub profile is a neutral signal for me, and means that I need to spend more time trying to tease out the answers that are simply given to me with a well-populated profile.
Even the github profile isn't a strong positive signal, it's a weak signal. But that's ok. That's really what we're looking for: a lot of weak positive signals.
So that person had a github profile. Everything else could either be a neutral or negative signal. Compare that with someone without a github, but has every other positive signal you could ask for. I'd take non-github person over github person every single time.
Be careful making even these assumptions. My GitHub is a subset of my side projects combined with some old work stuff that was reprioritized. Many of my repos lack tests because they're for such a small number of users it's more efficient just to test manually and handle issues personally. That doesn't mean I don't write tests in my professional life. Similarly, many projects may be older and my habits have evolved since then.
Is it unreasonable to say "more data allows me to make a better decision?" It could be completely noise! But it is still data.
I think in fact you are making assumptions based simply on the fact that he is observing data.
Yes. If you read data about A as data about B, more data will give you a worse understanding.
> It could be completely noise! But it is still data.
You are not technically wrong in saying that noise is data, but your implication that it is somehow better than no noise is wrong.
As a more philosophical question, how do you know a priori if it is noise or signal? Wouldn't you have to look at it?
A says: “I like it when a candidate has a github, because it gives me and idea about how they code”
B replies: “please don’t. My github code, like an unknown proportion of all github profiles, is hobby code and doesn’t follow any of the standards my professional code follows.”
In this case, you need a prior that says “even if it looks legitimate, the data might be completely invalid and we cannot tell from the data”
Unfortunately for me, I came from a world where everything had to be open source, but moved to a closed source world where everything I produce, even in my private time, belongs to The Company. IP lawyers have to check the bowl before I flush. I am paranoid that my public commit log being empty will affect my chances of getting a job in the FLOSS realm once again.
Hobby projects and open source contributions are evidence of patterns of collaboration and commits, but may not be indicative of one's typical (or best) work. There are also many reasons why a great software engineer may not have a public activity profile.
The majority of my public commits are scratching itches on open source projects, and are very opportunistic depending on other life and work commitments at the time. Code may not always be pristine, but I can probably rationalise why I took a certain approach (following existing code style, hacking for my own use, actually aiming for quality and performance, ...).
As a hiring manager, I'm also OK if candidates want to do something with their personal time that doesn't involve committing to public repos :).
So you can't even commit something own, when in private, because company you work for can sue you, just because?
Not very useful when working on open source, which is why I don't.
I argued about this before signing, but this has been in every contract I have ever read and when I argue about this they will always say it is standard practice to include.
Plus, you can generate activity for your profile. It's a game of cat and mouse.
https://hackernoon.com/how-to-hack-github-kind-of-12b08a46d0...
* There are more developer jobs than developers
* We're constantly afraid of developers who can't code
* We decide to test every developer often with non-real-world scenarios and weird things they'll never do in their job and if they did do, you would be very concerned.
* Not only do we test them for things things they won't be doing, we also expect them to spend hours and sometimes days doing these tests.
* We reject people for weird random reasons. They don't understand one concept correctly, so clearly they can't do the job ever.
* We then hire recruiters, who realise how screwed out recruiting is and that it's often potluck. And realise this is a basic funnel, so they go and search out anyone who has a rough chance of doing being able job.
* We then blame the recruiters because people don't meet our weird standards.
For real, most companies need to realise they are not FAANG. They do not have an endless source of people wanting to work for them because of the reputation. Many of these companies that are acting like they can expect people to jump through hoop and hoop, have employee churn rates of 6-12 months and are competing with many other companies in their local area for the same talent. We continually act like like doing this job always requires the best. From what I see at most companies, you need one or two people who can archectect your system and explain the designs to people and after that you just need people who can follow the designs. We can say "But everyone should be able to do archectecture designs", if you want to spend your days discuss design plans and the benefits of this and that fair enough. But that's not what a company needs, a company needs people to write code they don't need 8 out of 10 to be designing code, they need 8 out of 10 to be "boilerplate" code so to speak. And if someone is able to take a code design and implement it without making it more complex then they're good enough for the job. Google is famous for making people jump through hoops and then have them do basic tasks, because doing basic tasks is what is important.
That's just my rant of the week on IT recruitment.
Most of these companies would only need 1/2 - 1/4 as many "coders" if they'd get rid of their Not Invented Here syndrome and let the coders dictate how the product functions (technically). So many times I've had to build products that are arbitrarily designed by non-technical folks who don't realize that dictating their preferences, instead of flowing with the existing tech, quadruples the implementation time.
That's just my rant of the week on stubborn folks who think their company is a snowflake that requires a bespoke software solution.
For people straight out of university their side projects are interesting to recruiters though as there's not that many other references you have. This is even more true for people not coming through the normal CS pipeline, working on their own projects and shipping something is a good way to show that you know what you are doing.
Especially when so many people coming out of CS studies don't even know how to code.
Spending 5 years in any kind of engineering degree without being evaluated just doesn't happen, unless one would be cheating on their project assignments.
Passing programming assignments or university projects is very different to actually knowing how to code or think about solutions on your own I think.
Perhaps universities should start acting like more like what the companies are testing for nowadays, in order to prepare their students better. Timed coding quizzes every week, automatically validated like HackerRank, Leetcode, etc.. It wouldn't even have to be these tricky algorithms - maybe just a something like implement quicksort, etc. (without using the API calls) in like 30 minutes.
Suppose a given class has a 40/60 applied/theory split. Our hypothetical student is average in some sense and gets 75% on the theory. Now if they get at least 37.5% on the applied portion they barely pass the class.
There are minimum GPA considerations, and you might need at least a C in some classes rather than a D to continue, but it's pretty common to spread the hardest classes out so that you only have one super hard class to focus on each semester, and easier courses and generals will help pad out the Ds on your transcript to maintain a passing GPA. Throw in a retake or two for a couple screw-ups, and you still graduate in 4 years with a whisper of a shadow of an ability to program.
Filtering for high GPAs and whatnot can help (or it might exclude people who had family emergencies or other complicating factors and still know their shit), but in the worst case that's just a measure of the amount of time and dedication spent per course. You also probably need to set a pretty high threshold -- you can bomb all your algorithms, data structures, and applied programming courses and still have a 3.5+ GPA if you do well enough elsewhere.
You can now make your private contributions a data-point on your public profile[1] without giving away private information
[1] https://docs.github.com/en/github/setting-up-and-managing-yo...
All of them are medium / small sized.
Once a company removes your access rights to their private repo, your historic commit record there disappears from your own commit timeline.
Because a lot of us have to code for a living, and employers often ask to see GitHub projects.
None of us are choosing this. It's just one of the many shitty trends in the world of software HR.
Hence the topic.
Having a Github profile is "being forcefully career-driven" because it's now a potential gate put in place to work at increasingly more companies.
I have no idea what it even means to follow somebody on github.
Why? I use github to host my code, to collaborate with others. I use issues, sometimes wiki, pull requests (obviously) and so on. But it's not a social platform for me. I don't want it to be a social platform.
I guess following means I get some kind of notification when they do something? I'm drowning in gh notifications already, and switched off most.
So I'd discard followers on github as any kind of metric right from the start.
If you are a well know or experienced dev with a long resume of working for closed-source companies, then, yes, you don't need a GitHub profile. For younger people or developers switching domains, GitHub contributions and personal projects might be the only way of showing their worth to future employers.
It wouldn't surprise me. There is a lot of content online that appears to be created for the sole purpose of finding work or as part of school/university projects. A lot of that is of limited value, which diminishes the signal:noise.
But I think the main point of the article is that it is unlikely to be used in the hiring process. People either don't see if as being of value or realize that it can be gamed.
Most of the time when there is +50 people following someone it means that at the very least they have one significant repository, published article or somewhat known through other means (blogs are one).
Someone with followers still indicates that at the very least some people are interested in that person's projects.
I'd need to crunch the numbers, but would suspect that number of followers is highly correlated with GitHub stars, PyPi / NPM downloads, etc.
* BurntSushi: 4.4k followers
* wesm: 9.6k followers
* tj: 43.6k followers
The followers section of the post may have cherry picked a non-representative example.
Same here lol
Some folks use this to "game" their activity logs. I've heard of people writing scripts to draw pictures in the activity log. I haven't actually seen it, though. That's mostly because I haven't bothered to look.
I encountered one activity graph that was insane. It had about 15,000 commits per year. I work 10-12 hours a day, 7 days a week, and have about 3,000. I know of folks with 5-6K, that I believe are legit.
Then I clicked on one of the squares, and saw that it had about 600 commits in one day, in a private repo, along about a 24-hour cycle.
The person obviously had written a script, that checks stuff into a "dump" repo, automatically.
So, the lesson is, caveat emptor. The activity log is an outstanding way to view someone's working style and velocity. Since I do pretty much everything in open-source, you can run number-crunchers on my ID, and see what I do, when. GH has an API. I suspect there's some interesting stuff out there (someone posted a pretty cool CLI tool in HN, a while ago, that showed graphs of the time of day most people did checkins).
Back when I was a hiring manager, I would have killed for the kind of info the GH activity log can give. Totally knocks "Draw Spunky" tests into a cocked hat.
Or they had automation committing things into a private repository for some purpose (e.g. machine states). It doesn't have to be an attempt at "tricking" anyone.
I do think that tools like GH are important for helping to introduce ourselves to others. As with any tool, it is up to us to use it properly.
For me, I am not actually looking for work, but I get tired of not being taken seriously, so I make a point of ensuring that my work is made available for anyone that wants to see it.
My motto is "Don't just take my word for it. See for yourself." I am grateful for tools like GH, that allow me to do this. The Stack Overflow Story is another one.
For example, almost all of my open-source contributions happen on privately hosted infrastructure. Instead of looking at my Github you'd have to look at my Gerrit[0] - otherwise you might get the impression I have no active open-source footprint.
I think it is valuable to look at publicly available contributions of candidates, as long as it's not constrained to a particular location.
But it doesn't hurt to have it out there, on a case-by-case basis.
If I were interviewing two candidates, and one has a big open-source history available (regardless of the vehicle), then that candidate automatically has more value to me. I may not hire them, as their history may show something that I don't like (damolcean sword, and all that), but they make my life, as an evaluator, easier.
1. It is opt-in, so your private contributions do not show up on your profile by default[0].
2. Not every org is running on GitHub public. If you're using a GitHub Private server, or if your employer uses something else like GitLab/Gitea/...
3. If you leave the org, your contributions to private repos might get removed from your profile. Unless you read the docs and remember to STAR the repos you worked on. Apparently, now they also count opening an issue/PR for this, but I haven't tested this[1]
[0]: By default, visitors only see public contributions on your profile.
[1]: https://docs.github.com/en/github/setting-up-and-managing-yo...
Sure, a lot of great people do not contribute to open source, yet I do (maintain a sizeable popular project), and nearly half of the interviews spend a good time discussing the work I do in opensource.
Everything else is a less accurate proxy measurement. Unsupervised, self-motivated, goal-oriented adulting ... that's what I need
Doesn't matter what company, these basic requirements don't seem to change.
This phrase from the article over simplifies this and is frankly childish: "People still seem to think that you can figure out how talented a developer is merely by looking at their open source contributions"
Duh. It says that some people "still" think that you can do that by "merely" looking at their OSS contributions. But maybe, just maybe, others can use it "merely" as a data point.
> Not only are GitHub profiles not that helpful for hiring developers, it also seems like they aren't that much help for developers that are looking for work.
Why try to dissuade people from something they aren't doing anyway?
This is more a problem for the developer, not the company. The company may have a smaller pool of candidates by evaluating based on GitHub profiles, but they will have more data to use in their evaluation. If they don't have the resources to pay for the premium of being selective, they may evaluate candidates from a wider pool (those without GitHub profiles/history). The candidates without GitHub profiles will receive the attention from those companies not willing to pay a premium for their services.
This can be generalized in other ways beyond GitHub. GitHub, in this sense, serves as a marketing tool, similar to LinkedIn, a personal site, a blog, a resume, etc. Provided it's a free marketing tool, the developer has little to lose by investing their time into marketing theirself and a lot to gain by receiving more demand.
For example, if the whole project is done by a single person do you evaluate their design and code? What if it was just a one-off project that they didn't care about so it has copy-paste code in a few places. Is that bad?
If you ask candidates to point out examples of good code, then is that really meaningful? What if a mediocre programmer can find a few places where they wrote some strong code. What if that code was made good through a strong review process?
I think the problem is that it's too difficult to determine if open source contributions are actually representative of the way someone will code in a job.
Nobody is deep diving your code like this, btw.
Looking at someone's code projects can tell you some things like how they might write a README, if there is one. It might present a concrete project they built that you can discuss in an interview; what was the hardest part of this project? It can tell you where they are roughly on the scale of "barely started programming" and "clearly are experienced" (an experienced developer can glean this very quickly from someone else's code—even what they choose to paste from Stack Overflow—it isn't as hard as you think).
Reading the code line by line looking for "strong code" is something that beginners think employers will be doing, but they don't. Just like developers don't evaluate libraries like this, they do a more topical, holistic page-through.
Of course it isn't going to tell you exactly how someone will perform on the job. That's not the goal post (the absence of Github usually means you have nothing to look at at all). It just has a few useful signals like looking at a chair that a carpenter has built.
It seems like you are suggesting that the chair a carpenter built in his own time couldn't possibly give you any reliable signal about how the carpenter works, because what if the carpenter was in a rush? Well, let me point out that a rushed veteran and a rushed beginner will cut completely different corners. Kind of like how a skilled artist with only 10 seconds to draw something can still express a great deal of their expertise merely by how they attacked the problem.
If your hiring process always requires github code, then the chance of people faking it, or presenting code that isn't theirs is going to increase. And if you are looking at it for a project a candidate can discuss, you can do the same thing by choosing something from their resume.
In my opinion, it just doesn't add that much and will wind up taking up a lot of time. You would also need to decide when in the process you look at the projects. Doing a proper eval would still likely take hours for a small handful of candidates, so you wouldn't want to do it until a person was well down the interview path. And at that point is it really adding much more than you already know?
So make an impressive one.
My team lead would sometimes ask me to help evaluate potential candidates and sometimes we looked at GitHub profiles if one was supplied. No problem if not, but if so then it's a data point.
The claim above from the article is true. Mostly nothing is actually impressive and if you're not careful it's easy to have something count against you. It's actually a bit of a trap.
As a result of that I decided to make all 50 public repos I had private and instead just work on a single public repo of decent depth/quality.
What I wound up doing is create a small web app in a domain I would never be interested in trying to turn it into a commercial product, then I use it as not a single project, but a series of inter-related projects that build on each other. Mostly it's a playground for me to learn new things and explore ideas. So I first did an API. Then once I had an API I took the opportunity to learn a new front end tech and made a front end with it. Now I'm working my way through learning IaC with it. After that I'm gonna use it to learn serverless.
Each additional project with it makes it more valuable to me. More valuable in the sense that each project completed increases my motivation to do the next one because it becomes a more fully fleshed out piece of software and feels more "worth it".
I haven't switched employers since I started it about a year ago, but I think it'll definitely help with positioning. As it is it helps me with my career anyways as I have a semi-realistic environment in which to try things out to evaluate their pros and cons.
https://github.com/adamtornhill/code-maat
You could identify high quality devs that are suddenly funemployed with a burst of github activity - and reach out to them in a non-sleazy manner.
If someone has tangible contributions through GitHub, they probably write that down in the resume. The interviewers may check their claims either during interview or on GitHub before/after the interview.
The problem is that if a candidate performs moderately well in the interview (e.g. coding interview), while he/she has made many contributions through GitHub, should the interviewer recommend the candidate? My belief is that most interviewers will not take the risk or take the responsibility for a potentially wrong hire.
But someone who created and maintained a good repo, that's actually used by other people (doesn't have to be many), where the code is relatively clean and actually works ... this says quite a lot actually.
Of course the major caveat is that this doesn't mean that someone who does not have this is 'not good'.
Finally, if someone has made any number of contributions and they are objectively 'not good' - this is also a negative signal.
So 'if there is a github profile' and the code/usage can actually be looked at, it might be useful criteria it just needs to be contextualized.
I see a lot of enthusiastic students writing yet another Tensorflow something of 2 files and uploading it to GitHub. That does not mean these projects are interesting.
It is hard to get great project ideas. On the other hand it is quite easy to slap together yet another python data visualization 'project'.
Another thing is, plagiarism. Some people create repository out of cloned files. (if forked, it will be shown as forked on GitHub).
I guess that most recruiters don't have the time to look at that but it definitely could be valuable.
I found this claim surprising. I would have guessed that the narrow majority of software produced these days is open source, but I don't have a citation for that. Do others agree with the article's "vast majority" claim?
How do we know this to be true? Has anyone checked?
Coding since mid-80's, never worked for a company that would allow me to publish work related code, with exception of my time spent in research institutions.
I bet this applies to the large majority of developers out there, but I am extrapolating.
Does it really need to be checked? Seems blatantly obvious to me that most software is proprietary.
Well 30% of websites alone run WordPress, so I could look at the source code. I'm not sure it's as blatantly obvious as you think it is.
If 75 million sites are running Wordpress, I think that counts as “closer to 1000 (because Wordpress is large) than 75,000,000”.
Most of it? The hardware, OS, web browser, window manager, terminal emulator, and text editor all are, anyway. There are a few proprietary bibs and bobs, but really not that many.
> Go and check all gadgets in your house which contains a microcontroller or cpu, how many of those can you get the source code for?
My impression is that most of this IoT-type devices run Linux of some variety. They might have some proprietary stuff on top (though not a ton, given the GPL), but that seems to be basically another check in the "open source" column.
> Ask your car manufacturer for the source code of all its systems.
Well, it's a Toyota, so it's running Automotive Grade Linux, so…
> Does it really need to be checked? Seems blatantly obvious to me that most software is proprietary.
It doesn't seem blatantly obvious to me, but it's interesting to hear your perspective
Do you realise most people's primary computing device - their phone - is running open source Linux?
"you’re in a minority if you’re using linux or some variant of it as your OS"
Ultimately the point you made here is what's important: that there is plenty of closed source that runs the world, even if underlying infrastructure is open.
Do you have a smartphone? Is it LineageOS microG and F-Droid applications or postmarketOS? Maybe something else from quite a limited list [1]?
I use Linux, there is much more software for Windows and it is not open source.
[1] https://en.wikipedia.org/wiki/List_of_open-source_mobile_pho...