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.

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

a 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

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:

  1. Is a CLI app.
  2. When you run your program, it asks you for the date of birth.
  3. The program calculates your age and prints it back to your console.
  4. 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

a 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

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

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

Listen

A lot of Experience - The Senior Gopher

a 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

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

Listen

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!