If you are planning to stay close to Software after graduation, this article might win you over to do Open Source.
More and more students are now being involved with Open Source programming. Thanks to programs like Google Summer of Code who have seriously changed the lives of many and introduced hundreds of thousands of young students to Open Source programming.
However, this number is small in the grand scheme of things.
If I have to make a guess, out of all the students who graduate and start their career around Software (including Data Science, Machine Learning, etc.), less than 10% would ever contribute to any Open Source projects. And even less would do so for an extended period of time.
In this blog post, I am writing down some reflections. I am highlighting few major reasons why I feel open source contributions are helpful. And the benefits are extraordinary.
You learn so much more
Almost all of your Pull Requests will be reviewed by other people. In a healthy open source community, maintainers spend a big chunk of their time reviewing incoming Pull Requests. There are many times when review comments leave me in awe - and I am filled with gratitude. The reviewer wants to have good quality code in the software, but in effect of that, you learn so much more from their insights and experience.
Ideally, this is one of the those experiences you may get in your internships and first few jobs. But what are the chances of you ending up in such a team? And even if you get one helpful mentor, that’s just one. If you stay in Open Source communities, you are constantly learning from numerous of those, and not just in summer for a period of three months.
Our ways of doing software are heavily biased on the first projects we get involved with. We copy over the ideas to the future, since we know they have worked well. Exposure to multiple Open Source projects break that bias, and exposes us to other newer ways of creating Software.
I have seen many issues on GitHub describing a problem that seems extremely hard to solve. And when GitHub says, this issue got closed by this specific Pull Request - I feel spoiled that I get to see what that Pull Request did. To have public access to such knowledge is a gift to this community.
Not everyone studies Computer Science in college. And even if they do, their Software Engineering courses are either missing or outdated to the current day and age. MIT launched a course called - “The Missing Semester of Your CS Education” to address this problem. Computer Science and Software Engineering have grown so much now, that it’s impossible to teach both of them in a single curriculum. And the subjects have diverged - It has become Theory vs Practicality, Research vs Industry. Not all but most CS Professors are much closer to the research than the industry, and they expect students to do Open Source projects and internships on their own to gain the industry experience.
Last but not least, a vast majority of Open Source work is done remote, over the internet, with strangers. The skills required to carry on a remote work become fundamental necessities - good written communication is one of many.
You escape the privilege barrier
In India, more than a million students graduate engineering courses every year. Every other job extended in my college placement season was somehow related to programming. This number gets higher with the several tiers of colleges. I imagine an average good Software Company would get a headcount of 10 new-grad engineers, to hire from the world.
These numbers break my heart. Not everyone gets the chance to experience joy and growth in their career.
Open Source is small but a beam of hope for these students. Google Summer of Code doesn’t look at your IIT JEE rank for you to participate in it. Maintainers don’t look at what Department or college you study in, before answering your questions. All these nonsensical privilege barriers do not exist in your way to improve yourself and learn.
You become a volunteer
Open Source contribution was my first exposure of volunteering and belongingness to a community. Not everything needs to be paid in money. I started seeing the return value in terms of learning, joy of accomplishing something, or just doing something together with people.
I was part of a college group which helps college students learn more about Open Source. Looking back, I see that a lot of Open Source contributors follow the idea that - Knowledge should be shared. They start helping out people for no apparent reasons. Well mainly because someone else helped them in their journey and they want to continue the tradition.
This feeling of volunteering (somewhat altruism) in Open Source still impresses me and others. The idea of non-monetary benefits in work is strange to a majority of people I have met professionally.
Toxic competitions are not for everyone
You might already know that college admission exams are highly competitive. One wants to get into the best college. One wants to study in the best department. One wants to score the highest grades. One wants to get Gold medals in the online competitive events.
It easily gets toxic for some people. It changes the perception of their social life. Even when talking to friends, they think of things they know more of - due to their performances in previous competitions.
I haven’t seen that much competition when it comes to Open Source contributions. People help each other a lot more than trying to get ahead in some kind of race.
You might fall in love with Software
Richard Feynman has said - “If you find science boring, you’re learning it from a wrong teacher."
I feel the same for programming. Students may not like the complexity of a doubly linked list written in C, but might enjoy Python’s 10 lines of code for their web server. Sure a lot of people like writing Software, but not everyone “loves” to do it for their career.
In contrast of only working with a handful of internship projects, working on many well designed Open Source software increase our chances of falling in love with it. And it helps.
Thank you for reading! <3