DEV Community

Cover image for A selfish reason to contribute to open source

A selfish reason to contribute to open source

icncsx on July 04, 2020

About a month ago, a recruiter at Google told me that if I didn't get the position at Google, the closest thing I could get to the role is to regul...
Collapse
 
jeromegamez profile image
Jérôme Gamez • Edited

Self-marketing is a perfectly valid reason to contribute to Open Source - not only do you gain experience with working on different code bases and interacting with many kinds of developers, but you're automatically creating a portfolio for yourself.

The only thing I would recommend is not to see it as a way to get into the "big league" - there are many interesting opportunities out there, not just with the Googles and Firefoxes, but also with smaller projects and companies, where you can make yourself "seen" more easily and have a bigger impact. Imagine contributing to a small niche project and after some time being asked if you wouldn't like to step up and be a co-maintainer of the project... suddenly you are reviewing PRs of other devs and have something new to add to your resume - not only a link to your active GitHub profile but also a line "co-maintainer of project x", oh the satisfaction 🥰.

Because you named Google, I'd like to share my story with you, I hope that's okay!

I entered the Open Source world almost by accident. In 2013 I had a Hackathon with my colleagues, and we decided to try out Firebase (which wasn't owned by Google back then). It was pretty niche but promising, and I created a small API wrapper to be able to use the Realtime Database it with PHP. The only reason I uploaded it to GitHub was so that I could pull it in more easily during deploys to our backend server.

The project wasn't continued after the Hackathon, but I continued to work on the library as a personal playground to improve my programming skills and learn new things.

I released version 0.1 in January 2015. Since then, Firebase has been acquired by Google, the library got listed as a helper library in their official documentation, and since Google has decided to provide Firebase Admin SDKs for all major languages except PHP, my small "personal playground" has evolved from a small niche project to the only (unofficial) Admin SDK for PHP, with more stars and downloads than some of the other official ones, and to scratch my own itches with the SDK, I contributed to other official Google PHP libraries as well.

While I don't think that anyone at Google "knows" me and that I wouldn't get hired by Google just because of my library, I gained much from it in other ways. And I'll be sure to include that in my resumé and talk about it when the time comes that I want to apply for a job anywhere 😅

Long story short: Contributing to Open Source can be very rewarding (and exhausting), but I see it mostly as "just another" component of becoming a better developer in general and to learn through "doing" and through interacting with other members of the Open Source community, not necessarily as a way to land a job 😅 (although it, of course, potentially makes you a more attractive candidate if you have a nice portfolio)

PS: Besides the hackathon in 2013, I've never used Firebase in a project myself 🤷

Collapse
 
icncsx profile image
icncsx • Edited

Hi, Jérôme. What a wonderful story! I sometimes wonder what it feels like to be a sole proprietor / maintainer of something that so many people depend on. I'm so happy you realized that feeling, and I hope I can get there by the end of next year. I am also in the middle of authoring my own package as I am also thirsting to start my own niche project.

By the way, I really enjoyed your point about "gaining much from it in other ways." I'm beginning to realize more and more the positive "side effects" of contributing to OS. The original goal was to give back of course. Now the motivation is becoming multi-layered. In brief, here are some of the benefits I'm seeing from contributing to OS.

  1. You learn about VCS (Mercurial, Git, all of that).
  2. You learn about discipline (it takes a fair amount of time to see your contributions get merged).
  3. You learn about effective communication (describing the problem, the solutions you considered, the solution you ultimately took, etc.).
  4. You learn about "production level code".
  5. You learn about how to write tests.
  6. You learn about build workflows (some projects have a complex build process).
  7. You learn about new methods/concepts. "Wait, what! You could do that?" There were tons of those moments when I was looking at the Firefox codebase.
  8. You learn about ways you can measure your skills against a job at a target company. It's not the best proxy but it is a decent one as I tried to argue in this post.

IMO, you gain in different doses of those aforementioned reasons. For example, it's hard to learn effective communication (reason 4) if there are fewer people involved in a project.

Your point about doing OS to land a job is incredibly fair. When people ask me if it's a good way to get their foot in the door, I tell them no. It's incredibly inefficient because relationships take time to build, and people who are solely in it for the job seem to lose motivation and burn out quickly.

All of this to say that I really enjoyed your perspective about not seeing OS as a way to get into the "big league". I definitely don't want to give people the impression that that should be the main driver. Hopefully it's a mix of reasons, and people also weigh the pros and cons of contributing to a smaller project.

Warmly,
DH

Collapse
 
jeromegamez profile image
Jérôme Gamez

If my comment was in a git repository and your comment was a PR, I'd merge it immediately - well said! 🥰 I was lazy with my "gaining in other ways", your list details it nicely!

Collapse
 
waynevanson profile image
Wayne Van Son

There's so much to learn from open source. Many of these people are professionals who do this as their jobs.

The most important part of this whole process personally was learning git beyond the basic basics.

Thank you for the quick read, I resonated.

Collapse
 
icncsx profile image
icncsx

It's crazy to think that this open-source mentality/ecosystem didn't really exist before 08.

Collapse
 
kretaceous profile image
Abhijit Hota

As a beginner, how do I go on selecting the codebase that I want to contribute to? And how exactly do I know what to contribute?

Collapse
 
dominikilnicki profile image
Dominik Ilnicki

Hi, Try to find some interesting projects on GitHub and start with issues labeled by good first issue or first timers only.
You can always ask maintainers about the details in comments.

Maybe the side project I've recently created will help you with that. You can filter issues there by popularity and programming language.
justcontribute.netlify.app

Also, you can read more about joining some OS project here
github.com/firstcontributions/firs...
They cover a lot of details

Good luck! Open-source is a great way to learn

Collapse
 
kretaceous profile image
Abhijit Hota

Thanks a lot for the reply! Didn't know about the specific labels in GitHub issues.

And I just checked your app! It's super simple and smooth. Great job!

Thanks again! Looking forward to contribute to the Open Source community =)

Thread Thread
 
icncsx profile image
icncsx

Good luck!

Collapse
 
icncsx profile image
icncsx

Great app, Dominik!

Collapse
 
lucasscharf profile image
Aleatório

I'm starting to contribute to open sources mainly to create a portfolio, to create a network, and to learn deeply about programming. In this process, I'm also having fun.