A non-technical treatment on weighing adoption of Go within your company.
Go (often referred to as golang) is an open source programming language created at Google. Though young (go1 was released in 2012), Go has already proven itself to be a very powerful language and is rapidly being adopted.
Yet another language?
New languages crop up all the time with only marginal benefits. Companies have benefited from Node.js, Scala and the resurgent Python, but IMO they have no chance of being the next large scale performance language which has taken us from C to C++ to Java. Go could be.
The business case for Go
There are language choices when writing large scale high performance software - most notably, Java and C++. Their dominance after 22 and 34 years respectively, is a testament to their brilliant design, but signs of age are there. They were designed before smart phones, cloud data centers, multi-core server CPUs (that’s an important one), and of course, Google scale computing.
What makes Go special is that it is built for Concurrency,
which allows a Go programmer to effortlessly take full advantage of multi-core and
multi-cpu systems. The 1980s (C++ 1983) and 1990s (Java 1995) didn’t even have
multi-core CPUs. The idea of concurrency is so integral to Go (2012) that the directive
go applied to a function, effectively let’s the program
run that function in a separate lightweight thread.
This combined with a very forgiving learning curve, modern features and a very readable syntax makes Go the the best choice for any new large scale high performance application.
Go is easy to use by design. As Google hires more engineers, their talent pool moves closer to the average, so an approachable language was required. Similarly, your company will be able to retrain new and existing developers on Go with relative ease.
When to pass on Go
There are several reasons not to use Go, beginning with the fact that you can find Java and C++ programmers more easily.
As a language, Go leaves a few things to be desired. For example, it’s missing basic features (such as generics) that many programmers have come to expect.
Unless an objective analysis showed that achieving sufficient scale and performance is non-trivial, Go wouldn’t be my language of choice.
There are plenty of good old and new languages to consider and I caution against having a default option. When your application does call for seriously fast performance, Go should be on your shortlist.