Not trying to be a Debbie Downer at all, by the way. I moved from the valley to the Midwest (I know, I know...) so I know that there are tons of jobs for people like me (and Vlad, probably). However in my opinion "Don't work for free for a for-profit company!" isn't advice everyone is in a position to follow. I wish I could.
(Disclaimer: I am a junior dev with Django/js experience in both personal and open-source projects, without a degree. So take my whining for what it's worth.)
http://www.jacquesmattheij.com/Idea+Dump+March+2011+Edition
http://www.jacquesmattheij.com/Idea+dump+February+2011+editi...
http://www.jacquesmattheij.com/Idea+dump+January+2011+editio...
http://jacquesmattheij.com/My+list+of+ideas+for+when+you+are...
intitle:"Idea Dump" OR inurl:"idea+dump" site:jacquesmattheij.com
Respect.
If you're a contributor to a well known open source project there are lots of doors that are opened by being plugged into a network of other good developers that are often being pinged by people looking for work to be done. Prior to starting a startup virtually every job that I'd gotten had been either a result of or significantly influence by having done significant open source stuff and to this day, despite having been mostly inactive in open source stuff for about 4 years, I still regularly have people contact me asking if I'm available for contract work.
(edit: I should say I left a career in another industry to pursue programming full-time, so I'm not complaining about having to do other things. I knew it was a gamble, but it was and still is worth it.)
It is in my experience that in large open source projects that anyone is impressed with, the people with commit privileges don't want more contributors.
It is like Wikipedia where if you make an edit to their code or a replacement, they take personal offense to it and will fight you tooth and nail to get it ignored. Or in one case, just ignore me for over a year saying they will merge it and never do it. Or if they merge it, they don't give me credit.
The suggestion to contribute to an open-source project is, by far, the best advice. Open-source projects tend to be (but not all) meritocracies; you will learn far more by contributing to an open-source project because of the big-team culture...
However I originally did think the market looked like you describe until I realized this amazingly valuable insight: My resume was almost instantly rejected by any company where an HR person/recruiter got my application; Any company where an engineer was the first to read my resume I was eagerly contacted in less than a week. A related insight: I don't want to work for companies where engineers aren't doing the hiring.
I also had no interest in moving and found, much to my surprise, that there are a lot great telecommuting options out there these days.
edit: I just want to clarify the tone/message here a bit, I'm not saying "your doing it wrong" but that it's easy to be discourage by being rejected by companies that aren't worth your talent. There was definitely a point in my search where I felt completely doomed, but then I realized that I actually wasn't aiming high enough and was underselling myself.
Occasionally I'm turned down for something like not remembering some syntax triviality, something that could easily be looked up; that's a sure sign that I wouldn't want to be working there.
I've been a hiring programmers for almost 10 years. It's so rare to get a resume with something like a link to a github page. You're pretty much guaranteed a phone screen with me if I see this. I know it's hard for people just starting out to understand this, but demand far exceeds the talent pool. You will always run into the managers that want to see "oracle blah blah blah" experience. When you get rejected by them because you couldn't answer how to solve some oracle specific problem in an interview you just ignore it, and keep applying.
Yes, yes, a billion times yes!!!!!
Even if it's some tiny little project that went nowhere, the fact that you actually have some code that is yours and that you can discuss intelligently puts you well ahead of 99% of the people I see.
It didn't seem to be helping, however it turned out that most recruiters were scrubbing it from the version they passed on to prospective clients.
So after my break, I honestly listed that as 'funemployment' on the resume, with a brief human understandable explanation. (I actually was working on some of my own non-programming related projects, and explained as much.) In the email cover letter, I basically said "Here's my resume, but I think my website does a better job of explaining my real strengths as a developer."
An interesting thing happened. Without exception, any company with an HR department totally blew me off. And without exception, any company where the owner screened the resumes, I got a phone screen and a real interview.
I also think that's something where having a custom domain for your email really helps. If any tech-savvy person gets a resume from blah@not-gmail-or-yahoo.com, they're pretty much going to instantly open up a browser and type http://not-gmail-or-yahoo.com.
That's the important thing. Sometimes the initial excitement of seeing that github account wanes when you realize 8 projects are forks of existing projects with one change, and the other two are a stock rails project with only three or four minor commits on top of that.
I'd generalised it from another webapp I was buildingfor someone else (that didn't pay) summer last year.
https://github.com/dublinclontarf/SchoolOut
This is pretty much some of the only code I've made available in public. Should I put up the entire webapp that I built during the summer? It's not doing anything.
I'm hoping to finally launch the private beta this weekend, there are still some invites left. You can sign up for one if you like at:
It has some other cool stuff like auto PDF generation and private cover letters/videos.
That it's populated with tiny little projects that only work exactly for what they were intended, didn't seem to be much of a deterrent to anybody.
One of the things that held me back though was that I wanted the projects to be "ready." To get them to a point where I can show them off instead of having several abandoned and "poorly written" projects. (Quoted because you really are your own worst critic.)
I now think it's much better to show you can ship on your ideas. To build, publish, and move on to your next idea. It's a much stronger indication of your passion for programming than words alone. Saying "I like to hack in my spare time" without further evidence just doesn't have much impact.
Does anybody disagree? Are there cases where publishing imperfect code and abandoned projects alongside your best was a disadvantage to you?
I'm surprised more people don't have it on there.
My recommendation is find something in open source you use and see if they communicate in IRC or some other open medium. Probably not great universal advice but it has worked for me.
There are no undone open source projects!
They're all undone.
There are always features to add and bugs to fix. Except maybe for TeX.
(For the record, I wasn't giving advice :P )
That's why you shouldn't work on Sinatra and other open source tools meant for developers.
Instead, build an app for a much wider audience. Do what an entrepreneur trying to sell his app would do, but with open-source - i.e. the end goal being to have real users that appreciate your work.
Here's the perfect example: https://github.com/michaeldv/fat_free_crm
I would certainly change the wording a little to weed out the people who will just try to take advantage, but the overall strategy seems quite appropriate.
This will work very well for a person who's confident in their skills, but maybe having a hard time finding income from traditional sources. Get in, kick butt, make a statement and earn income.
I swear, every time someone (with a known/useful open-source contribution) came to an interview for any company I worked for, everybody was drooling uncontrollably and thinking "how the hell could we please this guy to stay, after all, he's Google material".
It's also a negotiation uphill battle to go from $0 to $50,000/year. Any looming economic crisis multiplies the battle, and in turn, valuable enthusiasm for the industry.
His work is probably better than most, but his self-esteem regarding his abilities is apparent - especially to an employer.
I don't recall which company, but in the last two weeks, one of the big name startups put out a competition to solve a problem regarding log file parsing. It was an opportunity, basically, to get a job with them. Now, with this approach, the OP might be competing with thousands of others - and his chances of standing out are reduced. He's taken the inverse approach, and HE can pick the challenges he wishes to solve, with same end goal: income.
It's not unique - it's what a lot of driven people have done in the past to get in the door somewhere.
But he should totally charge an hourly rate instead of free. I know people would pay for it.
I generally agree with your parent that he ought to spend that time doing something that can showcase his skills and increase his chance to get hired. He can gain more exposure working on something in the open (a personal project, an OSS project) than doing some work for a single company.
I would say the exceptions would be: a) it's a charity or a cause that you like, or b) you really need to improve a particular skill and it's more of an internship you're looking for.
Either way though, I give you mad props for initiative.