So make sure you keep the home pages of such projects updated by saying "this project has been dormant since...".
I trust that someone surfing the net for words I've written is aware that some are better than others. Likewise, I trust that someone surfing Github for code I've written has the same expectation that most of it will not be my best work.
Curating your work is not "free." In addition to the time cost, if I was worried about people assuming I'm a bozo after looking at my work I would probably avoid posting the things I've written that were failures like the Ick gem in Ruby.
That in turn might avoid being rejected sight unseen but it would also eliminate the possibility that someone would ask me, "So, Ick looks like a crap idea. What were you thinking? If you agree it's crap, what have you learned?"
Looking at code that I wrote a few years ago (like when I was first learning OO and Python) and comparing it to more recent projects is like night and day. It helps me to not feel so inferior on those days when I read too much HN and get too hard on myself -- and I would think that an employer would be interested in seeing growth and improvement.
And also just an overall improvement in the quality of the code - less room for bugs, less 'hacky fixes', easier to maintain/extend/modify
On the other hand, think of a candidate that is able to identify a relevant piece of information, and willing to do a little extra work to display this info where the people who need it can easily find it. In my opinion, this is a sign of strong soft skills and general common sense.
I'd be scared if someone were to look at a codebase of component-type-X codebase with a find-fault-fast attitude, if they didn't have extensive experience in designing and building components-type-X already. It sounds like diving head-first into a Dilbert strip or DailyWTF story.
I use a private repository in addition to a public one. All partially finished ideas, quick prototypes, etc, go into the private one. If a project ever gets into decent shape, I move it over to a public one.
Too many people don't contribute at all because the Internet is full of people looking gift horses in the mouth and they figure it's safer to not share at all. And that's not good for anyone.
That's assuming a world, of course, where at least some people actually use free software as something to hack on, rather than as a product to bitch about.
I have looked at other people's code and screamed, "Who wrote this &%*$^#?!?!?"
Unfortunately, half the time it's my own.
Towards the end of the interview I brought it out and asked if the interviewer would like to review some of it with me. I was told "No". "Why not?" I asked. "Not everyone has the ability to bring code, and it would be unfair to look at yours if we can't look at everyone's."
I was slightly flabbergasted, thought the logic was 100% wrong, but was offered the job and took it despite that. I was there about 2 years, and the first 18 months or so were generally enjoyable, but nothing lasts forever. :/
Of course, in many/most cases, more information does help. But it's not automatic.
That episode sticks with me years later because it was the only time it's ever turned out that way.
I have a number of projects I've started or contributed significantly to that anyone can peruse if they want, but I'm definitely not proud of the code in all of them.
If you use this type of post ( http://blog.jgc.org/2010/09/weve-read-your-code.html ) as a wakeup call to make your code better, that's fine. But, would it make sense to remove open-source projects that aren't your best work, with the rationalization that few if any are using them and they are a bad reflection on your coding skills? If your code is bad and is misleading/doesn't work and provides no benefit to others, take it down or fix it. Otherwise, I say leave it alone, and feel free to leave it attached to your name.
I've met more developers who were afraid (imo) to start or share anything open-source even though they certainly could have (because I was working with them, and I did, without any harm coming to me yet). As Frank Herbert once wrote, "Fear is the mind-killer." Don't let the fear of sharing overtake you.
When my wife and I got married, a couple of years ago, we decided to invent a new name for ourselves. I googled each alternative we came up with, and made sure the name we chose wasn't already taken. Sometimes you get to make your own luck!
It really saves a lot of time if you have something out there. Just make sure that the first thing one finds is something you want them to see (not some crappy code you wrote two years ago).
It seems like being active on GitHub is slowly becoming almost a requirement in order to land a good job. I wonder if that is a good thing.
Don't worry, though. I work with "C++ experts" who don't realize you have to allocate memory before writing to it. Knowing how to program is not a prerequisite to all programming jobs.
You can't devote even 2% of that time to building a portfolio and helping possible future employers to evaluate your skills?
I think this really depends on the position you are trying to fill. A track record of shipping code to customers counts for a lot more in my eyes than open source code (unless we're talking about something really high profile like Firefox or llvm). A lot of really talented and passionate developers are plenty challenged and stimulated at work that they don't feel the need to work on hobby projects in their spare time. What could these people write in one hour that would be of significance?
Next year, you have a better job elsewhere.
There are firms that actively ask people NOT to post code outside (citing IPR); and at times, even go ahead and mention that anything a person on it's payroll writes (even if written in leisure time or at home off work), belongs to the firm. The 'extended workplace' clause in terms of contract could be suitably flexed.
You know, there is open source software which isn't on GitHub.
Personally I'm far more impressed with someone who has a commit bit on a project like FreeBSD, because it shows an ability to work together with other people. Having code on GitHub just shows that you're able to fork someone else's work.
I think that's retarded. There are more effective ways to filter out bad apples. Candidates could be asked to solve a puzzle and attach their solution to their application, for example. Most of the really good developers I know stopped coding in their free time after accumulating about 5-8 years of experience. They have other commitments (wife, kids...) and their day job is challenging enough as it is.
There's a huge difference between Github and LinkedIn. You can put up content in any format at <username>.github.com. You get a local backup copy of what you put on their as a side effect of using git to push it. The contents of the repo doesn't belong to Github, so you can post it up anywhere. If GitHub disappeared (they won't) or took down your account for some ridiculous reason (they won't), it wouldn't take that long for search engines to be able to find the new location.
If you can't think of an especially good domain name, I don't think picking one up today is a great idea. That said, I have firstlast.com and I recommend getting it to anyone who commonly goes by that combination and has the firstlast.com for their name unregistered.
Finally, I'm surprised how many hackers are using HN or twitter but aren't active on GitHub. GitHub is at least 10x more valuable IMO. (You have to actively use it, of course, to get the value out of it.)
My ability to eat is, at present, totally dependent on two things: my site continuing to rank highly for bingo-related queries, and (secondarily) my ability to sell fairly expensive consulting services.
A/Bingo exists to make profitable software businesses more money with little marginal cost. It is OSS because it being OSS costs me fairly little and achieves business objectives to me. It is not an act of charity in the slightest: when I donate to charity, the beneficiaries sound more like "my church" or "poor immigrants in desperate circumstances" than "profitable software companies." You gaining from A/Bingo being OSS is a positive externality that I do not optimize for.
Let's talk about the actuarial composite of an active OSS programmer who has two blogs and a Twitter account, shall we? Actuarially speaking, he doesn't link to the libraries he uses: he uses too many, and he very rarely links to any OSS projects these days. When he does link to them, they are typically higher profile projects. On a good day, he tweet about individual libraries he uses. Tweets have an economic value which is epsilon from zero to me.
(If OSS programmers don't typically link to me, who does? Answer: consultants who have implemented A/Bingo and write up about their experience with the intention of drumming up more business, and sites which follow OSS/Rails/etc such as the official Rails blog... whose links, by the way, are worth rather more than links from the actuarial composite programmer's latest blog.)
Let's talk about our actuarial composite programmer, who is a) apparently interested in diving into Rails code and b) insufficiently interested to copy/paste a line into his terminal to do so. Will he make a good consulting lead for me? Well, I do consulting for profitable software firms and can virtually guarantee them "hire me and your bottom line will increase by a measurable percentage." Without going into my exact rates, let's just say they probably would shock the conscience of the actuarial composite programmer, who thinks a) code wants to be freeeeeeee b) he could implement this anyhow and c) "I do not have nearly that amount in my checking account -- what do you offer for the price of a cup of ramen noodles?" (Answer: code available for free, and minimal individualized attention to your concerns.)
Do you see where I'm coming from?
(As an example, here are the numbers for Cyclone: http://github.com/fiorix/cyclone/graphs/traffic )
Why would I want to be a talented coder on Github? The place is lousy with them.
I've met far too many programmers who are reluctant to share because they are ashamed of their code but quick to point out someone else's public flaws. It's just easier to criticize than be constructive. If someone isn't releasing memory properly ,in a public repo, then a 2-minute email will straighten that out.
After graduating, I spent some time putting my personal and class projects on my website. Later in the summer I got a call from a dev manager who found my website accidentally when searching for programming info. He flew me out for an interview and offered me a job.
The job offer gave me the courage to apply where I really wanted to work: Amazon Web Services. It also sped up the Amazon hiring process.
"I'm so sorry."