Why Go

In a world overflowing with programming languages, Go (or Golang) stands out not just for what it does,but for why it was created in the first place. Born at Google in the late 2000s, Go was forged in the fires of frustration. Its creators,Robert Griesemer, Rob Pike, and Ken Thompson,were all veterans of systems programming and distributed systems, and they were growing weary of the complex build times, clunky dependency management, and lack of scalability in existing languages.

They weren’t just trying to make another language. They were trying to build a better toolchain, a faster compiler, and a modern language for the multicore, networked age of computing. And so, in 2007, they started building Go.

A Return to Simplicity

Go was officially announced to the public in 2009 and quickly gained a reputation for its minimalism and clarity. While other modern languages embraced abstraction and feature richness, Go doubled down on simplicity:

  • No generics (until 2022!)

  • No inheritance

  • No implicit behaviors

  • Just one way to do things

This design philosophy annoyed some and delighted others. But Go wasn’t trying to be all things to all developers. It was built with a very specific kind of software in mind: scalable, maintainable, concurrent server software.

And Go delivered. The Go Toolchain: A Love Letter to Developers

One of Go’s most praised aspects is the developer experience. The go command-line tool was (and still is) a game-changer. With one tool, you could format your code (go fmt), test it (go test), document it (go doc), and compile it lightning-fast (go build). No dependency hell. No makefiles. No external build systems.

For developers used to Java or C++, it felt like cheating. Go and Concurrency: Goroutines for the Win

Go also brought a fresh take on concurrency. Instead of complex threads and mutexes, it introduced goroutines and channels,a lightweight, elegant model for concurrent programming that takes inspiration from CSP (Communicating Sequential Processes).

This model made it much easier to write networked software, making Go an ideal language for web servers, microservices, and cloud-native applications. Go in the Real World: From Docker to Kubernetes

Go didn’t just talk the talk. It became the language of choice for some of the most influential tools in modern software development:

  • Docker the container revolution started with Go.

  • Kubernetes arguably the most important cloud-native tool in the world, also written in Go.

  • Through Terraform, Prometheus, Etcd, Hugo (which powers this site),and many more, Go is quietly powering the infrastructure that underpins much of today’s internet.

In many ways, Go became the language of DevOps, SREs, and cloud-native engineers.

Community, Growth, and Evolving Needs

Go’s growth wasn’t just technical,it was cultural. The language attracted a large and enthusiastic community. The Go team at Google maintained an opinionated but thoughtful approach to evolution: slow, careful, and conservative.

That’s why generics, long requested and often debated, didn’t arrive until Go 1.18 in 2022. And even then, they were added in a way that preserved Go’s readability and simplicity.

Influence and Legacy

Even if you don’t write Go, you’ve probably used software that depends on it. Its influence has quietly spread across the ecosystem:

  • Go’s tooling-first philosophy has inspired other languages to rethink their developer experience.

  • The minimalist mindset and clear syntax have helped shape discussions around software maintainability.

  • Go has made concurrent programming far more approachable for a broader audience.

Go continues to evolve,but slowly and deliberately. It’s not chasing trends or trying to be Rust with its vast type system, or Python with its fast interpretation and multi-paradigm behavior, or JavaScript and its web influence. Instead, it’s carving out its own path in the world of cloud infrastructure, backend services, and CLI tools.

If you’re building modern infrastructure or need fast, reliable server software, Go remains one of the most pragmatic choices around. In this series, I want to look at the world through this lens, and how to build the tools you can use in your own large-scale projects.

Why This Book?

I started my love for computer science in books, specifically through Micheal Halverson’s Visual Basic 2005 thanks to my dad. Since that point so long ago in 2005-2006, I’ve evolved and matured, and the process by which we learn to program has changed with it.

There’s plenty of other resources out there, like Boot.dev and youtube channels galore. But for me, I’ve found that teaching others is how I learn best. The more I teach, the more I also learn about what it is I am teaching.

In a way, this guide is just as much for me as I want it to be for you. If you have an interest in Go for whatever reason, then this is most certainly for you.

Installation and Platform

To install Go, go to the Go Website and there are install instructions for the most common operating systems. Most linux package managers will have some version of Go available, however if you want the most up-to-date version, please make sure to go to the website and install it there

This site is provided under a Creative Commons BY-NC-ND 4.0 license. Please see The Creative Commons Website for more information.

Without further ado, let’s dive into Go!