why I use Go
Go is not the most expressive language. It’s not the fastest. The error handling is verbose and generics arrived late. There are things about it that should annoy me.
But I keep reaching for it.
the pitch nobody makes
Most Go pitches focus on goroutines and performance. That’s real but it’s not why I stay. I stay because of reading.
Go code is boring in the best way. When I come back to a Go codebase after six months, I can read it. There’s rarely a clever abstraction I need to unpack, no magic happening behind the scenes, no framework-specific patterns I need to remember.
The code says what it does. That’s rarer than it sounds.
the stdlib
The standard library is genuinely good. HTTP server, JSON, testing, crypto, database interfaces — it’s all there, it’s stable, and it works the way you’d expect.
In most other ecosystems, picking a library is a decision. In Go, the default answer is often “use the stdlib” and that answer is usually correct.
compilation speed
Fast builds are underrated. The feedback loop of write → compile → run being under two seconds changes how you work. You stay in flow instead of watching a progress bar.
the tradeoffs
Go makes you write more code for less. That’s the deal. No implicit conversions, no operator overloading, no macros. You write the loop, you write the error check, you write the thing.
Some find this tedious. I find it honest.