There are a lot of increasingly shrill remarks out there about how everyone should be doing open source projects in their 'spare time', so no-one has any excuse not to have a track record of FOSS contributions... frankly, it's bullshit.
I work in a closed-source shop (for some very good reasons, we can't open) and our devs do sterling work of a sophistication not seen in most projects, open or otherwise, solving a very difficult and rather open-ended algorithmic problem. On a good day, we get a lot of sophisticated work done.
Strangely, at the end of one of these good days, no one wants to go home and write a big fucking pile of code - we have girlfriends/wives/families that haven't seen us for 12 hours and probably aren't going to want to use the remaining hours (and typing time) to write MORE code. Even if that was a good idea - we are paid for full-time work here which means ideally we go home and relax, not flail away on endless side projects.
The simple, unassailable truth is that having strong contributions to open-source projects is a massive advantage in any resume-scanning and hiring situation. And as a hiring manager, seeing extensive open-source work is better than seeing a resume. That means the advice is ALWAYS good advice. There is never a situation under which the proper career advice is to not do good visible work.
This doesn't mean it's a requirement, or should be a requirement, but it IS a reality. If you choose not to participate, that's fine, but it comes with an inarguable cost. You can try to convince us all that it shouldn't, but it does, and it probably always will.
I am well aware that strong open-source contributions are an advantage. What I find objectionable is not this advantage. It's the fact that failing to secure this advantage is being portrayed as an obvious professional failure that can be simply rectified by working an extra few hours a night on side projects.
It is propaganda from open source people, many of who have achieved considerably less in their open source projects than a casual inspection might suggest. Usually I come away from people's open source projects with a cheerful acknowledgement that this person (a) likes cool stuff and (b) appears to be able to write working code of a kind. This is good - but not that good.
There's a big difference between 'I wrote some code, look at me' and 'I contributed a competitive register allocator to LLVM' or 'I rewrote the scheduling algorithm for major open source FooOS'. The latter are 'strong contributions' and deserve the 'massive advantage' of which you speak. A handful of pet projects constitute a code sample that suggests that the person can form syntactically correct code.
The underlying issue is that from a hiring perspective, all other things being equal, a candidate that can provably show things is ahead of the guy who simple says he can. Even if "we" all sit around and minimize that as some trivial nonsense that anyone could do and that it proves, at best, they can form "syntactically correct code", the fundamentals of the situation haven't changed. Showing is better than saying. It always will be.
There is an undercurrent of a strawman, as well, in this conversation. I don't think anyone out there is taking actual trivial github stuff and basing hiring decisions on it. But I wouldn't be surprised if some superficial github stuff haven't gotten people past a resume screen that they wouldn't have otherwise gotten past.
When someone says he did something, a github commit log showing it is definitely better than just him saying he did it. However, the point you actively dismissed was that a commit log of some mundane contributions is much less impressive than a resume describing work requiring a lot of skill.
'I wrote some code, look at me'
Throwing code over the fence is not what open-source is about. I look at it as -- is this person capable of building a product for other people? Is he a team player?
That's not a skill that comes so easily and requires lots of experience or natural talent at other things than churning out code.
Anyone who dreams of becoming faculty must do work that is publishable, which often means taking substantially lower-paying "research" versus "corporate" internships throughout their younger years.
I also can't trust your references, because you'll only give me ones that will say good things about you, and any digging at your work history will only uncover "yes he worked here" responses.
I want to see open-source contributions because I like being around people who are passionate about solving problems with code, and it is my experience that people who contribute to open-source projects, or start their own, are of that mindset.
I don't think that they are the only people who are passionate, but I want to make a choice so I can get back to solving problems.
If you're making the hiring people work harder, you're going to miss out. Being able to show examples of your work is the best way to do it.
How do you feel about tests? or "write this program that does [x]" spec projects instead?
Realistically, the code and details of are covered by NDA. The task solved, the huge difficulty of same, the overall success of the task being solved, demonstrable fluency in related but public areas of computer science, and the commercial success (modest or otherwise) of the code would not be.
If you don't understand this, or couldn't say the same things about what you're doing, maybe you're not working at the same level, and you are welcome to go fire up the GitHub account and solve tic-tac-toe in Haskell or whatever the hell it is that's meant to be so impressive.
The closest analogy I can come is - say you wrote a pile of LEDA (not a invite to debate if this is a good product, but it's certainly substantial) and you've got references who are in a position to know that say, 'yes, Joe Bloggs really did write all the graph algorithms or geometry algorithms or whatnot in this package'.
Well, you're within your rights to 'not believe a word you've said'. But this falls into the thing I'm complaining about - the whole pathological distrust of programmer achievements. How do you think engineers or commercial research scientists in other fields ever get hired, for fuck's sake?
There's a distrust of programmers because many programmers are not at your skill level. You don't seem to have problems with finding employment. Perhaps open-source contributions don't matter to people of your caliber. But you need to realize that it's not HR or management asking to see your code -- it's your peers.
We need as many metrics as we can to find out who's good and who says they're good. Looking at code and examples of work is exactly how you do that. You can argue all you want, and it may not be fair. Neither is "You have to have a 3.5 GPA to get a job here."
It comes down to this: filtering by OSS contributions gives you many false negatives (as the OP has complained) but virtually zero false positives. In hiring, a false negative is a bummer, but a false positive is disastrous. It would be irresponsible of me as an interviewer not to take this into account.
If it someone's pissed because they fall into the false negative bucket, that's rough, but I'm the one calling the shots and taking the risks.
(1) The person can apparently code when he's allowed to pick what he wants to work on and doesn't have any real pressure, and
(2) He has time to work on open source.
Most companies need people who can code well under pressure and when they have to work on something they don't necessarily want to work on.
By screening by OSS contributions you will indeed eliminate one kind of false positive--they people who can't code at all. Other kinds of false positives, such as people who can't work well except on self-selected projects, will get in.
And from the developer perspective, just the fact that it helps you avoid idiotic CS101 tests over the phone at every interview is enough to make it worth.
How isn't that a disaster?
If a false negative means you have no awesome candidates to choose from, that's a problem.
If a false negative means you have two awesome candidates to choose from instead of three, that's irritating but hardly a disaster.
Thats fair, but the thing is that its YOUR PROBLEM(as a recruiter), not mine as a great "closed source" engineer
I know bunch of people who work on very cool and interesting problems/projects binded NDAs and have no problem on finding a new job if they want to. Hell Facebook, twitter, google are all closed source(mostly) so wouldnt you hire ex-Facebook engineer if he has no open source commitments?
Lets face it - its employees market, where companies compete for bright engineers. If you are saying that you only want open source commitments - thats fine, but you are betting on smaller market and missing some great talents. So you are more "lazy" recruiter, who dont want to look deeper, do facts check, test candidate etc. But again its your own problem, not mine.
Not every programmer is a rock star ninja. Most are mediocre. Some are pretty bad but know the theory and can play the resume game, pass the whiteboard test, etc. There are plenty of books and lots of advice that will teach you how to fake your way through a resume, cover letter, and interviews.
Worked at Google/Facebook/Twitter? Great. Odds are I can't afford to hire you. You're not the target of open-source filtering :)
Saying "no one wants to go home and write a big fucking pile of code" probably means that regardless of technical aptitude, you wouldn't fit in well with the kind of folks who love and encourage doing just that in their spare time. Most of the developers on our team have and love "endless side projects."
Not bullshit, just different.
Wouldn't have to be open source work, just work you could show.
It's tough to hear, but the goal of a new employer is not to give us what we deserve for working hard and being skilled.
The employer's goal is to maximize their chances of hiring someone good.
If a hiring manager has two people that seem about the same but they can see the code one of those people wrote, it's a no-brainer to go with the one who has a portfolio.
Agree with you that some lame open source patch doesn't matter. But if someone's done significant work in public, or even has non-open-source code they're able to share, ignoring that would be an insane choice for the hiring manager to make.
Yet, mysteriously, civil engineers, material scientists and statisticians somehow keep being hired and the work keeps getting done. Baffling, I know.
I bet you'd hire a programmer without a degree who can do the work before you'd hire a civil engineer who learned how to build stuff off the Internet. :)
but since people can show it in the programming world, you are at a disadvantage if you don't.
if a civil engineer had some way to show what they could do, I'm sure it'd give them an advantage.
At the same time, seeing how you handle version control, how you deal with contributors and bug reports, all that matters. Being able to see that is much better than taking one's word for it.
So yes, as someone who previously worked on a shop where no code would get out, I can relate to the feeling. But the above is still true. A few things you can do about it:
- open not the products you have entirely, but modular parts of it.
- should the previous suggestion not be an option, get the company to run a blog, and have you/your workmates share solutions at a discussion level.
- get the company to allow developers to work 10%, or 20% of their time, on open source. It'll help keeping you guys sharp, at the same time it helps you putting a name out there.
Also, contributing to open source projects doesn't necessarily need to happen in your "spare time". Companies contribute to open source too.
Github track records aren't just about the fact of seeing your code; it's about the fact that you're proving you can work with the OSS community projects. That's a skill set in and of itself, as demonstrated by the recent extremely public bickering between gnome and canonical, for example. If you have a demonstrated track record of navigating OSS project drama like that and still getting your patches pulled into trunk, a company that wants to build a relationship with an OSS project is vastly more likely to hire you.
Re-reading your comment on preview, it sounds like you're looking at this like "Okay, I've coded all day on closed-source, now I need to go do up some erlang on some personal bullshit project and commit it to github, with unit tests and a meaningful commit, just so I have a track record to point to in a year or more when I'm looking for a job."
And I'm not saying that wouldn't work, but more that that's not the point at all, and any company hiring based on that is exactly as clueless (albeit a bit more up to date) as the company hiring based on a minimum of CCIE + RHCSA when looking for developers.
Ditto other cultural fit issues like "Your personal life should come second to our business desires", "Marriage and children are unreasonable burdens to saddle us with", "You should be loyal to us; we may reciprocate, but if not, it is just business", etc, etc.
We're not talking about companies demanding that you do open-source work for them before getting hired. It's about the idea that having some code publicly available somewhere is a good way to improve your chance of being hired.
Calling attention to (say) a 250-line neat hack - say a patch to a driver, or solving some elegant toy problem - would constitute a detraction from the programmers' major contribution at work over the course of years.
I view this new fixation on open source contributions as a continuation of the pathological distrust for programmers' skilled contributions that used to be expressed through high-stakes (or even low-stages) white-board coding challenges. I'm not sure which is more irritating.
You act like the code you've written that no one can see should matter to another company interviewing you. There is no way for a interviewer to verify the work you've done at your previous job. Like it or not, if you are looking for a new job it is your job to impress them. Fail to do that an risk them picking someone else.
That said, I don't see anything wrong with wanting people that have some open source contributions. It doesn't have to be anything along the lines of having written the linux kernel in your spare time. However, it should be something that you put serious time and thought into.
It's great that there are companies which look down on you not using your spare time to do extra programming -- you probably wouldn't want to work at places like that anyway.
Do you work on an island?
So what you are saying, is that, given that, unless I went home and coded and contributed to an open source project during my free time, I am a shitty engineer, not worth your time. Get real. Incidentally I work elsewhere now. They asked me to solve a programming task before an on site interview, and then...shock, I had an onsite interview process.
Do you think that when a heart surgeon from NYC applies to work in Seattle or LA, they say, "That's great that you didn't kill anyone at First General on 57th street, but, do you have any published video of you doing surgery pro bono we can watch so that we know you're not full of it?"
I think their diploma and med license are sufficient. I also think a lot in hiring decision for particular surgeon can depend on their peers opinion.