Marcos Navarro

Web Designer & Developer

Learning Golang! And... Why?

Image from https://golang.org

The curiosity and interest for Go were chasing me for about a year but I didn't tried until now because I was (and still am) in love with JavaScript and NodeJS.

I needed a slap in the face to finally giving it a try. I realized that I can't deprive myself from new opportunities and challenges.

In pursuit of a remote position that gives me the freedom to be in different places while creating cool stuff, I noticed that I was suppressing my ever-hungry inner developer.

Why Go?

I had first hand impressions about Python and the hype about Ruby, the legacy of Java(yes, legacy... it's old and at least for me, not attractive) and I already know PHP without enjoying it anymore.

On the other hand is Go, a language that showed up as an internal project of Google that started on 2007 (more or less) and jumped to Go1 on March 2012.

People are afraid of new technologies because "maybe" they aren't ready for production, or "maybe" they will die without support... I'm on the other side.

Past technologies were created to solve problems of that time

Now we have real-time, web apps, mobile apps, cloud services, SaaS solutions and more things that can be solved in better ways with new tools available. In top of that, new technologies are also fun to develop on.

I'm not saying you should ditch all that you know and re-write everything to new technologies, you should just try...

Using new technologies that you are not familiar with, and you don't know its pros and cons, for client projects is a bad idea. You must ensure your clients quality over all, but don't forget that innovation doesn't exist on safety

Things have to fall and break to understand the way of innovation

Go...

  • is easy to pick-up if you already have programming experience
  • has decent support for multi-thread and multi-process
  • handles well concurrency and parallelism with goroutines and channels
  • compiles into a static binary but still has a runtime. No virtualenvs or bundlers
  • has a garbage collector to take care of memory
  • has anonymous functions & closures
  • has cool tools out of the box
  • is fast!

What I don't like of Go at this moment

  • Small community: not so many developers are using Go in comparison to other languages, looking for answers when you need them can take more time
  • Lack of Generics: uh oh... nope, not generics. But it isn't a stopper

I'll keep digging and posting the roadblocks and uplifts of my adventure through Golands.

Let me know what you think in the comments! What are your thoughts about it? If you haven't tried it, I recommend you this video (if you have some programming experience, otherwise it would be to much knowledge in a single video)