Open Source Your Career
A couple of years ago, I kept noticing that people I’d met at different events were landing really impressive jobs. Those “how do you get thatjob?” jobs. I also noticed a definite trend: the people with the unspeakably cool jobs were also people who had struck me as high fliers, who led open source projects, gave talks at conferences, whom I knew as authors or bloggers, those kind of people.
We often talk about getting involved in open source in terms of “contributing”, as if this is a one-way arrangement and as contributors, all we do is give to the project, getting nothing in return. I say “nonsense” (that’s the paraphrased version, this isn’t my blog!). Getting involved in open source is absolutely the best thing you can do for your career. Open source can be a huge leg-up on the career ladder, and getting involved in open source is the best thing you can do … for YOU.
Getting open source on your CV is guaranteed to benefit your career development about as much as having a twitter account is guaranteed to improve a company’s sales. Which is to say, probably, but not measurably. You certainly can gain work experience but doing open source, on top of your day job, when your heart isn’t in it, is a bit of a hard way to do it. A wise man named Wez Furlong wrote “Don’t just ‘do open source’ because it makes your resume look good, do it because you find it interesting”. Wez himself is the product of dabbling in open source and getting job offers as a result; he’s a core contributor to PHP, Chief Software Architect at Message Systems, and has personal projects so geeky that I understand about one word in two when he explains them.
In addition to the above, Wez is right – learning anything by doing stuff you’re interested in is the most stimulating, most memorable way to learn. You’re doing something you want to be doing, and you can use those new skills in your professional career later on (either in the job you have now or one that you hope to get), that’s quite a prize for spending your free time with open source. I don’t believe, and I don’t believe many employers believe, that having skills you’ve only done on a voluntary basis undermines the value or validity of those skills. If you can do something, and you want a job that needs those, then SAY YOU CAN DO IT.
This article is usually given as a talk, and the very first time I gave the talk, someone from the audience came up to me afterwards and told me that while he was sitting in my talk, he’d received a job offer for what would become his very first programming job. He had no prior experience but while studying he had built some WordPress plugins and contributed to the Drupal project; his employers had been impressed by his skills and his willingness to self-start, and made him the job offer.
There are many ways to get involved in open source software, but the most obvious way is to write code. Open source can deliver some very valuable experiences when you get involved with it at a technical level. When you work in an enterprise setting, there are people to do systems administration, database administration, infrastructure setup, and so on. When you get into open source, you will check the code out of a repository, and you’re responsible for getting the rest of the stack up and working.
I’m a PHP developer, but I’d come into that having done a few other things, and I had a PHP development job in a large company that had all of the above roles in place. I moved to be a development lead at a creative agency, a much smaller company. Purely because I’d been tinkering with open source PHP apps, I had just enough (thick skin of teeth enough!) skills to keep that job long enough to actually figure out how to do the job. The day their server blew up and I realised I was expected to fix it was the day that I drew on the many experiences of trashing my home installations and having to recover those as well, and rebuilt their server as if I knew what I was doing (at least, I hope I looked like I did!).
When it comes to moving jobs, some places will ask for a portfolio of your work. This is fine if you make things that people can see – but I’m a server-side developer and a lot of my work is “glue” code that goes inside the guts of a particular organisation’s servers, which means this can get quite tricky. Being able to point to a github account or otherwise cite examples of things you’ve been doing in open source, where potential employers can obviously come and see that source, is a great way to be able to provide that evidence they are looking for (github actually has a feature for this – check out http://resume.github.com).
Getting involed in a project can seem daunting but the reality is, most open source projects are populated entirely by people who are delighted to meet someone who is as interested in their project as they are! I’ve been giving this talk since before I made a single code contribution to any open source project, now I run one – so yes, it’s easy to get involved.
It’s a cliche that open source projects ask new members to fix bugs and it can seem like they’re just leaving the lowest tasks to the lowest members of the community. In fact, this isn’t the case at all. Very early in my career I worked on a technical helpdesk and I quickly learned that a good helpdesk developer must understand all aspects of the system in front of them (because the bugs never show up in the parts of the system you already know about!) to a higher degree than the developer who originally built the system, and probably specialised in that aspect. By the same token, fixing bugs on an open source project will give you great visibility of all kinds of different bits of the project, and let you see what goes where, learn to debug different bits of it, and so on. Even if you’re just sort of browsing the list and trying to replicate a few things, adding additional information, it helps.
Interacting with users and other devs on the forums and channels is a key skill; I’m sure I’m not the only person who thinks that most development project leads shouldn’t be let loose with ordinary users! The people who are moderators and operators on those forums and channels are rockstars. It is a hard job, and you might think it’s not really technical enough to advance your career, but as the old adage goes, it’s not what you know – it’s who you know. I recently had the pleasure to meet someone who had corresponded with me when I first blogged about this topic. She was a mod on the Ubuntu forums in her country, got invited to attend a related event, and while she was there she landed a new job working on migrating a company’s internal systems over to open source platforms. This is a shining example of the kind of thing I mean – and to meet her at OggCamp this summer, another open source event, was fantastic!
On the forums, a comprehensive answer to a common problem becomes the de facto documentation for that particular topic. From there, it is a small step to contributing documentation to a project. Many technical folk seem averse to documentation but to me it is simply asynchronous teaching. I would teach you but since we won’t be in the same place at the same time for me to do that, let me write it down and then you, and many other people, can get the same lesson.
I feel the same way about blogging, mine is at http://lornajane.net and has been active since 2006 and I’ve been blogging a few times a week for a number of years now. It’s the same attitude – if you asked me about this thing then I’d tell you. But I don’t know you and you don’t know me, and even if you do, you maybe don’t know I could help you. So to get around all that being-at-the-same-event-and-asking-the-right-questions-of-the-right-person-in-the-bar rigamarole, I simply blog the thing that I know. This way, you can grab it when you need it, and I can as well when I’ve forgotten in three weeks’ time that I’ve already solved this once!
Excuses for not blogging are almost entirely invalid. “My blog theme isn’t finished yet”, “I don’t know anything” or “I don’t have time” are all entirely non-watertight in my opinion. Everyone knows something I don’t know, and will be grateful to find on google the day that I need it! And everyone has time to write 200 words about something … this is my secret to blogging so often, if you read my site, there are not many long posts. I simply open the blog software, empty my brain (there isn’t too much in there), and then press “publish”, and the whole process takes as long as writing an email. My habit of doing this has certainly got me noticed as a writer, and in fact I’m now an author, writing for a number of outlets and having finished my first book (with co-authors, not a whole thing on my own!), partly making a living from writing about technology.
I mentioned already that this article is the written version of a talk that I give, so I’m usually on a conference stage when I get to share these stories (and some less repeatable ones!), and speaking is a great way of sharing. It doesn’t matter where you start, although I’d recommend taking your first speaking steps for an audience that hasn’t paid for the privilege of seeing you speak. As a speaker, I go places and meet people and learn things that I simply wouldn’t have been able to do any other way. I was giving exactly this talk at OggCamp when I ran into Josette, whom I know well from so many other events, and she asked me to write for this site.
Meeting so many people and being at so many events means I know a lot of people, particularly speakers in my niche industry. I also help organise a community-run PHP conference in my area – PHPNW in Manchester, UK. I’ve been doing that since I was working for my previous employer, Ibuildings, and one year they asked me if I would be the host of their big conference, the Dutch PHP Conference in Amsterdam. This is a pretty big deal, it’s a major event on the European PHP calendar, and, well, I’m a developer! In fact I absolutely loved curating and hosting the event, and the opportunity only came my way because of my extra-curricular activities in those directions.
Organising events is one of the most stressful things I have done but it has taught me so many skills! I now run my own business and those skills of being able to talk about money, organise people and other logistics, publicise an event, and so on, are absolutely vital to have. I had no idea that’s what I was learning at the time though, I thought I was just bringing people together to talk about technology.
Whether you’re organising an event, a user group, running an open source project, or getting involved with any of the above, you will probably be working in a team. It wasn’t until I read “The Art of Community” that I really understood how much interchange there is between my work world and my community one. The skills I learn in one place, I bring to the other. The patterns that emerge in one place and learn to handle and respond to, will often appear in another. And politics are the same everywhere! Dealing with sticky situations, mediating with people, finding the balance between paying work and voluntary work … all those skills are absolutely applicable in so many areas of life and work.
Before I finish, a final word about leadership. Leading is really not about being “in charge”, although having the job title to go with it can sometimes make it easier to get things done. Leadership is about believing in something and getting people to join efforts and make things happen. My mentor is a wise woman named Ligaya, and she told me a long time ago that “Forgiveness is easier to obtain than permission”. She’s part of the PHPWomen group, and I should ask her if she regretted saying that! This attitude hasn’t always been popular at work, but now I’m a consultant, I have to be a leader in all that I do. I think communities in general are much better at recognising effort and achievement than many employers. For those in a job getting negative or no feedback on their work, open source involvement will bring a blast of lively interaction, since everyone gets to have an opinion!
Building open source software is about taking what’s available and building on top of that to create something better, and open source career development is exactly the same thing. There are no guarantees that you will be getting a new job, a raise, or more challenges at work, but I definitely see a trend towards a fast-track for those that do. Giving yourself the chance to get involved in something new, learn new skills, meet new people, is unlikely to be wasted. Whether you will start a blog, speak at an event, contribute documentation or write code, I challenge you to step up and get involved. Not for an improved CV, but for an improved you.
This post was created by Lorna Jane Mitchell, a freelance consultant, developer, trainer, writer or evangelist. She is co-author of PHP Master soon to be published by Sitepoint.