I think I'm in love

John Arundel3 min read
Bitfield Consulting
The Deeper Love of Go
The Deeper Love of Go cover image
Programming is fun, as we often like to remind each other in this little community, and Go is a particularly fun language to program in.
I fell in love with Go when I first learned it a few years ago, and ever since then it's been the language I've most enjoyed teaching and writing about. The Deeper Love of Go is my attempt to communicate what it is that's so great about Go, and what I've learned about it over time.
I've tried to make the book very much like the experience of learning with a human teacher, and it covers the same sort of ground I do with my students. Together, we'll learn the fundamentals of Go: functions, data, variables. We'll build on your understanding by applying them to a practical, hands-on project that goes further than most beginner books.
But it doesn't stop there: we'll go deeper. Knowing the fundamentals is great, but Go has some sophisticated features like concurrency that make it very powerful for writing things like distributed systems and high-scale servers.
By the time you've finished this book, you'll be ready for a spot in any professional Go development team. You'll have gone way beyond the tutorials, and be able to confidently discuss things like goroutines, pointers, and TDD. Most importantly, you'll be on the road to mastering your craft.
One reader said, “Most of the ‘beginner’ books I bought felt like they were written for people who already had years of experience. John’s book is the first one that actually feels approachable. I’m finally learning!”
Also available as part of the Complete Go Library bundle.
Shop now
The Tao of Go
Surfing gopher
What does it mean to write programs with kindness and compassion? It means that we write code for human beings, not for computers. We can be kind to those who have to read our code by being as clear, as simple, and as explicit as possible.
In code reviews, we are gentle and encouraging. We find things to compliment in other people’s work, and we don’t treat people as though they’re stupid for making mistakes or overlooking details.
Finally, we can be kind to ourselves, by writing great tests that make it easy to understand, fix, and improve our programs in the future, and by not getting angry with ourselves when we discover bugs or design flaws.
Follow the Tao of Go
Bits & bytes
Roblox
Here's what I've been reading and watching this week:
  • Things I find myself repeating about Go — Dave Cheney is one of my favourite Go educators, because he has great taste, and he argues clearly and forcefully for doing things the right way. I don't always agree with him on exactly what that way is, of course, but I mostly do, and his opinions are always worth listening to.
  • How to think about time — Not a disquisition on metaphysics (though I'd be up for that, too) but a very clear, specific, and practical guide for programmers who have to deal with dates, times, and durations (in other words, all of us). Time zones, epochs, wall-clock vs system time, and days that have no midnight: it's fascinating stuff.
  • Roblox is *$(#@ing weird — The world’s most beloved video-game app is also a brain-rotting, hypercommercial dystopia. It has 100 million users, including two-thirds of all Americans aged 9-12. What could possibly be more enticing to any kid than a free game where all of your friends already congregate, that looks and sounds absolutely deranged and will alienate your clueless parents and teachers?
Not interested in this? Update your preferences to control the topics you want to see in these posts: Go, Rust, or careers guidance. If you uncheck the “Go” box, for example, you won't see Go-related emails in future.
Bitfield Consulting logo
John Arundel
Follow me on Bluesky / LinkedIn
Grimshall, Boconnoc, Lostwithiel, Cornwall, PL22 0RX, United Kingdom
Powered by EmailOctopus
10 links in this issue