You are a young programmer-by-vocation in a modern, developed country such as the USA or Germany. You could be fresh out of high school, studying for a degree in computer science or IT at a university or you could be fresh out of university with the degree in your pocket.
You’re also looking for a job.
As you might have found out already, getting a job as a programmer is difficult. The reason for this is that as far as young “inexperienced” programmers are concerned, supply exceeds demand and companies are unwilling to take risks as long as there are more experienced people applying for the same job.
Getting a degree alone really doesn’t help either. Simply too many of your competitors have the same degree, be it Bachelor’s or Master’s. A PhD won’t help much either — the only thing it says about you is that you wasted three years of your life focusing on some pointlessly obscure subject.
So how do you get more experience on your resume and rise above your competitors in this situation?
What you’re looking for is experience. Anything that says “I’ve done actual work in this area before” is good. There are several ways of getting experience.
You could start off small, doing whatever work you can — usually this means you’ll be building websites for a few years with not much hope for doing much else. If you do choose this route, at least be professional. Don’t reinvent the wheel. Use existing Open Source content management systems and customise them if needed. Too many companies and people out there suffer from the “not invented here” syndrome. Don’t cripple yourself with it.
Also, if you’re working with the code of some Open Source project, you’re bound to find bugs in it. Fix them and submit the bugfixes. If your project requires features the Open Source program does not have, add them and submit them. Remember, you’re looking for experience to put on your resume. “Project X” might look good, but what about “Project X” and “Added feature Y to Open Source Project Z” without any extra effort?
Open Source projects are a very good source of experience these days. What’s even better is that you can easily cherry-pick: work on only the stuff you like and when you like. You won’t have the same luxury in the future.
There really is no catch to this. You can pick any project you like, grab the source code, improve it, contribute the improvements and presto — more bonus points on your resume.
Working on Open Source projects also shows that you care about your profession. That you’re not another loser who does a sloppy job just to get paid.
If you’re afraid of jumping right into big projects, you can start off small. Maintain packages for your favourite distribution, become a betatester somewhere, submit bug reports with fixes, etc. There’s plenty to choose from.
You might be thinking that big companies are likely to ignore such things. Yes, that’s true, but if, for example, they have to shift through the resumes of a few dozen graduates all with the same degree and no actual experience, then who do you think they’re more likely to hire: someone with no experience or someone who’s worked on various Open Source projects? It also helps if the employer has actually heard of these projects.
Taking a step back, there are interesting “side effects” to this.
First, more Open Source enthusiasts will be joining big companies. For example, quite a lot of people on the Microsoft campus run Linux. The merits of Open Source Software have been argued many times before, so I won’t reiterate, but there’s no doubt in my mind that Open Source is a good thing as long as companies know how to use it.
And second, a lot of good Open Source projects will be getting much better.
Open Source offers wonderful opportunities for both people and companies. Not taking these opportunities would be shooting yourself in the foot.
The above rant was inspired by a conversation with Martin-Eric.