April 23, 2013

How OSS Will Get You a Job and Make You a Better Person (and Programmer)

Print More

As I write this, juniors are beginning to formulate their post-grad plans. The pressure is on to find a job such that it’s smooth sailing between graduation and employment. Programming is a skill that is highly sought after, but it is nevertheless important to differentiate oneself in order to land the best possible job.

But how is this achieved in the software industry, an industry that differs from traditional industries such as finance? Most would emphatically respond, “the résumé,” but in an industry that is largely focused on merit and ability, an internship with a well-known company doesn’t shed a lot of light on a host of qualities one should have in order to thrive at a particular company.

We are often not at liberty to show the product of our labor to prospective companies, as most (if not all) of the code we write during internships is covered under nondisclosure agreements we sign in order to land the internship in the first place.

If none of the code we’ve written can be shared, how do we show what we’re made of? The answer has been around for years, but it just recently taking hold of a majority of the software development community: open-source software.

Open-source software (often referred to simply as open-source or OSS) is software whose source code is publicly available and whose license complies with 10 guidelines for open access. About a decade ago, open-source was dominated by a version control system called “SVN,” and before that, code was emailed to the maintainers and added manually.

Today, the open-source community favours Git as its version control system and GitHub as the online code host, which has powerful collaboration and code review features that make writing code with others incredibly easy — and it’s all free.

Software companies are finding GitHub a great resource to learn about potential hires and use it to answer questions such as “how is the quality of [applicant’s] code?”; “how well does [applicant] work with others?”; and “how passionate is [applicant] about the projects he or she works on?” Open-source software can answer these questions in ways that a résumé cannot.

Finding a great job will surely not be the only benefit to working on open-source software. Indeed, one has the ability to learn from your peers, many of whom have far more experience than the average college information science/computer science major. Just reading their code can be insightful, and discussions in the GitHub pull request comments with them can instruct you in ways that far outpace most professors we’ll encounter here at Cornell.

These wise code wizards may not have the time to describe the theory behind different sorting algorithms, but they’ll let you know when the one you proposed is wrong for the job and share with you the “why” in practical terms. I’ve learned more about being a great developer by working on open-source software than I have by completing assignments in any of my university courses. The collaboration emulates how modern dev shops work, and having this skill is valuable.

One also builds relationships with these “code wizards,” which can lead to jobs as well. I help maintain a project called Jekyll which was created by a co-founder and the current CEO of GitHub, which is now worth over $120 million. When I visited San Francisco in mid-January, Tom Preston-Werner invited me to the GitHub office to talk, plan the future of the project, and code together.

A related project I also help maintain, Octopress, is a framework that sits on top of Jekyll and makes blogging and static site creation easier than a self-hosted instance of WordPress. The creator of Octopress, Brandon Mathis, also works for a software company, MongoHQ, the company behind the open-source document-based database called MongoDB.

The connections I’ve made working on open-source projects have enriched my experience in this industry and I have learned so much from these and many other people with whom I work on open-source projects.

Open-source software is the new way to get hired and be inspired to create the best software out there with hundreds and thousands of people you may otherwise never meet. It’s the best means of learning practical knowledge about software development from peers and to meet brilliant developers who have a passion for great software.

Original Author: Parker Moore