
Rob Pike on the reasons for Go’s success - jerodsanto
https://changelog.com/posts/5-things-rob-pike-attributes-to-gos-success
======
RcouF1uZ4gsC
The number one reason for Go’s success is that Google backed it.

There are a lot of very nice languages out there. However, if you look at
compiled languages, they largely need a company backing them. Java had Sun. C
and C++ had AT&T and later Microsoft for C++. Objective-C had Apple. FORTRAN
had IBM.

Don’t underestimate the amount of resources and press that Google’s support
brought to Go.

~~~
dgb23
I don't think the backing of Go is even comparable to Java.

Also Dart is a counterexample.

I think the biggest reason for Go's success is that is it incredibly
accessible. Everything around and in Go is ergonomic, well documented, easy to
understand and clean. It is a language that cares about the tooling and social
aspects as first class concepts.

~~~
pmoriarty
_" I think the biggest reason for Go's success is that is it incredibly
accessible. Everything around and in Go is ergonomic, well documented, easy to
understand and clean. It is a language that cares about the tooling and social
aspects as first class concepts."_

And most programmers probably wouldn't even know about it having any of those
features if it didn't have a famous backer like Google and a famous name like
Rob Pike attached to it.

Marketing definitely makes a difference. Whether it made a critical difference
in this case is certainly debatable, however, as some languages (like Python)
succeeded even before they had buy-in and support from big names. Though,
there again, Python had a lot of help from marketing.. it was just that it was
marketing of a different kind, from its users rather from any company backing
it.

~~~
bch
> Python had a lot of help from marketing.. it was just that it was marketing
> of a different kind, from its users [...]

Perl, Tcl, Python (all scripting, I know) are (iiuc) examples that came to be
without a juggernaut behind them, but then to say they had a different kind of
marketing behind them is sort of tautological, no? People liked those
languages and talked about it. That’s just human nature.

~~~
pmoriarty
When mention the effect of marketing by users, I mean to distinguish that from
choosing a language based on its technical merits. There's a certain amount of
buzz and bandwagon effect that plays in to the success of popular languages,
and, yes, languages like Perl, Tcl, and Python had it too.

That's a different sort of marketing, though, from the buzz created by having
famous/respected names attached to the languges, like Go had in Google and Rob
Pike.

------
gnode
I'd say Go's success is almost nothing to do with its design, and everything
to do with social factors.

Rob Pike was famous before its creation (within the relevant community). The
language was designed within Google, and gained much hype from that. The
effort to foster a community paid dividends.

Writing Go code for a living, I find it a very mediocre language. It's largely
redeemed by its library ecosystem, which reflects not on the language, but the
enormous size of its community and commercial backing.

If anything is noteworthy about its design, it's that it's simple (crucially,
to those already familiar with C-like languages), and easy to bring people on
board. What is lost for want of features and abstractions, is gained in human
resource.

~~~
skohan
I have the perception that Go is more optimized for meeting _organizational
needs_ than _programmer needs_ : it's simplicity and limited abstraction make
it more difficult to write complex, serpentine code which is difficult to
understand without a deep knowledge of the codebases.

For an experienced developer that might feel a bit like handcuffs: like you
have to write more redundant code and handle things at a more literal level
than you could get away with in other languages.

However, it tends to result in a codebase that's more resilient to turnover:
if someone new joins the team there's going to be less specific understanding
about the inner workings of the codebase they need to sit down and understand
what they're looking at. It also limits the damage a mediocre developer can do
through overuse of bad abstractions.

~~~
AnimalMuppet
I agree with your last paragraph. However, I assert that the virtues you name
there are in fact more for meeting organizational needs than programmer needs.

And that's fine. As a software system gets bigger, the organizational issues
come to outweigh the programming ones.

~~~
skohan
I think we are in agreement. My assertion is exactly that Go favors
organizational needs over programmer needs, and the examples I gave are
evidence of that.

I'm not making a value judgement over whether that priority is a good or a bad
thing, just an observation about the nature of Go.

------
xxpor
Don't discount ease of distribution due to creating giant rolled up binaries.

