Importance of contributing to open-source

hingxyu
4 min readApr 9, 2019

Till now, being a college student, I used to spend most of my time either on my indie software projects or on competitive programming. My learning approach, so far, has been, first finding an awesome project-based MOOC and then religiously and thoroughly finishing it from the start to the end including the capstone project. The approach has been quite rewarding but has two major drawbacks:-

  • Indie projects are generally not that big. I mean you either work on a particular subsystem (based on whatever you have learned) since it is not possible to build up the entire system singlehandedly. Essentially, you don’t get to work on a big, sophisticated and a more impactful project and therefore don’t get a chance to see the entire system and how the different components fit together.
  • Learning is mostly by ourselves. What I mean here to say here is that this approach is not that effectual when we compare it with the classroom methodology which promotes collaborative learning and also keeps the required stimulus. We can have peer to peer interaction, live doubt sessions, group-studies, etc. There is an organized, methodical track set up by our teachers and a healthy competition with our peers/friends that help us pacing forward on that track. In contrast, here, the whole motivation should always come from within.

We can’t reciprocate the classroom environment online completely. That’s for sure. Research is still going on in online-education to make it more intuitive and natural and bring it closer to the classroom feel. That’s an altogether different story anyway. What I wanted to share is that contributing to open-source projects and collaborating with other developers has a similar feel to the classroom environment. Consequentially, it enfeebles the majority (if not all) of the above-stated drawbacks of working alone in the following ways:

  • Working on open-source projects is an altogether different experience. It is more of a collaborative thing. You work with different collaborators having different skills and fields of expertise. Essentially, you get to learn a lot by working with a group of people having a diverse spectrum of skillset. More importantly, you learn and master the art of software creation via collaboration which is an inevitable thing in the life of a software developer.
  • Every project has mentors to guide and give direction to the project. They are responsible for validating your changes before accepting(technically called “pulling the changes in”). This is crucial because you get to know flaws in your approach/mistakes and therefore it helps in your technical growth and development.
  • Unlike indie projects, open-source projects are generally more sophisticated and therefore you get to see the whole system simultaneously and how the different subsystems fit together. This also means that you inculcate a good habit of reading other people’s code. You can always decide on which part/subsystem you want to work based on your interests and knowledge and hence, can enhance your knowledge in that field.
  • Unlike indie projects, working on open-source projects needs a less inner drive as there are external factors to motivate you. Github uses a subtle way of quantifying your work through contribution graphs. In layman terms, whenever you make some changes(adding code, fixing bugs, etc) in your projects your contributions go up and your graph looks denser and active. It feels great when you find a bug in the existing code(technically called “raising an issue”) and solve it(by making “pull requests”). Moreover, there are always a like-minded group of folks around (collaborators and mentors) who can help you if you are stuck in any problem. This, inevitably, keeps your momentum and helps you stay on the track.
A strong contribution graph
  • Apart from this, I believe that working on open-source projects is an incredible way from an interview point of view. It really helps to strengthen your portfolio because it showcases your ability to read, understand a large-code base and also work collaboratively with other fellow developers. The contribution graphs are a great way of quantifying the effort that you have put in here especially to the prospective interviewers and evaluators.

I ❤ Open-Source. In a nutshell, I truly and genuinely believe that open-source is a hell yeah and every budding software developer must dive and delve deeper into it.

Thanks for taking the time to read my story. If you found this post informative, please hit the clap👏 button, share, and connect with me.

--

--

hingxyu

Avid Techno-geek; Interested in cross-disciplinary research in subdomains like deep learning, computer vision, computer graphics, embedded systems.