How getting into Open Source has been awesome for me
Photo by Tj Holowaychuk
An anecdotal argument for contributing and using open source
My first contribution to open source was extremely small:
Seriously, that was it. A comment typo that I found while debugging. The PR was merged a few hours after I made it back in December of 2012 in my brand new days as a programmer. I later reminisced over the PR and made a thank you comment. Which was later followed up by a total stranger and resulted in me getting some digital cake!
How cool is that!? 🍰
But Niler851 was totally right. As far as I'm concerned, great things started with this pull request.
I got over one of the hardest hurdles in open source: The first contribution.
There's so much you need to learn about to contribute to open source, and it can be daunting, but it's seriously rewarding and there are several reasons why it's been so great for me.
It's amazing what happens when you regularly read code written by many different people when many different people read your own code. Learning happens.
Having your own projects also gives you a really easy experiment playground where I've learned and experimented with several Continuous Integration services and automation tools. It's been a lot of fun and helped keep my skills sharp.
Another thing that's cool about open source is that you get free code reviews from expert developers when you make pull requests they need! How awesome is that!?
I can't count the number of emails I've received from recruiters to my GitHub email address alias. And by developing some street credibility on GitHub, people start paying attention and are interested in what you're working on and if you'd like to work on their problems full time.
Some people you may have heard of who got their jobs this way: Brian Ford, Dan Abramov, and Sebastian McKenzie. But you don't have to make it big in open source to get noticed. Matt Apperson, Rahat Khanna, and Bram Borggreve and others each spent time making contributions to open source and have their jobs as a result. Certainly getting a job was not the reason these developers got into open source in the first place. But it's good for business in any case.
It's notable that when I asked people if they had gotten their job for open source contributions, several mentioned they got their job from other community contributions like blog posts (Christopher Chedeau and John Lindquist) or speaking at conferences (Olivier Combe). While not code contributions, these are also valuable contributions to the open source community and I recommend you do this as well.
One of the most rewarding experiences I get out of using and collaborating on open source comes from the relationships that I build with other developers facing many of the same problems I am. I have so much fun working with these amazing people.
Lots of conversations that start on GitHub turn into friendships that extend to Twitter (a whole other blog post). It gets really fun when you meet these awesome people in real life. Friends make open source fun and rewarding.
One of the most rewarding things when working in open source is when someone says something like: "This is amazing!" "Thank you so much!" "It's saved me so much time!" or "I wish that I'd found this earlier!" It's awesome to think that the 5 hours I've spent on my project has saved 500 developers days or weeks worth of development time. That's cool. Call to action: If a project has saved you some time, go ahead and file an issue to simply tell them thanks. 🎁
If you haven't contributed to open source before, I recommend you give it a whirl. It's fun, it's rewarding, and it's good for your career. If you're looking for a good project to contribute to, remember that:
You contribute best to something you use regularly.
For my first contribution, I made a single (tiny) contribution to the Play framework and never submitted another PR there again. It was a great first PR and I recommend that kind of experience to anyone. But if you're looking to make a lasting impression on a project, think of what tools, libraries, and frameworks you use regularly and find ways you can contribute to those things.