The size of binaries isn't that big of a deal for servers any more. On the
other hand, setting up a python or whatever env can be a pain, especially
before docker really took off. Being able to push a Go binary and it Just
Works is awesome.

~~~
skohan
It amazes me that Python is used in production back-ends. It's a neat language
with a lot of nice libraries, but the environment management story feels so
janky to me. Not to mention all the money you're spending on just the overhead
of a relatively fat, slow interpreted language.

------
LordHeini
One point I would add is how easy it is to onboard people.

With minimal training every programmer can learn go very quickly and be
productive in it.

This is very important for companies because you don't hire a Java, C# or
whatever dev but someone who is a good fit for the company. And then you have
him trained in no time.

That fact alone was the easyest sell I ever made to my boss.

------
dooglius
The title is a bit confusing, actually means things they attribute Go's
success to.

~~~
zzzcpan
_> The title is a bit confusing, actually means things they attribute Go's
success to._

As opposed to what? I can't see another possible interpretation of the title.

~~~
rdiddly
It's backwards. Attributing things to Go's success vs. attributing Go's
success to things.

Things someone attributes to Go's success would be things caused by Go's
success. For example, the proliferation of stuff written in Go, the number of
people making money as Go experts, the appearance of a Go entry in Wikipedia.

Things _to which_ someone attributes Go's success (i.e. so-and-so attributes
Go's success to these things) would be things that caused Go's success - such
as the things in the article.

Headline could've been done correctly, but perhaps the problems started with
digesting something by Rob Pike and turning it into a listicle. Which then has
to have both its listicleness ("five things") and the presence of Rob Pike,
advertised in the headline. But I might be being cynical.

------
ping_pong
The reason why Go is successful is because it's a very, very opinionated
language, and for the most part its users agree with those opinions. And the
opinions that they don't agree with don't detract as much as the opinions that
they like.

By being highly opinionated and predictable, it makes it easier to digest. I
especially like the reformatting capabilities so everyone's code looks the
same. The more people program the same, the more predictably the code behaves
and the less overall problems.

------
andrenth
I think Go is a great "80%" language.

By that I mean it isn't the best in any criteria that you'd use to evaluate a
programming language: not the best type system, not the fastest, not the
safest, not the best concurrency, not the best package manager, not the
largest ecosystem, not the easiest, and so on.

However, it's very good, sometimes great, in many of these criteria. Many
languages try to be the best at one thing, while Go is good enough in many
things.

I think that's the main reason for its success.

~~~
ncmncm
That would all be true if Go actually were a success. It might be, someday.
But it is still way, way too early to say.

------
hsaliak
Unpopular opinion - the lack of generics helped. That reduced the surface of
the language a _lot_ its simplicity was a breath of fresh air.

It made Go a very effective language for "just writing some code".

------
dragonwriter
Incidentally the title (and similar line in the body) are incorrect
descriptions of the content; these are not things that Rob Pike _attributes
to_ Go’s success, but things to which Pike attributes Go’s success. The
current phrasing literally reverses cause and effect.

------
braindongle
Suggest: "Things Rob Pike Attributes Go's Success to". Dangling preposition,
but what we're actually talking about.

------
sedatk
I reckon Swift is the exact opposite of every point mentioned in the article.
Yet it has achieved tremendous success too.

~~~
yifanl
Swift has the advantage of being the Javascript of iOS.

~~~
crtlaltdel
curious, in what ways is swift the "javascript of ios"?

~~~
gnode
Probably in that it's the language with first-class support on that platform.
Adoption of the language is encouraged more by the target platform's support
for it, than by its independent merits as a programming language.

I'm not sure I'd agree though; Swift shares this position with its predecessor
Objective-C. Swift's success versus Objective-C can be attributed to its
relative merits as a programming language.

~~~
yifanl
Right, but it's much easier to be a successful language when you're only
competing with one other language as opposed the whole field of options.

------
gpvos
A sideways grammar question: shouldn't the title be "Things Rob Pike
attributes Go's success to"?

~~~
unlinked_dll
In the words of Jack O'Neil, how dare you end a sentence in a preposition?

