[This story was originally posted on my personal blog]
Since 2012, I have evolved from someone who was not at all aware of GitHub and did not get it for why people used
.md file extensions for a text file, to someone who has gained a lot of infamy among friends and family for spending so much time on it.
As an exercise of self-reflection, I thought of noting down the reasons for why I spend so much of my time on open-source software and GitHub in particular. There may be more of them that I did not realize yet but below are twelve of those.
It helps me stay connected with technology trends
This is probably the most obvious answer. Writing your own code is good for its reasons but looking at other people's code not only enables you to have a different perspective at solving the same problem but also forms a medium for you to learn about new concepts & trends in the industry.
It feels like continuous improvement
Contributing to open-source feels very effective for continuous improvement to me. Once your code becomes available to the world (and gets noticed), you may receive suggestions from people who you would not get a chance to connect directly. Moreover, sometimes people will help you to improve your code as well.
This somewhat coincides with Shame-driven development where you (out of shame) tend to improve your code in a fear that you may look stupid to others.
I gives me a feeling of accomplishment
It all starts with creating a requirement of your own, then facing a few hurdles, doing some research, spending a few extra hours to finally get past the problems and see some results. The feeling of accomplishment when you have a running code that no matter how small it is and it behaves exactly as you want it to is just unmatched.
I feel free!
When you work on open-source projects, in most cases you are the architect of your code. It does not only make you the only one responsible to take a lot of decisions but also gives you the freedom to do what you want to, the way you want to. Not all of us are fortunate enough to have this privilege of contributing to technical decisions in our professional lives. If that sounds familiar to you, open-source is the place for you.
It helps me document my learning
I find my projects on GitHub and GitLab as a place to document my learning about how to solve a particular problem, how to use a particular framework or library, or how to implement something in general. Over the last few years, I came up with a bunch of templates that I end up using for almost every new project that I start. They range from templates for websites, front-end libraries, chrome extensions and more.
You may forget the solution to a particular problem after a while but when you have some code that practically documents it, it actually turns out to be a perfect future reference.
I build my own tools
After years of writing software (or even maybe just a little while into it), there may be a few things that you may identify as missing pieces in your development workflow. You can either choose to ignore the problem and keep wasting your (hopefully) precious time living with those gaps, or you can choose to solve it. In most cases, there are tools created by our wonderful community but in case there isn't a solution to a particular problem (at least not as far as you can see), or you want to solve it in your own unique way, creating your own tools is one of the best approaches to go with.
Bonus: Your tool could potentially also help others for their cause, which is definitely a win-win.
The community makes you feel at home
The developer community is massive with new developers joining us every day. Contributing to open-source brings you a feeling of belonging where there is almost no negativity or blaming involved. It is, in fact, something like “we're all in this together”. So we help each other write good code which (mostly) solves a real-world problem and together make this world a better place.
People log issues to your projects, giving you directions and sometimes volunteer to help you with something, that eventually helps both the parties in some way or the other.
I like to give back to the community
It happens to all of us: when we are new in this community, there are a lot of ways people help us learn and find our way in. There are posts, training, free software and tools to help us get started.
I feel obligated to give back to this very welcoming community, the way it helped me in so many ways back when I started. Someone will benefit from my contributions and the cycle will go on.
I like to be prepared for the future
Many a time, our professional life keeps us trapped working on long-running project and old technologies and makes us become limited in what we do (or are capable of doing). Have a coding life outside work enables me to explore more areas of software development and be prepared for the future: you never know, what you've been spending time learning outside work may help you in your professional life.
Build my 'practical' resume
I have a resume which I always keep updated but that is all theory. How about having some code of mine that demonstrates my skills and experience in specific areas of software development? Our own public projects as well as the ones that we contribute to somehow end up being our practical resume. You do not have to speak about yourself, your work may do the talking.
I like to mark myself open to new employment opportunities
Having a practical resume not only helps me express myself better but also lets me be open to future employment opportunities. Though even today many employers tend to believe in a 'not-so-honest' resume and a face-to-face interview consisting of a documented set of theoretical questions that decide your fate for the next few years, I believe having your work online acts as a better communicator for your skills and hopefully will be a thing to be considered at more companies in the future.
It's an addiction
I'm addicted to it and that is why it was so easy to come up with the previous eleven reasons to do it. In short, skipping a single day makes me feel that my day was not quite productive.
I agree that this particular hobby of mine has taken away time for many other hobbies like gaming and tinkering with my electronic gadgets but I enjoy it and that is what's important right?
programmer, linux-fan, oss-contributor, gamer, car-enthusiast, nerd, organized, DIY, muslim