A Two-Year Go Language User

I started learning Go language in October 2022, and now it has been two years. During this time, I have gained a certain level of understanding of Go and have had some practical experience using it in my work. I’d like to share some of my thoughts on Go.

Why Learn Go?

I was choosing a technology that would help me establish myself in China’s internet industry. The pandemic had just ended, and recent graduates were saying that the job market for Java was tough and it was hard to find work. As a junior in college, I decided to study abroad, and with two years left until graduation, I was quite confused. I asked my uncle, who is a seasoned programmer, for advice, and he suggested I try Go, which they were also using.

The Long Learning Journey

So, I began learning this language. I must thank him because, for a novice programmer, Go is very comfortable to learn. Both Go and Rust, as emerging languages, have very clear learning paths and almost no historical baggage, which is very friendly for beginners.

I learned Go’s syntax, concurrency, some data components’ Go SDKs, and various Go frameworks. I found Go’s concurrency very easy to use, its SDKs quite rich, and its frameworks numerous. I used Go at work to write some small tools and services.

I also attended GoCN’s offline event in Beijing, where I met fellow Go enthusiasts. It was the first event after the pandemic, held in Beijing. The day before, I was still in Lhasa, but on a whim, I rushed to Beijing overnight and was kindly hosted by Jiang Da-ge. I was very happy during my time in Beijing.

The star projects of Go are Docker and Kubernetes (K8s), both written in Go. The success of these projects has given Go a prominent place in the cloud computing field, firmly establishing it alongside older, strong languages like Java and C++.

Later, I also studied cloud-native technologies, though I am still in the learning process. I feel I need to study them systematically because I am deeply involved in this field. Go has greatly helped me. I became an intern at TikTok Cloud Infra in Singapore, where I have learned a lot.

The Road Ahead is Long

Coming to Singapore and working with Go is the best arrangement for me. I may need to continue improving my Go skills, learn more cloud-native technologies, and perhaps study other things as well. But I believe I will keep going until I no longer enjoy this industry.

Of course, becoming a full-time employee from an intern requires significant effort. Given the circumstances, I need to study LeetCode algorithms, general backend technologies with Go, and Kubernetes-centric cloud-native technologies. I may also need to learn other languages and technologies, such as systematically studying C++ or PyTorch, to ensure my employability.

What Will This Topic Include?

Currently, I plan to include some of the general backend knowledge points I have worked on in this Go series. In the near future, this Go series will include at least the following content:

  • Database Series
  • Message Queue Series
  • Security and Encryption Series
  • Network Programming Series
  • Practice Projects:
    • Blog System: Actually the predecessor of this website, a monolithic application based on the Gin framework, with all components including MySQL and Redis containerized. The authentication part designed a dual-token mechanism. Maintenance costs were high, so I switched to Hugo.
    • Lottery System: This will be a practice project integrating high concurrency techniques.
    • GPC Framework: An RPC framework based on Go, where I will implement a simple RPC framework.
    • Distributed Search System: A more advanced practice project involving some knowledge of distributed systems.

The basic syntax of Go and its concurrency might not be included soon, as they are both very large topics and will take time to organize