“Contributing to open-source and working directly with good engineers at Google, Microsoft, Meta, etc., I gained a lot of things, from knowledge to networking.”
Cuong Le, Software Engineer
I started contributing to Go in about 2016. I used to use Go before, when it was released as version 1.5. I remember the first patch I submitted was for the OS library, which involved mishandling the shell’s special parameter “-“.
During my time working at VCCorp around 2013, Docker emerged as a very useful solution for developers as well as system administrators. I want to learn more deeply and tinker with its source code after knowing it’s written in Golang, but to understand it, I have to learn Go only. At first, I learned to use it just like I would when approaching other languages. After learning and understanding Go more and participating in forums, I realized that this is a very interesting programming language. My opinion so far is not very important in terms of programming language, but any language that helps me have a new perspective and approach to problem solving makes me interesting and want to learn more deeply. When I joined the Go community, I learned a lot from famous engineers in the tech industry, from big companies like Google, Microsoft, Facebook, etc. Working with them also taught me a lot of cool things.
There was a memorable experience that I will never forget when I contributed to Go, where I mainly did the Go Compiler part. I worked with a Google engineer; let’s call him A. He spends 80% of his time doing his main work and 20% working on projects for other teams. When he worked in the Go team, even though he only spent 20%, he was almost the person with the most understanding of the front-end part of Compiler. A has a great passion and love for Go, so he spends a lot of time outside of working hours to develop, arrange, fix bugs, etc. to make Go’s source code better and easier to read and understand for users. At the end of 2019, during the holiday period in the US, instead of having a happy holiday with his family like others, A spent a lot of time rewriting the front-end in Compiler to make it better and rewriting the source code for ease. But the manager didn’t include these contributions in his evaluation or performance review and didn’t appreciate his contributions to Go.
At that time, I felt very unfair to A, so I went on Twitter (X now) and tweeted: “I will stop all contributing to Go until the Go team has an objective assessment or review on the matter”. (Actually, I only stop contributing from my personal account, but for work at the company, I still have to spend 20–30% of my time contributing to Go with another account for another part of the company, not related to Go Compiler). By a certain force, the problem was later solved, and what is right can be seen by anyone who looks at it. That manager also realised the problem; the matter was resolved, so I also went back and continued to contribute to Go. I feel very happy and feel that the voice of a contributor like me is heard. Obviously, Go won’t be as successful as it is now without users, and users have to come from the community, so they have to listen to contributors like me.
Looking back, when I contribute to open source, I see that I get a lot of things back. I feel proud when my small contributions can help the development community grow. For example, on the frontend of Compiler, I am one of several contributors to the organization, rewriting the source code to make it easier to read and name for other engineers when working with Compiler. Because Go Compiler was originally written in C, version 1.4 (or 1.5), they wrote a tool to translate or convert the entire source code of Go Compiler written in C to Go, i.e., Go Compiler is now written in Go language. Because of such an automatic conversion from C to Go, the source code has a lot of things that are organised in an irrational way. Just like organizing an event, those unreasonable parts will make the operation not smooth and unable to do well. So I’m very happy and proud to be one of the few people doing most of the front-end part of Compiler and reorganizing it in a better way.
Moreover, when working with a lot of good engineers at Google and other big companies, I also gained a lot of new knowledge, both in terms of software engineering and technical, etc. And developing in networking as well. Another fun experience is that before I applied for a job, and CTO is also a core contributor to Go, he looked at my profile and knew immediately who he worked with, so the interview was also more convenient (haha). It’s not like the interviewer has a “bias”, but they have worked with me already, so they know my working style, mindset, skills, etc., so I have more advantages than other candidates.
As for Go team, I’m very happy because they also gave me Google Open Source bonus: they picked people outside of Google who have made certain contributions to their open source, and I was one of them. They only sent me a certificate, but I was very happy that Google and Go team had certain recognition for my dedication. A little secret: at the end of September, I will attend GopherCon in the US, and I will be able to meet face-to-face with people who have worked online until now, so I’m very happy (ah I just successfully interviewed for a visa yesterday too, hehe).