The Virtual Internship: Taking Control of Your Future by Becoming an
Open Source Developer
by Brian W. Fitzpatrick
26 July, 2005
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 from 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.
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 that 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.
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 any time of the day (or, most likely, night) as 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 [Link to article here], 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 a 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.