Another day, another startup announcing they’re “modernizing” their stack by… choosing the same language as everyone else

Walk into any tech meetup these days and you’ll hear the same conversation on repeat: “We’re migrating everything to Go!” The enthusiasm is infectious, the confidence unwavering, and the critical thinking apparently optional. It’s like watching a massive game of follow-the-leader, except the leader might have taken a wrong turn somewhere around 2012.
Don’t get me wrong — Go isn’t terrible. It’s just aggressively mediocre in ways that somehow make CTOs everywhere swoon. It’s the vanilla ice cream of programming languages: safe, predictable, and guaranteed not to offend anyone at the architecture review meeting.

The Comfort of Conformity
There’s something beautifully ironic about an industry that prides itself on innovation collectively deciding that what we really need is less innovation. Go’s selling point isn’t that it’s revolutionary — it’s that it’s boring. And apparently, boring sells better than a blockchain startup in 2021.
Meanwhile, languages like Rust are out there solving actual problems like memory safety without garbage collection overhead, offering fearless concurrency, and generally making systems programming not feel like defusing a bomb blindfolded. But who needs that when you can have… simple syntax and fast compilation times?

Elixir sits in the corner with its actor model, handling millions of concurrent connections with the grace of a distributed systems ballet, built on three decades of Erlang’s battle-tested fault tolerance. But sure, let’s choose the language that thinks error handling means typing if err != nil forty-seven times per function.

The Feature Deficit Disorder
Go’s minimalism isn’t a feature — it’s a design philosophy taken to its logical extreme. Generics? Took them over a decade to figure out. Package management? Let’s just say “go get” was doing dependency hell before it was cool. Exception handling? Who needs exceptions when you can return error values and pretend that’s equivalent?

The Go team seems to operate under the assumption that if a feature is complex enough to require more than a weekend to implement, it’s probably not worth having. This is like deciding your car doesn’t need air conditioning because rolling down the windows is “simpler.”
The Herd Mentality Highway
The real tragedy isn’t that Go exists — it’s that everyone’s using it for the wrong reasons. Companies aren’t choosing Go because it’s the best tool for their specific job. They’re choosing it because Google uses it, because it’s “easy to hire for,” because it’s “simple to onboard new developers.”

These are the same decision-making patterns that gave us Java enterprise frameworks and PHP powering half the internet. We’re not optimizing for technical excellence; we’re optimizing for HR convenience.
What We’re Actually Missing
While everyone’s busy writing microservices in Go, Rust developers are building web servers that use a fraction of the memory and handle twice the load. Elixir teams are deploying systems that self-heal and scale horizontally with a few lines of configuration. Even the TypeScript ecosystem is evolving faster than Go’s standard library.

But here’s the kicker: most of these “Go modernization” projects would be better served by staying exactly where they are. That Python monolith you’re planning to rewrite? It’s probably fine. That Node.js API that’s been running without issues for three years? Maybe don’t fix what isn’t broken.
The Conclusion Nobody Asked For
Go will continue to dominate not because it’s the best choice, but because it’s the safest choice. And in a industry where being wrong costs careers but being boring costs nothing, safe wins every time.

So here’s to Go: the programming language equivalent of choosing the second-cheapest wine on the menu. It might not be the best, but at least you won’t look foolish at the table.
Now if you’ll excuse me, I need to go explain to my manager why our Rust rewrite is taking longer than the Go version would have. Some hills are worth dying on, even if nobody’s building monuments on them.

I genuinely love Go, Elixir, and Rust — each has its place and they’re all fantastic tools that have shaped how I think about programming. But watching the tech industry collectively lose its mind over Go while ignoring genuinely innovative alternatives? That’s something I just can’t digest. Sometimes you need to roast the things you love to keep the hype in check. This post is written with equal parts affection and exasperation.
Disclaimer: The author has probably written more Go code than is healthy for any one person and may be suffering from repetitive strain injury from typing “if err != nil” too many times.
If you enjoyed reading this, please consider buying me a coffee at https://buymeacoffee.com/y316nitka Thank You!