The Go Learning Path

One of the most common questions asked is "what's the best way to learn Go?" - Well, this page outlines one potential path forward, starting from the basics, and building your proficiency up slowly.

🔰 Level 1 - Beginner

A strong start can make or break your language learning path. It's important to pace yourself and make your learning habit sustainable.

Focus On

In this section, take the time you need to become familiar with the syntax and keep asking the question "how does this really work?".

A strong fundamental knowledge of the syntax and some of the hidden foot-guns can really help to accelerate your learning further down the line.

Beginner's Guide to Go

The complete Go course designed to teach you the fundamentals of the Go programming language!

Beginner's guide to GOk
📚 Lessons: 29 🕘 Course Length: 3 hours ⚒️ Status: Published

Free Resources

The Tour and Go By Example are renowned resources held with incredibly high regard by most Go developers.

I'd recommend working through all of them, they all complement each other nicely and help solidify concepts.

🔗 - A Tour of Go 🔗 - Effective Go 🔗 Go By Example

A fantastic visual roadmap of some of the paths you can take when learning Go.

🔗 - The Go Path

Interactive Go

Learn Go through interactive, in-browser challenges!

Interactive Go
📚 Lessons: 7 ⚒️ Status: Published

Additional Resources - Free and Premium

These resources are fantastic standalone resources with fantastic feedback from the Golang community. I highly recommend checking them out!

🔗 Learn Go With Tests 🔗 Let's Go - Alex Edwards 🔗 Let's Go Further - Alex Edwards 🏆 Go Challenges

💪 Level 2 - Intermediate

Now that you have a handle on the syntax, it's time to level up your skills with some project development.

Focus On

At this stage of your learning journey, you should be focusing on consolidating what you've learned previously and expanding your breadth of knowledge to include things like the tooling setups, testing, architecture and design patterns.

Your focus should be on building up more complex projects that continuously push your knowledge boundaries. For example, try introducing a database or a queue system in your project and understand how you can architect your app so that it's still testable and maintainable.

🛠️ Tools

🧙‍♂️ Level 3 - Advanced 🧙‍♀️

You've mastered the skills needed to write your own Go applications, now it's time to expand your knowledge such and explore technologies and skills that you'll typically need in day-to-day Go development.

Focus On

Focus on expanding the number of technologies you are comfortable working with and thinking deeply about architecture and code design.

At this stage, I tend to see folk either gravitate towards architecting systems that span multiple services, or really driving deeper into technical details. Both paths are perfectly valid, but try and frame any projects such that they are focused on your own career objectives.

Note: This page was heavily inspired by Jeffrey Way's fantastic Laracasts site.

Attribution: I'd like to thank Mohamed Allam for their suggestions and contributions to this page!