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.