DEV Community

Discussion on: A selfish reason to contribute to open source

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!