Learning Go in 2024; From Beginner to Senior
We all learn differently and at different paces. Finding content that is right for us is challenging. Below is my attempt to curate all the great content I have come across over the years into one place to hopefully help folks advance their Golang journey to the next step.
None of the links below are affiliate links, but some of the content has been created by me; usually because I created it to fill a gap. I have called out where this is the case.
The way I see it, there are four main ways people like to learn:
- Books/Blogs
- Video Courses/Conference Talks
- Building (or what should I build?)
- Listen
I have therefore split each of the levels into these categories. It’s impossible for this to be conclusive, but feel free to leave comments with other recommendations. I’ll check them out and add them if I think they are great.
Just Starting Out - The Beginner Gopher
If you have minimal/no Go experience start here. If you have built at least one Go application that has some business logic and it runs, you can probably graduate to the next section.
Books/Blogs
- A Tour of Go [FREE] - This is created by the Go team. It starts with Hello world and is an interactive tutorial that will teach you the basics of Golang.
- Go By Example [FREE] - Similar to A tour of Go but it dives a little deeper and covers some slightly more “advanced” topics.
- Effective Go [FREE] - Another official resource. Less interactive than the other two but the depth is amazing. If you work through this, you’ll be ready to write pretty much any Go application you want.
- The Go Programming Language [PAID] - This book was originally published in 2015 but has held up to the test of time really well. I still hear great reviews from folks starting out with this one.
- Introducing Go [PAID] - Same as above, this book came out in 2016 but continues to get good reviews from those who are starting out.
- Let’s Go! [PAID] - This book gets rave reviews from folks just starting out. I bought a copy, and I can see why.
- Golang Tutorial Series [FREE] - Old but still has a lot of great content.
- For the love of Go [PAID] - John Arundel has tons of amazing Go content and books, but this one is an amazing introduction that is written in a really nice, casual style.
Video Courses/Conference Talks
- Learn How To Code: Google’s Go (golang) Programming Language with Todd Mcleod [PAID] - I fall into the category of folks who like to learn via video courses. I learned Go from Todd many years ago and as you can see from the amazing reviews, Todd continues to be a great teacher to many people.
- Learn Go [FREE] - This course has great reviews and was built in partnership with Google.
- Why I use Golang in 2024 [FREE] - It’s always nice to hear why from folks with experience, and I think this video explains it in a fun way.
What Should I Build?
At this stage, the most important thing you can do is just get familiar with the syntax, get Go working on your machine and find an IDE you like.
As a project, I recommend building something with the following requirements:
- Is a CLI app.
- When you run your program, it asks you for the date of birth.
- The program calculates your age and prints it back to your console.
- Do not use any third-party libraries, use only the Go Standard library.
If you can complete this project without support, then:
- You have Go set up on your machine correctly, including setting up your IDE.
- You have managed to navigate the standard library documentation to figure out how to create a CLI and read user input.
- You have got
go run
working successfully.
If you’re looking for further things to build, check out Coding Challenges. At this level, the WC task seems a good one.
Listen
- Go For Beginners [FREE] - Gotime is the most popular Go podcast, and for good reason. There is some great content here if you want to learn a little more about what’s going on in the Go community whilst you walk or workout.
- Books that teach Go [FREE] - Some more recommendations here. Also talks about writing a book too if that’s something you aspire
A Little Experience - The Junior Gopher
If you finished the CLI exercise mentioned above, then you’re ready to jump into the content below to take yourself to the next level! By the end of this section you should have a deeper understanding of Go, have built quite a few applications and be ready to start applying for jobs.
Books/Blogs
- Domain-Driven Design with Golang [PAID, written by me] - As you start to write larger Go projects, you’re going to start wondering how to organize your projects. DDD is another acronym you will see come up often. This book is a gentle introduction to the concepts, and you don’t need any prior knowledge. In the second half of the book we also build two projects together.
- 100 Go Mistakes and how to avoid them [PAID] - This book really does help you avoid footguns. This is a book you may need to revisit at this level, as some of the content might seem a little advanced. However, I find it’s good to skim over and have the patterns and concepts in your mind.
- Foundations of Debugging For Golang [PAID, written by me] - Debugging is probably the most important skill that most people are never taught. Being able to debug locally and in production is a critical skill for any Go engineer, but it is rarely taught explicitly.
- Let’s Go Further [PAID] - A follow-up to Let’s go. This is focused on API design specifically, so keep that in mind if that is not the reason you are learning Go.
- Learn Data Structures and Algorithms with Go [PAID] - Now you are familiar with the Go syntax, getting familiar with data structures will pay dividends.
- 12 Factor Application with Docker & Go [PAID] - If you are going to be using Go for application development, it is important to understand how it fits into the container ecosystem.
- How I keep myself alive with Go [FREE, written by me] - I gave this as a keynote at GopherCon Singapore. This post is my most popular and went viral.
Video Courses/Conference Talks
- Gophercises [FREE] - Gophercises are often shared as one of the best free resources there is. It feels like you are pairing with Jon as he builds projects.
- Web Development with Go [PAID] - Jon Calhoun’s course is excellent and very comprehensive. I’ve given away copies in my Go Twitter Community with positive feedback.
- Learn Go With Tests [FREE] - This amazing book will help you learn TDD while teaching you Go. I highly recommend it.
- When to use Generics [FREE] - As you continue your Go journey, you’re going to hear about generics a lot. In this video, the Go team shares best practices.
- Structured Logging in the standard library [FREE] - This video is an amazing introduction on how you can do structured logging using new tools in the standard library.
- What we got wrong, what we got right in Go [FREE] - Rob Pike’s retrospective on some of the decisions made while developing Go is insightful and interesting.
What Should I Build?
Exchange rate server
Requirements:
- Write an HTTP server with an endpoint that takes a currency pair, for example,
/exchange/GBP/USD
. - For that currency pair, it should list today’s exchange rate, the exchange rate for the past 7 days, and whether today is a good day to buy.
- Whether it’s a good day to buy or not can be super naive. I recommend just averaging the last 7 days and seeing if it is lower than today.
Commentary:
The GO team provides guidance on how to organize a project, and here is a post by Dave Cheney on how to write Table tests.
If you’re looking for further things to build, check out Coding Challenges. Building your own Spotify Client seems a good task at this level.
Listen
- Project Structure & Package naming - Great discussion about something that will come up often as you navigate Go.
- Error Handling In Go - Error handling is an important concept in Go, and this podcast episode provides a good discussion on approaches.
- Domain-Driven Design with Go - Podcast discussion around DDD.
- The Pain of dependency management - Go has a difficult history with dependency management, and this podcast episode provides a good summary of where we have come from and the issues still outstanding.
Some Experience - The Mid-level Gopher
If you have a few greenfield projects under your belt and have also made meaningful changes to existing Go codebases that you didn’t write, then you’re a mid-level gopher. Leveling up from here is digging into some of the more advanced patterns and tools that Go has to offer.
Books/Blogs
- Concurrency in Go [PAID] - Concurrency is interesting in Go, but can be a little difficult to get your head around. This book does a good job of explaining the primitives.
- A Tour of Go, Concurrency [FREE] - Continuing the concurrency theme, the Tour of Go is helpful and links to other good resources.
- Event-Driven Architecture in Golang [PAID] - This book helps you understand both Event-Driven Architecture and how to apply it to Go.
- More Powerful Go Execution Traces [FREE] - Discusses performance tuning changes made to Go. Combine it with this additional post on optimization.
- Crash Course on Go interfaces [FREE] - Interfaces are implemented in an interesting way in Go; this blog will get you started.
What Should I Build?
Develop a tool that scrapes information from websites and presents it in a useful format.
Requirements:
- Parse HTML, handle pagination, and store scraped data.
- Store the scraped data in a database and send an email whenever something interesting is discovered.
If you’re looking for further things to build, check out Coding Challenges. Building your own Memcached seems a good task at this level.
Video Courses/Conference Talks
- The Ultimate Guide to Debugging with Go [PAID, created by me] - By the end of this course, you’ll be a master at debugging both locally and in production.
- Building Production-Ready Services with gRPC and Go [PAID] - gRPC is the modern, high performance way to communicate across services. It is used by huge companies such as Google, Cloudflare and Netflix, and, after this course, maybe by your company too!Go is the perfect tool for gRPC, and by the end of this extensive course, you will see why.
- How Go Programs keep working [FREE] - The Go Compatibility promise is one of its most respected features. Rss Cox explains how this is possible.
- Build a Google Analytics in Go [PAID] - Dom’s courses are highly practical.
- Go Concurrency Patterns: Pipelines and cancellation [FREE] - Highly recommended walkthrough of concurrency patterns.
Listen
- Intro to GRPC [FREE] - As you get more comfortable with Go fundamentals, learn about gRPC, which has first-class support in Go.
- Foundations of Go Performance [FREE] - Insights into Go performance from experts Miriah Peterson & Bryan Boreham.
- Event-Driven Systems & Architecture [FREE] - Event-driven systems offer durability and flexibility, though they can add complexity.
A lot of Experience - The Senior Gopher
At this point, you have shipped a ton of Go to production, maintained Go systems, and made improvements to Go code written by others. Leveling up from here is to learn more about architecture and technologies that complement your Go skills.
Books/Blogs
- How to Build a real-time event system in Go [FREE] - Real-time event systems are common in larger applications.
- Keep the Monolith, split the workload [FREE] - Challenges the idea of moving to microservices. It’s good to be open to new ideas as you advance.
- How to use websockets in Go - A comprehensive guide [FREE] - Learn about different architecture patterns.
- The Go memory model [FREE] - Understanding Go’s memory model will help with optimizing larger systems.
- Kubernetes memory limits in Go [FREE] - A niche topic, but it covers Kubernetes memory management well.
What Should I Build?
Build a framework that simplifies the development of distributed systems in Go.
Requirements:
- Include features like service discovery, load balancing, fault tolerance, and consistent hashing.
- This project will deepen your understanding of network protocols, concurrency models, and the complexities of distributed systems.
Take inspiration from go-kit.
Video Courses/Conference Talks
- GRPC Microservices with Mongo, JWT auth and Kubernetes [FREE] - Great introduction to various databases and authentication methods.
- Memory Management in Go: The good, the bad and the ugly [FREE] - Comprehensive overview of memory management.
- How Cloudflare Controls its Network Using Go [FREE] - Practical use of Go by Cloudflare.
Listen
- Jumping into existing codebases [FREE] - Techniques for getting familiar with unfamiliar codebases.
- Creating Art with Go [FREE] - A unique and interesting use case for Go.
- All About Kafka [FREE, features me] - Discusses Kafka, its complexities, and considerations for using it effectively.
Keeping up to Date
Software Engineering, both in Go and in any other language, is a lifelong commitment to learning. It’s important to dedicate time to keep up to date.
- Subscribe to byteSizeGo [FREE] - I share great Go content and discount codes with my subscribers. Subscribing gets you a Go remote company guide.
- Go Time [FREE] - Amazing Go podcast with a variety of topics.
- Go 1.22 in 22 minutes [FREE] - A free course on the latest release of Go 1.22.
- The Go Podcast [FREE] - Hosted by Dom, now with guest interviews.
- Golang weekly [FREE] - Aggregates the best Go content of the week.
Wrapping up
It took me a long time to compile this list, so I hope you found it helpful. Let me know if it’s helpful and if there is any other content I should review and add!