Golang: testing the waters

Gopher

Go has caught my fancy. There, I said it.

The Rubyist in me loves the static duck typing. Loves the promise of never having to navigate ‘murdered by design-patterns’ code (AbstractFactoryFactory anyone?) Loves the near C/C++ speeds (ok, I know Ruby is not the fastest language, but I can always wish, right?) Loves the ability to compile large code bases in seconds. Loves the channels and the freedom they provide in implementing good/crisp CSP.

Sure, there are a few rough edges but nothing sharp enough to stop me from proposing to build the next enterprise application in Go. I mean, if Google betting YouTube and their primary download service on it isn’t precedence enough, I don’t know what can be.

I do not want ThoughtWorks to be late to the party (again.) The time is ripe; the community is still taking shape and extremely malleable (in a good way.) So if a little/lot/hardcore evangelizing is what it takes, I am up for the challenge.

click

The Talk

The talk was never intended to be a hands on session (although it transfigured into one towards the end.) More “daze and amaze.” I think I succeeded on the first part at least.

The Amaze

I wanted to highlight the best bits of Golang from the start. No stringing along for 40 slides whilst pretending to know a lot more than I did.

The Daze

Go will probably make inroads faster into some areas vs others. Main areas of focus are:

Testing Story

The core members of Go are ensuring that people do not associate Go with not having to test their code. In fact, the best place to learn testing in Go is to browse through the implementation of Go packages (written by the creators of Go themselves.)

Deployment

Deployment couldn’t be easier. Go spits out a statically linked executable, making dependency management a thing of the past. Package up your executable into a RPM/DEB/what-not and throw it up. Couldn’t be simpler.

Conclusion

There are still nascent areas of Go which will require attention from the community to gain traction and get smoothened out. However this shouldn’t stop us from deploying Go as a API backend for a RoR powered AngularJS based single page application. Use the best bits of the various platforms to get going in the fastest manner possible. Throw the rot out as better Go based alternatives become available. :)

Resources

Listing the various resources and good to read links (in no particular order):

Submit to Reddit
Submit to Hacker News
Tweet this

comments powered by Disqus