Husband. Father. Software engineer. Ubuntu Linux user.
It’s October, and Hacktoberfest is in full swing! It’s a great time to contribute to open source. I love open source software and the open source community, and I think contributing to open source software has lots of benefits for professional software engineers. Here’s 5 reasons you should contribute to open source software.
Whether you want to learn a new language or try a new framework, open source projects provide a great opportunity to learn about new technologies. Want to see the latest version of Angular or React in action? Want to play around with some projects in Go or Scala? By working on open source projects, you can gain experience with technologies you’re interested in but might not be exposed to at your day job. In fact, it’s a great way to research technologies to see if they might fit well with your business needs. And if you contribute a pull request, you’ll likely get some feedback from people who are experts in the technology you want to learn.
When you work on an open source project, you probably won’t ever meet the people you work with in person. All of your interaction will be online, via Github and perhaps IRC or email. Because you can’t talk to the team face-to-face, written communication is critically important. Most open source projects have guidelines that promote best practices for communication, such as providing clear, minimal examples of bugs and writing good commit messages. Open source forces you to learn to communicate effectively in writing because there are no other options for communication. Practices from open source projects can help even in-person teams work more efficiently, and the communication skills you pick up working on open source will make you a better developer.
Most open source projects are pretty well tested. They have to be in order to keep their products from breaking while accepting pull requests from dozens (or hundreds) of different people. If you submit a pull request and your code isn’t tested, you’ll probably be asked to test it (and commit the tests) before it can be merged. In fact, many projects use tools like Codecov to automatically request changes on pull requests that aren’t sufficiently tested. Contributing to open source projects like these forces you to thoroughly test your code. Moreover, many of the testing practices they use (CI testing, code coverage analysis, style checkers, etc) are also useful tools for closed-source development.
When you work on open source software, you get to interact with some of the best developers around. You can learn a lot from the code they write as well as the way they manage the project. How do they ensure their code is sufficiently tested? How do they make the project accessible to newer developers without letting the quality slip? Maybe you’ll be exposed to some new design patterns or libraries that you haven’t seen before. Do they use JUnit or TestNG? Maybe they’re using Hamcrest for their assertions? How do they handle dependency injection, and what patterns do they use to test their date logic? There’s no better way to learn than to see these patterns in action.
Contributing to open source is a great way to make yourself a better developer. You’ll learn new skills, get new ideas, and have fun along the way. If you haven’t worked on any open source projects lately, give it a try! There are still 3 weeks left in Hacktoberfest 2018, so it’s a great time to start! (And a big thanks to Digital Ocean, GitHub, and Twilio for sponsoring the event!)
👋 Hi, I'm Mike! I'm a husband, I'm a father, and I'm a senior software engineer at Strava. I use Ubuntu Linux daily at work and at home. And I enjoy writing about Linux, open source, programming, 3D printing, tech, and other random topics. I'd love to have you follow me on X or LinkedIn to show your support and see when I write new content!
I run this blog in my spare time. There's no need to pay to access any of the content on this site, but if you find my content useful and would like to show your support, buying me a coffee is a small gesture to let me know what you like and encourage me to write more great content!
You can also support me by visiting LinuxLaptopPrices.com, a website I run as a side project.