Contributing to existing open source projects isn’t just about improving those projects – it’s a chance for contributors to grow, too. When we run Open Source Comes to Campus events, we love seeing students exposed to their first projects that aren’t throwaway coding exercises. Working on open source projects can teach anyone a lot about software engineering and collaboration. Here’s some of what we’ve learned:
As Jerry Sussman has talked about, programming today is very different than it used to be. Instead of building from the bottom up, you need to navigate big, complicated codebases, and to read and fix other people’s code. Contributing to an already established open source project is a fantastic way to build these skills. It can also help you make your code more accessible, by teaching you techniques like modularization, which is used in highly successful open source projects like WordPress and Linux.
Learning how to report bugs on issue trackers and mailing lists can help you think systematically about problems you encounter. It encourages you to retrace your steps, think about the context in which the problem occurred, and clarify your goals and expectations.
In some ways, there’s less pressure to meet deadlines in open source, where work is mostly volunteer. But no one wants to disappoint their friends and fellow contributors, and consequently there’s a lot of focus on time management and setting expectations. Working with other contributors to address issues and build features in time for a release is great way to practice these skills.
It can be surprisingly hard to teach other people what you know – to put into words and visuals the knowledge you have and the skills you’ve mastered. Open source projects rely on sharing knowledge and skills as well as code. This means there are many opportunities to practice teaching as well as learning.
Open source projects can give you a low pressure environment in which to experiment: to mess around with projects, try new techniques, break things and put them back together again. Of course, not everyone has been socialized or encouraged to break things, but that only makes it more important that there are spaces where everyone is encouraged to learn in this way. We recommend finding communities who support this approach. The best mentors don’t just help you learn from your mistakes – they help you make them.
A lot of people feel shy or insecure about asking for help. But it’s pretty much impossible to join an open source project without needing help somewhere along the way. Open source projects can give you a lot of practice at asking for help, as well as a lot of practice at giving it.
We think Scott Merrill says it well: “Communication is absolutely a skill, and it gets better through iterative use. Open source is, essentially, all about communication: whether it’s mailing list discussions, or back-and-forth on a bug tracker, or actual code contributions, you’re communicating with the other members of your community. You’ll need to learn to be precise, unambiguous, and (mostly) tactful.”
Open source languages, libraries, applications and programs are used in companies and academic institutions around the world. By using and contributing to open source projects, you gain experience with these “real world” tools. What better way to show a potential boss that you know a tool, than to tell her you’ve contributed to it?