Whenever I start a new programming language I always like to follow a similar set of steps.
With Go, I found this approach to sort of work out. The syntax and layout of the language make it easy to pick up the basics and get going. Even though I've been able to put together simple applications and have a grasp of the syntax it never really felt like I was writing "Go" or as you'll hear a thousand times while learning, I wasn't writing "idiomatic Go."
The Go philosophy is what makes Go such a powerful and pleasant language to work with. Truly understanding that is an important step in the learning process. Below I've compiled some learning resources that I've used to try and capture the understanding of Go that will make you a great developer.
I love a good course. Being walked through the process of building an application and seeing how other construct and architects a project helps me build a context of my own around how to think about the problem in the given language. Here are some of the courses I've found useful this year.
As far as I know, there's only one active Go podcast and that's GoTime. They have awesome guests and hosts that have very insightful and intelligent conversations about concepts in the Go community as well as the general developer community. One of the things I really appreciate about the podcast is they often talk about the why of whatever the topic is. It really helps new folks understand the concepts that help make Go great.
If you're new to Go or programming in general you may find that GoTime is way over your head, at least that's how I felt at first. However, I've come to find that listening to those conversations, even the ones you don't understand, really helps you get that context of the language. Whenever I learn a new language or framework I look for a podcast that covers it and work my way through the backlog. It's a great way to learn the vocabulary in the community.
I've found the talks on Go are some of the best that are available. Here are a few of my favorites.
Caveat: I'm not the world's best book reader. I rarely take the time to regularly read, but it's something I'm working on. As such, I'm sure there are more books than these.
Over the last few months, working through these resources, I've really come to have a better understanding of what it means to write Go and how to understand those paradigms that help you write readable and maintainable code.
These resources have made all the difference in going from scratching my head, to actually writing an application that makes sense and that I'm excited to keep working on.