The Virtual Internship: Take Control of Your Future by Becoming an Open Source Developerby Brian W. Fitzpatrick, coauthor of Version Control with Subversion
Despite your fantastic grades and razor-sharp wit, when it comes to looking for a job fresh out of college, you're going to find yourself competing against a multitude of other students with similarly impressive credentials. In some cases, you'll be competing against people who have several years of experience and all you've got on your resume is your senior project and an internship fetching coffee at Random BigCo.
The one thing you're missing on your resume is experience, and most students are advised or required to complete an internship to gain this much-needed knowledge. Unfortunately, most of the experience students get in an internship is doing some of the most menial chores in their field.
O'Reilly Media and Greenplum Team Up to Unite the Global Geekforce
O'Reilly Media launched the beta version of O'Reilly Connection at its 2005 Open Source Convention. O'Reilly Connection is a tech-centric jobs and networking site for developers and those who want to hire them. The service was conceived and created by Greenplum.
If, however, you create your own "internship" by contributing to an open source community, you'll get invaluable real-world experience, advice, and criticism from talented programmers, and you'll be doing something you enjoy. More importantly, from a career perspective, you'll start building a publicly visible portfolio of your work that you can show to any prospective employer.
While the typical internship may tout the "exciting opportunity to work in your prospective field," once you get beyond the marketing hype, you'll typically find yourself doing grunt work that no full-time employee wants to do. It's definitely a great opportunity to start at the bottom and work your way nowhere fast in a system designed to provide an employer with cheap labor. You're given a narrow field of responsibilities and only in the extremely rare case are you given the opportunity to make any decisions--at least any decisions that matter.
You may think it's impressive that you interned at Random BigCo and worked in the same department as J. Tech Superstar, but when your resume winds up on someone's desk alongside a prospect who actually worked full-time at Random BigCo, guess which resume goes into the shredder?
When you contribute to an open source project, you may start off doing some of the same kind of menial chores that you would do in an internship. These may include reviewing documentation, comments, and source code, and submitting small patches to fix the inevitable typos and small mistakes that you'll find. This housekeeping not only familiarizes you with the project's policies and code, but helps you to gain the trust of the project's committers.
Brian W. Fitzpatrick
This tutorial covers the details of using Subversion in open source development, including making the transition from CVS, Subversion's differences from CVS, and using Subversion features not found in CVS.
Brian W. Fitzpatrick
This talk reviews best practices for migrating to Subversion, based on case studies of teams that have already made the switch.
O'Reilly Open Source Convention
In an open source project, you can garner more responsibilities as fast as your abilities allow (and, of course, as fast as the project's committers allow). As you establish yourself, you'll go from working on small bugs to more complex bugs, and eventually to designing and writing features. The real beauty of this is that you're not labelled an "intern," and there's no bureaucracy preventing you from committing on the same level as people with 15 years of CS experience--you may find yourself working side by side with a whole flock of J. Tech Superstars! Unless you tell people that you're a student, odds are that they'll never know. As they say, "On the internet, nobody knows you're a dog."
Once you've chosen an open source project to contribute to, you can set your own terms; you can choose what you want to work on and skip the bits that don't interest you. You can work as much or as little as you want and at any time of the day (or, most likely, night) you want. Not only will you get a lot of great experience working on a team, but you'll get code review and criticism (some constructive, some not so much) from your peers. Where else can you get this kind of mentoring for free? In fact, it's not unheard of for an open source colleague to eventually become your employer--or at least provide you with a job lead or a reference.
As I pointed out in my last article, your work in open source will be on the internet, and any prospective employer with a search engine and a few spare minutes will be able to see the work you've done. But that's a good thing--your publicly visible open source work will go a long way to giving them detailed information on the kind of work you do and how you work on a team.
Working on an open source project not only provides you with an amazing opportunity to learn and work with great people, but to gain experience and have a public account of the work you've done and how you've done it. You'll find flexibility and opportunity for advancement that is rarely found in an internship--and the only coffee you'll be fetching is your own.
Thanks to Ben Collins-Sussman, C. Michael Pilato, and Justin Erenkrantz for reading drafts of this article.
Brian W. Fitzpatrick is a member of the Apache Software Foundation and currently works for Google. He has been involved with Subversion in one way or another since its inception in early 2000.
Return to ONLamp.com.