loading...
Cover image for A selfish reason to contribute to open source

A selfish reason to contribute to open source

icncsx profile image DH Kim Updated on ・2 min read

About a month ago, a recruiter at Google told me that if I didn't get an internship at Google this Fall, the closest thing I could get to an internship is to regularly contribute to an open source project that Google maintains such as Kubernetes or Angular. Long story short, I didn't get the position, but that advice really stuck with me, and I started contributing to open source.

So far I made contributions to more than 7 codebases, all maintained by different organizations I admire ranging from a browser vendor such as Mozilla to a developer focused blogging platform such as DEV.

I think contributing to an open source project is the closest experience you can get to an internship. For one, you have direct access to 2-3 project maintainers as mentors. And second you're contributing to a large code base just as you would do at any programming job. The best thing about contributing to open source is that you needn't formally apply on a competitive job board. You simply raise your hand and ask if you can help, and for the most part the project maintainers are totally happy to have you on board. Remember: very few people say no to free labor.

The final takeaway: do you ever want to play in the big leagues? If yes, contributing to an open source project that is actively maintained by a target company is a pretty decent proxy.

PS: I wrote about my experience contributing to Dev here. In brief, they are awesome. Go contribute to their codebase.

Warmly,
DH

Posted on by:

icncsx profile

DH Kim

@icncsx

Software engineer interested in cloud computing and serverless backend services.

Discussion

markdown guide
 

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 🤷

 

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

 

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!

 

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.

 

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

 

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?

 

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

 

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 =)

 

Great app, Dominik!

 

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.