Contributing to Open-source

Open-source projects are free openly viewable code projects that anyone can use or contribute to from anywhere in the world. At the heart of most modern software development is the community of open-source projects. The practice of building and maintaining open source software works because people from all over the world, of all levels, abilities, and backgrounds, form communities to support the projects they care about.

Most open-source projects don’t have dedicated staff to support them. Instead, developers and users from around the world work on them, often in their spare time. For many programmers, though, the thought of contributing to open source projects seems too difficult and time-consuming. They think that you have to be a programming genius blessed with unlimited free time to make a meaningful contribution.

That’s simply not true. Successful open-source projects thrive on a wide variety of contributions from people with all levels of coding skills and commitment. Any time someone fixes a compiler warning, closes a bug, or adds to the documentation, progress is made. Put a lot of those contributions together and great things can happen.

Why open-source?

The most valuable thing you can do to get jobs, besides paid internships or software work, is to fix bugs on/add features to popular open-source projects on GitHub! It can be more valuable than practicing LeetCode problems or projects with no users/customers.

  • A chance to put code into projects used by thousands or tens of thousands of people or more

  • Chance to get code reviews and mentorship from talented senior engineers

  • Experience fixing bugs in code you didn't write and working in larger codebases

  • An opportunity to write comments and documentation appreciated by many other developers

Very few junior developers have made pull requests to popular open-source projects and gotten them merged into a master branch. If you can do this, you'll set yourself apart in a really powerful way. Open-source work is highly practical, impressive, and allows your code to have real users/customers.

Building your Skills

As part of open-source, think of this as an opportunity to build up your own skills by learning from people managing widely used code to push yourself to become a more thoughtful and well-rounded engineer. Including skills such as:

  • Improve your code quality and adhering to code styles

  • Adding proper unit or integration testing

  • Catching weird edge cases that must be addressed in production

  • Using efficient approaches that work in production

By submitting pull requests to these projects, you're getting free training to write better code. Fix your code to match their code reviews, then resubmit it. Keep repeating this till they're happy. When they finally merge your code to master, that means seasoned engineers at top companies now think your code is good enough for use by thousands/millions of customers!

Celebrate and advertise this work on LinkedIn, your resume, GitHub, and in job interviews. It will impress engineering teams and help you get jobs. It's incredibly powerful to be able to say: "I fixed a bug on this popular GitHub project and got my code merged to master".

Great Resources

Here are a few great resources for getting started in open-source as a beginner:

Projects to Look At