Why you should contribute to open-source in college
52 months after being handed a really fancy piece of paper, I’m still involved with the same open-source project I was introduced to in college. While that isn’t a long period of time, contributing to open-source early in my career definitely helped shape it. The more I learn from open-source, the more I wish I would have started participating sooner in my academic career. I don’t intend for this post to be a dissertation including every lesson ever learned, but instead focus on the skills I would have found helpful prior to graduation. All of which I could have learned by simply participating in open-source projects during college.
Understand your learning style
Every project has a learning curve. You often hear the initial information dump referred to as “drinking from the firehose.” In technology, the feeling of drinking from the firehose never really stops, the hose just gets hooked up to a new hydrant. So the question becomes, how quickly can you effectively contribute to a new project? Speed certainly isn’t everything, especially when craftsmanship is at stake, but understanding how you absorb new information is a valuable skill. Diving into an open-source project you find interesting is a great way to practice this skill. Are you the type to read all the documentation? Maybe it’s checking out the source code and attempting to fix a bug. Maybe it’s observing how others interact with the software. Depending upon the complexity of the project, this can take time. Understanding how you learn will undoubtedly give you a leg up the next time your hydrant gets switched. Participating in open-source exposes you to this for free.
All projects require some degree of communication. In order to contribute to an open-source project you must be able to effectively communicate with the rest of the community. Throughout college, most group projects only communicated face-to-face. If our group needed to design something, write documentation, or fix a bug we’d all gather to hash it out in person. With open-source communities, you probably won’t have that luxury. Today, even small companies have regionally or globally, distributed teams. While some might consider the lack of face time a challenge, I consider it great way broaden communication skills. Instead of white-boarding a problem in person, what other channels can you use to describe what you would otherwise just blurt out? In addition to understanding technical buzzwords, go ahead and add language barriers to the list of complexities. Language barriers will challenge you to communicate in creative and unique ways. It’s imperative to understand the tools a community uses, then learn how to use them. Join their IRC rooms, subscribe to their mailing lists, and observe how other members of the community communicate. Having a meaningful, technical conversation with another member of the community through a simple tool like IRC is a valuable skill to have. Open-source communities interact in a variety of ways, making them a great place to become a more effective communicator.
Share your work
Open-source excels when everyone participates in knowledge sharing. In college, this might be difficult if you’re unable to share your work due to proprietary restrictions. Open-source communities leverage open platforms to track bugs, code, features, documentation, email threads, and even contributor activity. Open tools are natural enablers for knowledge sharing. They allow you to bring specific examples to the table if you want to. For example, challenges you’ve overcome, feedback you’ve given when reviewing pull requests, or code that you’ve developed with other members of the community. This can be a great way to prove yourself as a viable college new hire or spark a meaningful discussion during an interview.
The advantages of open development are numerous. Today, I only discussed three of the more obvious lessons I would have considered most helpful during my transition from academia to the real world. I’m not suggesting that open-source communities be used as a means to an end for students to use then abandon. These are just ramblings I have when thinking about how awesome it is to write free software everyday.
Photo Credit via Pexels