Many people are absolutely enthralled by Linux and open source, and what could be better than taking your hobby and making it your career? Is it really possible that you could be paid to do something that you love?
In this article, I'm going to share some tips and advice on how to get your dream open source job. I'm going to discuss the kinds of opportunities that are available, how you can set yourself apart from the pack and ways of making your CV stand out.
I'm also going to throw in some personal experiences and anecdotes that may help you move towards being gainfully employed in the open source industry.
The good news is that the open source world is brimming with opportunities for many different kinds of roles. While you might worry that companies are only looking for programmers who can code C with one hand tied behind their back, this isn't actually the case.
Programmers, artists, designers, documentation writers, testers, business development and sales, plus many more, are all options available to you. The challenge isn't finding the right job; it's putting yourself in a position in which you have everything the employer could possibly want in a candidate.
Part of the reason that I was keen to write this article is that I'm lucky enough to have my dream open source job: I work as Ubuntu's community manager. Not only this, but I've also had two other dream jobs too, as both a full-time journalist and professional open source consultant. It really is possible to get the gig you want - it's all down to hard work and effort.
Finding the jobs
The first thing you should do is get a firm idea of what kinds of roles are available and what they involve, as well as whether they interest you and match your skills. While I'd always encourage you to expand your horizons, when you go for a job the employer wants to know that you have a strong foundation in the role they're looking to fill.
If you're expecting to be able to find a job and learn what's needed to do it as you go along, you're going to struggle unless you soak up knowledge and skills like a sponge. To prevent this, always look for jobs that play to your primary skills.
To find out what jobs are available, you should first take a look at the websites of organisations that you'd love to work for. Would you want to work for a Linux distributor, for instance? If so, check the careers pages of Canonical, Red Hat, Novell, Mandriva and others. Note down the jobs that interest you and read their requirements carefully.
Here's my first tip: really, really read the job requirements. There's nothing more infuriating than reading an application from a candidate who clearly didn't read the job description. Also, listen to those requirements and honestly assess whether you fit them - if the employer's looking for five years of Python programming experience and you only have a year's worth, don't apply anyway thinking you can change the company's mind. You want to avoid getting a black mark against your name for future job opportunities.
Employment websites are another place to look for jobs. Bear in mind, though, that many hiring managers only ever post roles to employment websites if posting them publicly on the company website and spreading the word themselves yields few decent candidates. In such situations, you might find that the hiring manager is a little more anxious to get the role filled, but will arguably have a lot more candidates.
This is why I always recommend you keep a keen eye on company websites for new positions as they open up.
Many of us face the same question at one point or another in our careers: all jobs seem to require lots of experience, but if you can't get a job because you don't have enough experience, how do you get the experience in the first place?
Fortunately, this is the area in which you have quite possibly the biggest opportunity open to you. The very nature of the open source community is that it's one in which anyone is welcome to participate. If you're new, there's always someone who's keen to help you learn the ropes. If you don't have the necessary experience for the jobs you want, now is the time to get some - and the open source community is a wonderful place to do this.
Let's look at an example - imagine you want to be a programmer. There are thousands of projects out there that are crying out for help. Get involved, and get some code included. When you have more experience with the project, work on a new feature and get it included. All of this experience of writing code that hits the mark is great for your CV.
This reminds me of a story I heard some years back of a smart young kid who was desperately trying to get his break and find a job. He had no commercial programming experience, left school when he was 16 and had a pretty thin CV. Unfortunately, the guy that interviewed him was an arrogant, disrespectful idiot who immediately started dragging this kid over the coals and accusing him of wasting his time.
When the interviewer rather pointedly asked what experience he had and why he should get the job, the kid pointed to the Firefox window running on the interviewer's computer and proceeded to tell him which features he had contributed to.
He got the job for two reasons. Firstly, he'd demonstrated his capabilities by using open source and community development as a place to both improve these skills and to help a project. He had real code included in a product used by millions of people, and he had worked with people and processes in order to achieve this.
That was only half of what impressed the interviewer, though: the other reason is that he'd shown the foresight to get out there and get experience for himself. This kid wasn't just seen as a talented programmer, but also as having the golden ticket that all hiring managers are looking for: a combination of personal and professional motivation.
This is one of the most wonderful opportunities offered by free and open source software. We have a global network of projects that not only provides a stunning place to learn new technologies and collaborate with leaders in those fields, but also provides a means of demonstrating your personal sense of motivation. You have the chance to further your life, while all the time helping to make free and open source software better for other users.
As such, the strongest piece of advice I can provide in this entire article is for you to get out there and contribute to some open source projects. Get stuck into projects, participate in public discussions (these show how good you are at working with other people), handle conflict and disagreements professionally and politely, and build up a growing list of projects that you can cite as using your contributions.
Being able to walk into an interview and tell someone that millions of people are using your code already gets you into the category of applicants to be taken seriously.
This piece of advice does have one caveat, though: if you're going to participate, make sure that your contributions are significant and sustained. Providing 100 examples of projects you've worked on where each only represents a few minor contributions before you got bored and moved on doesn't send the desired message. You want to prove that you have an eye for detail and a commitment to solving real problems in a long-term way, and being a drive-by contributor doesn't show that.
If I were interviewing someone, I'd much rather see two or three examples of solid sets of contributions, in which they'd delivered significant value and had the respect of their peers in the community. This sends out a much stronger and more positive message.
There's one final positive to note about carrying out significant, sustained work for a project - it will build your reputation. So many people get their dream jobs because they have a positive reputation for great work in a community.
Many people I know started out by hanging around on IRC channels and mailing lists, contributing to open source projects. They were then often offered jobs as a result of their community credentials and achievements.
In this modern world of social media, where a constant flurry of information surrounds us, the traditional approach of separating our professional and personal lives has been thrown out of the window. Back in the old days, you were in professional mode when you put the suit on, and when the suit came off, it was time for five rounds of Sonic The Hedgehog and a box of wine. There was a clear distinction between work and play.
Today, things are different. Most of us use Facebook, Twitter, Identica, Linked In and other sites, and many of these can easily intermingle the two. Facebook is a great example of how it can get complicated.
I know many people who have started on Facebook with a policy of adding only friends and family. If only it were that simple. What about colleagues that you're friends with? If a colleague adds you as a friend on Facebook, it's going to feel awkward when you deny the request and tell them that you don't accept colleagues.
As such, what typically happens is that a fairly locked-down profile page ultimately gets filled with work colleagues, blurring the dividing line between the two. I've always been of the view that you should be who you are, both at work and at home.
I've always been happy to share my personal life professionally, and vice versa. I still have much to learn in the world, but I'm happy for my professional peers and the community at large to know that I listen to metal, that I love my wife and that I enjoy playing gigs with my band. Those characteristics are not things that I can switch off - they're defining ingredients in what makes me who I am.
The trick isn't segregating the people in your life into different groups, it's being sensible and conscious of how you communicate to the group as a whole and in different places.
This is even more important in the open source world. The open source community is exactly that - a community. It's a set of professional relationships, but also a set of relationships that were forged and furthered in bars, at social events and in other casual environments. Our social nature is what makes our community so much fun to be a part of - don't hide that too much under a professional veneer.
Your CV: a foot in the door
Ever since I became a manager and started hiring people, I've felt privileged to know what it's like to be on the other side of the interview desk. I almost wish that everyone had the opportunity to know what it's like to hire people, because it helps you to understand and fix deficiencies in your own approach when applying for a job.
Not everyone has an opportunity to learn these things, so I'll share some of the most important things to focus on when hunting out your dream job.
The first area of focus absolutely has to be your CV. With the open source industry being so popular and so many people wanting their dream job, positions often get many people applying for them. Each and every position I've ever hired for has had a queue of people who want to get the job (Canonical is a place that a lot of people want to work at) - and the CV is their first point of contact with me, and what I use to decide whether I want to interview them or not.
CVs come in many different forms. Some are a single piece of paper, some are a short novel. Some are boring and flat, and some are vibrant and colourful. The trick lies in getting the balance right. A flashy, colourful CV with little or no content is not impressive. Neither is a boring CV with reams and reams of content. Some CVs are littered with spelling mistakes and other rookie errors.
My recommendation is to stick to the following guidelines: Keep it short and sharp. Cover all of the key bits of information that you want the employer to know, but don't overload someone with too much detail. Present your best attributes and do so honestly and clearly, without jargon. Ensure the important points stand out.
While I read every CV I receive in full, I know many managers who don't, and who merely skim-read them. To counteract this, make sure the key pieces of information - such as your skills, educational achievements and employment history - are highlighted in a bold font to make them stand out.
Cover the major bases. A CV is a document with the purpose of presenting you and the skills that you can offer to a prospective employer. Make sure that you give them all the information they need. There is plenty of reference material online on how to build an awesome CV.
Remove all traces of ego. I've read some CVs in the past that have been filled with self-congratulatory fluff. This doesn't send a positive message. Sure, your CV is there to sell you, but let your skills and experience speak for themselves - rather turning it into a long, corny advert.
Don't lie. This seems obvious, but it bears repeating: don't lie. While you may get away with it on your CV, the interview will usually uncover any untruths. Getting caught telling fibs puts your future opportunities at risk.
Once you've got a rocking CV, it's on to the interview! The advice for this stage of the hiring process is simple: be modest, honest, and answer the questions as best as you can. Also, when the interviewer asks if you have any questions for them, use it as an opportunity to learn more about the role. Always have at least two or three questions ready in your mind.
Getting your dream job is a large topic, and there isn't room to cover it all here, but I hope that some of these tips will help you progress along the road. Good luck!