Default to Go for infrastructure
Go is not the only language I use. But it’s my default language for CLI tools, infrastructure and services. I don’t use other languages unless there’s a good reason. Here goes why.
SIMPLICITY and CLARITY. There is already enough technological and organizational complexity and confusion. Simpler and clearer systems are easier, cheaper, and more enjoyable to understand, maintain, and operate.
LINGUISTIC STABILITY. The Go team has made a strong compatibility promise, so you don’t need to worry much about programs you write stopping to work as the language evolves. The language and standard library only add; they essentially never break what already worked.
CROSS-COMPILATION to a SINGLE BINARY. Go makes it easy to build (statically linked) executable binaries for different platforms, which simplifies deployment enormously: GOOS=linux GOARCH=arm64 go build && deploy.sh
SAFETY and SECURITY. Go is a relatively young language designed with modern safety and security concerns in mind. This is less true of languages created in a much earlier era when the security landscape was very different.
OPTIMIZED for SDLC. Go improves the whole software development life cycle (SDLC) since it’s not just a language but also a toolchain (go mod tidy, go test, govulncheck) and an ecosystem of packages (libraries).
And several of these advantages are even more important in AI-assisted development. Simple, uniformly formatted code is easier to review when a model wrote it. The compatibility promise means that what a model learned about Go years ago still holds. And fast builds and built-in tests give an agent quick feedback on its own mistakes. Google and spf13 make the case in more detail.