Writing An Interpreter In Go by Thorsten Ball is a brilliant curriculum choice, and I want to be clear about why: it is not really about interpreters. It is about how a skilled Go developer structures a non-trivial project. You will build a lexer, a parser, an AST, and an evaluator -- and along the way you will learn more about Go project layout, testing patterns, and interface design than any CRUD tutorial could teach you.
The cross-reference to the Computer Systems curriculum (Module 7, Compilers) is where real value compounds. When you build an interpreter in Go and then study compilers in the CS track, you are seeing the same concepts from two angles. That is integrator thinking -- connecting systems across domains -- and this curriculum leans into it.
Now for the hard truth: there is a massive gap between Go tutorials and production Go. Most Rails developers who try Go build a REST API with Gin or Echo, realize it feels like writing Rails with worse syntax and no ActiveRecord, and quit. They are not wrong -- Go is a terrible choice for CRUD web apps. You will miss ActiveRecord. You will miss Rails conventions. You will miss having a framework that makes decisions for you.
The trick is to stop trying to use Go like Ruby. Go is for concurrent services that handle thousands of connections. Go is for CLI tools that ship as a single binary with zero dependencies. Go is for infrastructure -- proxies, load balancers, container runtimes, observability pipelines. Docker is Go. Kubernetes is Go. Terraform is Go. That is not a coincidence.
If you find yourself building a Go web app with templates and a database ORM, stop and ask whether Rails would do the job better. It almost certainly would. Use Go for what Go is good at, and you will understand why the language exists. Use it for what Rails is good at, and you will just be annoyed.
The real graduation moment is when you stop comparing Go to Ruby and start seeing them as complementary tools. A Rails monolith with a few Go microservices handling the concurrent, performance-critical paths -- that is the sweet spot. That is where a Rails developer who knows Go becomes genuinely dangerous.