I’ve been batting around this idea over the past few days. Go is a great language and it has many superb features, but if I had to distill what I like so much about Go into one word, that word would be “productive.” I feel so incredibly productive writing Go code.
Start with the documentation. I love Go’s documentation. I don’t know how much of it was a conscious decision by the developers, but the “culture of documentation” that I loved in Python is very much alive in the Go community. Reading the documentation of standard library packages on godoc.org made a language I didn’t know just a few weeks ago much more understandable. I’ve been able to easily integrate third-party packages into my code because they were all well documented.
Coming from older languages, the tooling around Go feels so modern.
go get and you’ve got the package on your system, ready to use.
go fmt and you don’t have to waste cycles on getting the format just right.
go install and you’ve got a binary or a library in a few seconds. And the Github support! We developers love our Github, so why not make use of it to host code? It’s brilliant.
Then there’s the parts of the language spec itself. At first, I didn’t care for struct tags, but now I’ve seen the light. So much of programming is slinging bits around in XML or JSON — why not include that info front and center? The way pointers are automatically dereferenced when needed lets me focus on what my code is trying to solve, not the nuts and bolts of memory management.
I’m still getting my feet wet with Go but I haven’t felt this productive in a new language in a long time.