~~~
gpvos
"Things to which Rob Pike attributes Go's success", whatevs. My point is that
the direction of attribution according to the title is the other way around
from that in the article.

------
gigatexal
For me it's the lack of objects and multiple inheritance that makes the
language so simple and thus so inviting.

------
JadeNB
Despite the fact that what's written is the title of the linked article, it
seems that these are "[5] Things Rob Pike Attributes Go's Success to" (i.e.,
the causes of the success), rather than "[5] Things Rob Pike Attributes to
Go's Success" (i.e., things caused by that success).

------
mikece
"It doesn’t matter how good the language is if nothing’s written in it."

Can't emphasize that enough!

------
tln
I think the compilation speed and goroutines/CSP enticed a lot of people, as
well. Those are or were Go's unique selling points IMO

------
shawnb576
I find this list a bit disappointing and not particularly insightful. I think
that its because a lot of success is timing and luck (in addition to something
being good), so it's like asking a startup founder why their startup was
successful and not another.

For example:

\- is errors on unused variables/imports really such a bold new stroke or that
controversial? \- is a formal spec that unusual? how many Go developers have
ever looked at the spec? \- was getting Docker that big of a deal other than
having a good dogfooder (vs it being "killer")

I agree with the open source process, kudos for them for allowing the
community to help them get things right (well, some things, Go has a bunch of
rough edges).

IMHO, its:

\- Good runtime perf \- Great built in libs \- Built in cross-compilation and
shrinkwrap binary that does not require a runtime installed on target machines
\- Good use of opinionated tooling (go fmt, go test, etc) that take a bunch of
concerns off developers plates

------
baybal2
I don't see much success to begin with.

Thought they did things in the article right.

Having formal spec, and focusing on code stability is important, and puts them
apart from 9 out of 10 of every new programming languages, but that is only
one item on the long "not suck" list.

The lack of proper package management at the start left too much of a bad
aftertaste.

I believe they must have knew that shipping go with git as a makeshift package
manager was a bad idea, but for some reason did it anyway. I think this alone
turned away half of early adopters.

Then golang went through a long epopeia of making the package ecosystem work
outside of a single company deployment, and lost a lot of developers along the
way again.

------
ncmncm
No matter how much you like Go, this true:

 _It is way, way too early for him to proclaim Go a success._

The time for that is ten years on. Imagine reading something so self-
congratulatory, today, if the creator of Ruby had written one back when Ruby
was only as old as Go is now. It would be poignant.

Go will be a success when it is complained about as much as other languages,
by people who would really rather be using something better. It is nowhere
near that point.

------
trpc
He forgot the most important factor to Go's success: ignorance is bliss.
Imagine releasing such a mediocre language only a decade ago an still be very
popular

~~~
rytill
Can you elaborate?

~~~
trpc
Criticizing Golang here in HN will get me banned for causing flamewar.
However, you can find lots of reasonable criticism on Golang just by googling.
IMO Golang is one of the worst languages I've ever seen considering it was
only started a decade ago.

~~~
badrequest
It doesn't seem like you have any genuine complaints about the language, but
are merely interested in causing flamewars.

~~~
trpc
Once I listed around 10 technical criticism points here a year ago without
insulting and I got banned. I am just not going to waste a day trying to
convince anybody with anything while most of the criticism has been stated a
million times by a million people all over the internet.

~~~
gpvos
Well, I haven't read it, nor have I seen much other criticism of Go. If you
post here, it is up to you to make your argument, not for your readers to seek
it out.

~~~
AnimalMuppet
I have seen plenty... but not all that much substance. Much of it had the form
of "How could they be so stupid to make those design choices!", as if the
author's preferred approach was The Only Right Way. I've seen criticism that
said "They _couldn 't_ have known anything about Modula 3 for them to make
that choice!", when in fact Rob Pike talked about stealing an aspect of the
object file format from Modula 3. Yeah, he knew it, and probably knew it in
more detail than the critic did.

Apart from "They should have done it the way _I_ like!", the main criticism I
have seen is lack of generics. That's a pretty common complaint, from a lot of
different people.

