Coder's Cat

3 Things I've Learned From 10 Years on Github

2021-12-31

I started to use Github in 2010, when I have learned Git, Ruby in that days. Github was initially built in Ruby on Rails, so I heard of it in the community. I thought it is nice to have a site to back up my code, so I give it a try.

I began my career as a software engineer in the next year. Unexpectedly, after so many years, learning from Github and contributing to open source has become a habit, hobby, and lifestyle.

I almost use Github every day, whenever I have written code in my spare time I will share it, I also learn from Github since there are so many excellent references and open-source code on it.

In the past year, and I had more time to code in my spare time: (Ignore the number of committing in the last two months, because there is a script to sync notes every day 😁)

/images/ob_pasted-image-20211213171045.png

Here, I’d like to share the gains from my 10 years of experience.

Self-improvement

I will suggest anyone who is learning to code and wants to improve development skills participate in open source contribution.

Now software development has passed the slash-and-burn era. Most software development nowadays needs to reuse a large number of existing libraries and tools. Large-scale software development is a socialized, intellectual collaboration activity. Sharing code on Github and contributing to other open-source projects is the best way to practice this kind of ability, collaboration ability, and the ability to reuse existing code.

After staying on Github for such a long time, I prefer to the way of Learn from Source Code and practicing, and have built a natural habit to contribute. For instance:

  • I want to learn WebAssembly, so I check out this runtime wasmerio/wasmer to learn from it, and fixed some of the problems I found by the way.
  • I saw some defects in an Obsidian plugin, so I fix it by myself and discuss with the author on how to improve.
  • When coding in Rust, I saw some repeated warnings. I searched on Github and found that others have also encountered it, and then I took the time to make a PR to fix it.
  • I want to understand how the container is implemented, so I found the open-source code containers/youki to learn, and then fix my found problems and I even became a maintainer.

I have learned a lot myself in this process. I’m not only a user and consumer but also a creator and contributor. This makes a huge difference in my career as a software developer.

Contributing to open source belongs to Working in Public and also Learn in Public. The advantage of working in public is that our contributions can be counted as proof of ability. Your Github profile is the best resume.

In the past few years, I have met some interviewers who recognize my open-source contributions and don’t give that brain-tester kind of LeetCode questions in interviews.

Create value

Our code may not create value by ourselves, but it may help others if we shared it with the world.

When I was reading the book “Essentials of Programming Languages”, I had implemented the most of exercises while studying: my solutions to EOPL3. I will receive some emails from students to ask questions on learning, or help me to fix the issues in code. Because this book is a textbook for some universities, my code is a good reference for them.

For another instance, I shared a maze generation program that I implemented when learning data structures and algorithms, and then I wrote some articles on A* pathfinding algorithms. Someday, a professor at Shanghai University saw my article and asked if I could help them solve a program issue. They want to calculate the kth shortest path in more than 1w nodes. I spent some spare time helping them implement the core algorithm in C. They later published the article and with my name in author list.

If these programs have only stayed in my hard drive, it is probably worthless, since I’ve learned the knowledge from the code. Instead, after sharing it with others, it’s something that helps others and makes values, we can get deep satisfaction. And I never thought that I would publish an article on molecular biology, that is a possibility I got from share.

More possibilities

You can’t connect the dots looking forward; you can only connect them looking backward. So you have to trust that the dots will somehow connect in your future.

– Steve Jobs

Looking back, I think the inspirations and contributions I have made are all dots, which in some aspects have brought changes and possibilities to my career.

I’ve met and know more people in the community, learn new things about programming, follow the things that interested me. Recently I started another side hustle, I get paid to contribute to open source projects for a company. These are the possibilities that I never thought of.

And now a wave of companies that create open-source software has emerged in worldwide, such as Pingcap, Vercel and so on. This is a very good trend so that those of us who like to write code have more choices besides IT giants.


Open-source have changed everything, sharing your code with others will be incredibly rewarding.

Those great and world-changing open source projects are also started with a small step at the very beginning. When Linus shared his small Kernel, he probably never thought that the entire operating system industry was changed by himself. When Evan You shared his front-end works, he didn’t expect Vue to be used by so many companies and people.

For anyone who want to know more, I highly recommend these:

Join my Email List for more insights, It's Free!😋