3 Weeks into Open Source
My journey into becoming an open source contributor
It's been a little over 3 weeks since my very first attempt at contributing to an open source project. To make the task even more daunting, I recorded the who process and posted it on YouTube (also my very first ever YouTube video).
Since then, I've created a few more pull requests ( here's my latest ), engaged in conversations with the wonderful open source community at Supabase and received great feedback to help me grow as a developer.
Here are my findings.
Doing anything in public is scary.
Writing code in public is particularly scary because you're potentially opening yourself up to a lot of criticism by far more skilled, experienced or talented developers. My initial fears where:
"What if I make mistakes"
"What if my code is stupid or overly simplistic / naive
and the big one
"what if this exposes me as a fraud / imposter"
My fears were unfounded. Here's why:
You will make mistakes
That's a given because it's just human nature to make mistakes. I discovered two kind of mistakes in this arena:
General slip-ups - the kind you wouldn't typically make but make anyways because you're rushing, distracted etc...
Real knowledge gaps - this is often where you really didn't know there was a better way of doing something
For the first kind of mistake I found that people generally tend to be understanding because they too somewhere along the line had made similar mistakes and will continue to do so.
Secondly, no one was born knowing everything, because of this, people generally understand that even though you might not have known that one thing, you likely taught them something new they didn't know before (no matter how much more they know than you) - this is especially the case in the developer community because lets face it, coding is hard, problem-solving is hard!
When writing code that will be seen by everyone, it's really tempting to want to write want clever, complicated code because this will make you appear really smart - a real "knower of things".
This often just ends up getting in the way of getting the job done, both for your own projects (when you later need to return to and understand your code) and for open source projects - in which other contributors (even those more skilled than you) want to quickly understand your code without adding too much mental overhead to themselves. This principle is well summed up by this tweet by Jake Archibald:
Imposter syndrome is real!
The worst thing about imposter syndrome is that it's often justified / warranted. It's natural to want to know where we stand in comparison to others especially when we reach new milestones. In my case, after my first open source pull request, I wanted to see what a typical OSS (Open Source Software) developer's Github contribution graph looks like so I picked some that I look up to and boy was I intimidated...
Here's what mine looked like at the time - most of it parroting tutorials and textbook examples:
Compared to the graphs of the maintainers of the project I was contributing to:
The envy grew even more when I took into consideration that most of my contribution graph is projects from online courses, tutorials and textbook examples.
My way of dealing with this kind of imposter syndrome now is to use the above contribution graphs as motivation and a constant reminder that I have a lot more interesting work ahead of me.
The OSS Developer community is kind, friendly and welcoming
All my fears about coding in public proved unfounded because of just how kind most OSS contributors and maintainers really are. Here is some of the feedback I've received from the awesome people at Supabase in my first month of contributing to some of their many new-comer-friendly OSS repositories
What's been especially encouraging about this great feedback is that it is from people I highly admire.
A huge shout out to the people at Supabase. They are super welcoming, kind and friendly. I'd highly recommend contributing to their repositories, they have a variety of programming languages to choose from, are very active and provide great feedback - often within minutes.
Doing anything in public is scary, but it is often the best way to grow and improve in just about every facet of life, whether it be writing code, speaking or blogging (this was supposed to go into my personal journal).
People are often kinder than we give them credit for. More often than not you will receive applaud, thanks and constructive criticism than harsh or unkind words. This has been the case for me so far, even when I've made silly mistakes.
My only wish is that I had started contributing to OSS sooner; I'd be so much further along in my developer journey than where I am now despite having a formal education and working for a large software company.