Understanding the popularity of {any shiny new thing}

This is not intended to be a flame war! We are all grown up and know that every language has it’s pros and cons and we should not negatively criticize other peoples works for no reason.

I keep a very close track of some languages, mostly: Go, Elixir and Rust. Go is by far my favorite, I really like how it works, and even though it’s not perfect, it’s 90% Perfect, 100% of the time :grin:.

But I also really like what other languages can bring to the table, like Elixir. While I was browsing the Elixir forum, I came across with this post: Understanding the popularity of Go. And it is what we could expected, everyone complaining about how error handling is wrong, miss of generics and why it got popular because it’s backed by Google.

The reason of this post is to discuss how Go, even not being a rock star language in the sense of what people actually expect today (generics, union types, immutability, …), solves real world problems. For me it’s very clear why i’m using Go, but i have friends that keep asking me why not Elixir, Clojure, Rust, {insert any shiny new thing}, and maybe this still a open doubt for newcomers.

Today I’m working in the biggest ecommerce in Latin America, all projects of my team are made with Go and we handle alot of traffic most of the time with the minimum instances and it’s rock solid, no runtime exceptions, predictable performance and easy to write/read code. At the company, there is group of people that argues that functional programming is the right way, but in the end of the day, my applications are running as good or better then they, consuming lower resources and with a very low start barrier. By the way, the company is based in microservices, so, the applications that i’m talking about are all microservices.

I think this talk from 2012 is still valid. One key sentence from it is:

It must work at scale, for large programs with large numbers of dependencies, with large teams of programmers working on them.

The Go team tries very hard to keep Go scalable in this broad sense. Because of this, “what people actually expect today” will not always become a part of the language. Changes to the language are coming slow and are very well thought through. This is a Good Thing™.

Large systems are not written by individuals, they are written by teams. Teams must be able to integrate new programmers fast. Since not every programmer is or can be a “Rock Star”, mediocre programmers must become useful team members and they must become it fast. Go is designed to make this possible. “Rock Star” languages aren’t.

1 Like

I do not miss generics at all. The thing is that people tend to get all features of some other language in order to accept the new one, but what is the point then? You can do all without generics, just use interfaces or eventually generate code. I can’t tell more about Rust and Elixir, didn’t try them.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.