Here are some quick points I’m jotting down on what I think/feel about Go.

Things I like about Go

  • Gofmt and GoImport for code consistency / productivity
  • Functions can return multiple values
  • Go’s interface system and duck typing
  • Performance
  • “Production Ready”

Basically the language itself is pretty awesome. The tools built for development are fairly good. Google says the things built into Go are production ready so you can build/run Go code with confidence.

Things I dislike about Go

  • No “right way” of doing things

    • Everyone talks about how Go is awesome but no one talks tries to identify ways people are using Go correctly / incorrectly.
  • Having to write boilerplate code for each project

    • Go has an amazing standard library but we’re back to an argument similar to browserify v.s. webpack; do we want logs or do we want a cabin? Go gives us logs.
  • Lack of community recognized frameworks

    • Communities help distinguish good ideas and bad ones. Frameworks help drive standards. A lack of community recognized frameworks for Go means everyone is basically on their own when they want to start a new project. One Go developer can’t really jump in to help another Go developer without having to first develop complete understanding of the code base.

JavaScript experienced an explosive growth largely due to the development of frameworks and libraries. Communities grew and best practices evolved from it. This is what I feel like Go needs before people can confidently dive in. Although Go is not a web specific language, I believe someone (maybe Google themselves) should develop a web framework around Go that clearly demonstrates how one should write “proper” Go code while providing a common base for developing web applications. I’m confident the “Angular” for Go would be a huge hit.