Back

Monday, 07. April 2025

My Go Journey So Far

Long time no see! The last weeks were a little crazy. I worked a lot, got sick and then sadly lost touch with my usual flow. So it took me some time to get back on track. But here I am with a new article. This time, I want to share some personal thoughts on my journey with learning Go as a second backend language. So let's dive straight into it!

Why Go?

So far, since I started working as a professional 15 months ago, I wrote every project in PHP and Laravel. I learned a lot during this time and to be honest I still am. One, or at least I, can't master a language and all its idioms, best practices, optimal patterns etc in this short time. However, I would say I am pretty confident with Laravel now and I know most of the stuff pretty well. I think it's also fair to say that Laravel is rather easy to learn since it is such a powerful framework that hides all the "tricky" stuff for new devs and let them focus on writing the actual business logic.

During the last few months I became more curious how things work inside the framework and what parts are hidden to me. I also read the book "Pragmatic Programmer" which suggests learning a new language every year to gain a broader view of different patterns and get new insights. So I said to myself "Maybe it's time to dig a little deeper". Maybe it's time to learn a new language that is not solely made for web applications. One that differs a lot from PHP. So I researched a little and picked two languages. C# and Go. I was also curious about Rust, but to be honest the things I heard about the learning curve were what made me step away from it for now. Maybe that's something for 2026 or so.

However I had a little experience with C# already from university. Not much, since it was in the course "Programming for engineers" and we just did very basic stuff. But at least I was a little familiar with the syntax. Ultimately, I chose Go because of two things: 1. Simplicity (At least this is what people kept saying) 2. The mascot - I mean who doesn't love these cute little gophers?!

The Beginning

To be honest, I am not completely new to Go. Back in 2024 I already tried learning Go. I started watching a course from boot.dev which was pretty fun, and I also bought the book "Let's Go". However I was pretty occupied learning all the PHP/Laravel stuff and thought that two languages at the same time are a little too much. So after a couple of weeks where I haven't done much progress I stopped learning Go.

But now in 2025 I decided to restart my Go journey. I grabbed the "Let's Go" book again and coded along while reading. This book alone already taught me so much. Not only about Go, but about basic principles and topics regarding web development. Things like session management for example, which I never needed to think about using Laravel, turned out to be simpler than I thought and I gained a little experience with the more "hidden" logic of web applications.

I was pretty happy rereading the book and a lot of the stuff in there made much more sense on the second read through. I can definitely say that I will read this book again some day in the future and I can already imagine it being a solid reference whenever I forget how something works.

My First Program

After finishing "Let's Go", I thought that it's time to get my hands dirty and write a small program on my own.

Since it is currently smoky season in Chiang Mai and the air quality is incredibly bad, the company I worked for has a special policy that employees can apply for additional home office days when the PM2.5 value is above 150 at a defined measuring station.

There was a question in the Slack channel if there would be a volunteer that could write the current PM2.5 value every morning so the employees know if they have the possibility to work from home on that day or not. As soon as I read this message I thought that this would be a nice small program to write in Go.

So I started writing a small script which fetches the latest PM2.5 value from the measuring station every morning and, based on the value writes a predefined slack message into the team channel.

It's really nothing fancy. Just around 150 lines of code. I used Go because I wanted to gain some minor experience with it and also because I could easily compile the code and throw the binary on one of our servers without any adjustments needed. I created a daemon on the server that keeps the script running and inside the script I defined a cron job to run the function to fetch the PM2.5 value and send the Slack notification every weekday at around 8 in the morning.

Current Status

After reading the first book and writing a first program with Go, I decided to buy another book: "Let's Go Further" I am currently close to finishing this book and it also provides a lot of insights regarding building web applications with Go. It also dives into topics like performance measurements and deploying Go applications which I am pretty interested in. Although I need to say that the price of the book was a little high for me since I live and work in Thailand, I can say it is totally worth it. With both books, Let's Go and Let's Go Further, I now have a pretty solid understanding of how to build web applications in Go and I can always go back and reread specific chapters. The books also provide a lot of external links to blog posts which are digging deeper into certain topics.

I need to say that especially the second book is a little harder to digest for me and I’ll probably have to read it a second time to really absorb everything.

My Plans

My future plans for Go are first of all finishing the "Let's Go Further" book and then start building small web applications and services with Go. Adding additional complexity with each project to always challenge myself. Also, I definitely need to read through the documentation to get a solid overview of the capabilities and functionality that the go standard library provides.

I think about using a framework for Go in the future and currently I think I will go with Gin since it's the most used.

However nothing of this is decided yet. Life and plans change so fast. But for now, I am pretty happy with my journey of learning Go and it's incredibly fun to write. I will definitely keep you updated on my Go journey and share some of the things I will build. But until then, thanks for reading and

Happy coding!

Coding

Comments

Login or Register to write comments and like posts.


GitHub LinkedIn

© 2025