There is a common sentiment seen when discussing hiring developers – particularly Junior level, intern level, and whatever-your-entry-level-is-called – that having a public repository showing off your coding talents is extremely desirable. Open-source contributions are seen as the holy grail with early career development.
I am not here to deny that contributing to open-source projects is a good thing. Let's get that out of the way: it's awesome to contribute to open-source software. The world is better because of open-source software.
Imagine, however, the following job post:
Looking to fill an entry level outside-sales position. Include references to social media posts advocating for brands you support.
That seems a little suspect, don't you think? It's inherently absurd to expect to see someone volunteering their time, energy, and their reputation on advertising something to take a sales job.
Looking for office clerk for law firm. Must have a history of volunteer work for x-y-z social causes.
Little weird, right?
It's not just weird, however. It creates a pretty bad feedback loop. Let's take a look through a few hypothetical stories about some hypothetical people. We're going to assume that all of them have just graduated with a computer science degree, having taken the same core courses, at the same university, with relatively the same GPAs.
Wanda is going to be one of those developers that just gets it. She had some struggles in college, but was able to do it all and get her A- GPA. She also plays Fortnite for way too many hours a day. She occupies her spare time with taking care of her two dogs, and Fortnite. She has a few things on her Github portfolio where she pull requested a few projects, small bugfixes or readme fixes. Wanda doesn't work at the moment, but doesn't really have any excess money. She's going to college on student loans, and is going to have to pay them back later.
Ivan publishes little utilities on his Github portfolio that he used to make his life easier. He has a tiny package on npm that gets about a hundred downloads a week. Ivan breezed through his CS curriculum, and understands the math stuff really, really well. Ivan occupies his spare time by developing open source software and going to the occasional party. Ivan's family is wealthy, and he doesn't have to care about working through college, and has connections through his parents and siblings that can help him if he really needs the help.
Jim has no presence on Github. Jim has no social media, at all, actually. Jim had to work a little harder to get through the CS program and had to challenge himself, because he didn't have a strong foundation in programming – or even more than basic-just-graduate-high-school level math – from before college. Instead, Jim is working about 30 hours a week to pay for school, and has to burn time commuting to cut the cost even further. In his downtime, Jim rides his bike. Jim's work ethic is incredibly high, and his grades are comparable to Ivan and Wanda.
None of these people are more or less suited for an entry-level job. Any entry-level job in development is not going to actually require experience in anything more than problem-solving skills and basic programming. If you need more than that for your position, you are not hiring an entry-level developer – you're hiring a mid-level developer. Remember, there's Junior Developer, Developer, and Senior Developer.
Whatever you want to call it, by focusing on open source contributions you're ignoring a huge pool of hard working individuals who may very well be a better fit for your position simply because they have been able to devote more time to positioning themselves to work for free, rather than having other hobbies and life experiences. Jim had to work. Wanda likes to game. Ivan likes to develop in his spare time, too.
If Ivan is an attractive hire to you based on the fact that he has some open-sourced contributions, then you have to ask yourself:
- Why is it important to me that my employees do their work in their spare time, too?
- Does the need to program in one's spare time make them an inherently better developer?
- Does Ivan have other assets to him that will help make him a better fit for the team, like being sociable, polite, or well-rounded?
- Am I going to give my employees time on the clock to contribute to open source software, if I find this so important?
Seeing code from an entry-level developer can be useful to evaluate where their experience level is, and if they are a good enough developer to be a good fit for your company.
If you feel as though you must see a code sample before hiring an entry-level developer, then I propose that you should implement a paid coding portion of your interview process as one of the final parts, and ensure that the actual coding portion is a relatively short problem to solve. This ensures that:
- No potential employees have to work for free in order to even try to gain employment at your company
- You are forced to assess candidates better on their soft-skills that make it easier to work with them, before seeing just how much training they will need.
- You are starting the dialogue with a potential employee on equal footing: you are asking for something from them, and giving them something in return.
I think it's worth $50 for a two and a half hour code-challenge. If your company can't budget $50 a few times for a potential final-round hire, then should you really be interviewing? You're going to have to spend time and money on training any entry-level developer, making that $50 a drop in the bucket.
We've got to stop expecting people to work for free for their community before they can work for us. It excludes far too many good candidates on the basis that they should give to the community before they can join the community of software developers, and that they have to do it for free in lieu of taking care of the million other things that make up living a life – and, often, paying for the roof over their heads.