It has been nearly two years since I graduated. During this period, I used Java for daily development, because I learned Java by myself in college, and then I found a job doing Java development after graduation. Now I have not been doing Go for long, but I still want to record some of my experience and learning experience. It would be better if I could help you!

In fact, Go has been very popular in the past two years. After all, it is the son of Google, and with docker and K8S, it has some advantages over other languages (such as concurrent processing and channels). In recent years, the number of jobs in Go has been gradually increasing. Some big factories are gradually using Go as the development language or even the main development language. Back in June of last year (2020), I probably didn’t have much to do, so I subscribed to a little column on Go online and started to learn some of it.

Of course, I still focus on my work, so I only learned Go out of interest at that time, and I didn’t plan to switch to Go. I didn’t have a sense of pressure in learning, which was quite slow. The way to learn is very simple, is to follow the content of the column, according to the code, because I have Java experience, so the basic grammar knowledge of the learning part of no pressure. I think programming is actually practice makes perfect things, there is no skill to speak, especially for some beginners is more so, a lot of things do not understand, their own hands knock a few times will slowly understand.

A few months later, in October 2020, I mastered most of the basic knowledge of Go through my spare time study. During this period, I also brushed some problems in Leetcode, using Java and Go to consolidate the basic knowledge. This is also a good experience to have when you are learning a programming language, if you want to strengthen the basic syntax, it is a good choice to do a lot of code, such as reading some leetCode topics. My Github has recorded some questions that I have brushed. I suggest that you can also refer to them when learning. You can achieve two things with one stone by implementing some commonly used data structures and algorithms and brushing some Leetcode questions.

Github.com/roseduan/al…

On the eve of the National Day holiday, I saw a simple database model paper on the Internet, the content is very simple, I quickly understand, so I want to use Go to achieve it, so as to better consolidate my Go knowledge. Without delay, I started, but things were not as easy as I imagined. It looked easy, but the code was not easy to write, and I had no idea how to start. So I consulted other materials and learned from other projects, and only in early December did I begin to write the code of this project. Then I worked on the project with Go through December, and within about a month, the initial version of the project was finished and I posted it on Github:

Github.com/roseduan/ro…

After this month’s amount of code, I consider myself a beginner to Go. This is also a very good experience, that is the purpose of learning is to practice, if the knowledge theory, only then you understand it and know must be vague, be sure to practice, can find more why, can really understand themselves in the theoretical study phase of many don’t understand things.

If you are learning Go, and don’t know what good practical projects, so it is strongly recommended that you look at me of this project, this is a very simple database, I named it rosedb (my English name is Rose), most knowledge are used to Go, will be to consolidate the Go an excellent material of knowledge. You can look at it patiently and then try to write it yourself, or submit code to the project to improve the features.

By the end of 2020, I had the idea of job-hopping, so I began to look for a job. I wrote Java and Go on my resume, and when I sent out my resume, both Java and Go positions were offered. I have met with several companies, including two Java companies and two Go positions. During the interview with Go, the interviewers all asked me to introduce my open source project RoseDB. This actually shows that if you have a good open source project on your resume, no matter how many stars there are, it will be a good highlight. Because at least it shows that your hands are good, your programming skills are good, and so on.

Now in station B main job is to use the Go, into the actual project, only to find that in fact I still have a lot of things they don’t understand, such as used in our project to gRPC and GORM, so when I was in the reading program code, learn these techniques, combined with the official document will be for a few more focus on content, Buy some books combined to see, and then in the actual project constantly step on the pit experience, for some business related basic technology can be very good grasp.

Looking back now, I didn’t plan to change my language direction at the beginning. I just happened to learn Go and found a job developing Go when I was looking for a job. In fact, the technology of these Domestic Internet companies generally serves the business, so no matter what technology you learn, as long as it can generate value in the business and give you a sense of achievement, I think it is a good thing. Focus on technology boom was not a bad thing, but avoid by all means is impetuous, looking at what fire is to learn what, in the end may not be able to learn anything is proficient in, the best is to focus on one area, in the case of energy more, learn what they interested in, it may also add some uncertainty to their future.

If you want to exchange your learning experience and interview experience with me, please pay attention to my wechat official number [roseduan writing place], waiting for you to come!