Developed by Google over a decade ago, Go is a programming language that takes the best parts of many other languages. For example, it has the runtime efficiency of C++ and the readability of Python or JavaScript. Although it’s not as ubiquitous as those other languages, it topped HackerRank’s 2020 Developer Skills Report as the language that developers most want to learn next.
Despite that developer interest, some technologists consider Go (or ‘Golang,’) a niche language without much upshot. That’s simply untrue. Even if it wasn’t drawing so much interest from developers, it’s still ranked as one of the highest-paying programming languages two years in a row. If you want to see which languages are likely to blow up big, follow the money.
We spoke with Mic Wlodkowski, Senior Front End Developer at ContextFlow, and Ben Finkel, CBT Nuggets trainer, to get a better understanding of why Go is so popular, why people are so eager to learn it… and why you should jump on that bandwagon.
What Makes This Language Unique?
Wlodkowski told Dice: “Go combines the benefits of robust system-level languages used for programming across large-scale network servers and big distributed systems with the feeling of easy readability and usability. It is a statically typed, compiled language designed for high-performance networking and multiprocessing that almost feels like a dynamic language.”
Moreover, the language compiles directly to binary code with a small memory footprint, Wlodkowski added. That makes it very suitable for modern, cold-based architectures and micro-services that must handle a good deal of traffic. “Its inherent capability for multithreading and concurrency helps to build fast and small applications with simple code and an easy learning curve,” he said. “This simplicity helps to maintain large codebases written by many developers and enables Go to be a great alternative to languages like C++ or Java.”
What Are Some of the Applications of the Language?
Go has found its way into a variety of apps, including Docker and Kubernetes, which might help explain its rising popularity. As more developer teams embrace containerization as a way to more effectively build and deploy projects, the language's prominence increases, as well.
In addition to Google, companies that utilize Go include Netflix, Twitch, Uber, and Dropbox, which means that the language is potentially a big factor if you apply for a job at any of those firms (and others that heavily leverage cloud services). “Its native concurrency and memory safe garbage collection makes it an ideal choice for widespread cloud deployments,” Finkel noted.
Both Finkel and Wlodkowski consider Go to be wide-ranging, and perfect for cloud-based services. “As a robust system-level language, Go is best suited for application backend server and infrastructure tools,” Wlodkowsi said. “The fact that it compiles to dependency-free, small sized single binaries makes it a perfect choice for CLI tools… Go’s concurrency mechanism is a great fit for multicore and networked machines and allows Go be a first choice for web-based backend services.”
Like Python and other languages, the use-cases for Go could expand along with its popularity. For the moment, though, activity seems concentrated in distributed cloud-based apps and services.
Which Programming Language is Go Most Like?
“Go's most obvious ancestor is the C programming language,” Finkel noted. “Its syntax bears a strong similarity and is based heavily on C, but it is its own unique language with its own features, and it works very differently under the hood than C does.”
Wlodkowski had similar thoughts. “For me personally, it mostly feels like a dynamic scripting language like JavaScript with the benefits of the efficiency and speed of compiled languages like C or C++. Go is a statically typed, object-oriented language using a Syntax inspired by C, designed with a focus on simplicity and efficiency. It compiles to a binary without the need of using a virtual machine like JVM. Although it is statically typed, it adopts patterns more common in dynamic languages.”
What Kinds of Jobs Can You Get as a Go Developer?
Both agree Go is useful for many disciplines, but has roots in IT. “Since Go is mainly used as a language for Web-based servers, typical tech roles would include DevOps, backend engineering or system programming including micro services and cloud engineering,” Wlodkowski said.
Finkel added: “Today, all roles in the industry are employing Go developers. It has become a widely used and popular choice across all areas of IT.”
According to Burning Glass, which collects and analyzes millions of blog postings from across the country, jobs that utilize Go could grow at an eye-popping 49.8 percent over the next decade, outpacing many other tech skills. Right now, the median salary for Go-related positions is $112,000, which is also well above average, and hints that it’s a language utilized by skilled specialists.
Here are some of the tech professions that request Go skills; as you can see, only a small percentage of jobs within these professions currently want Go experts—but that will likely change to a substantial degree by 2030:
Will Knowing Other Languages Help a Developer Learn Go?
“Go is an easy language to learn,” Wlodkowski said. “Its syntax is small compared to other languages and leaves out some features commonly used in other languages like C, C++ or Java. Go was designed with simplicity of code in mind, with a clean syntax and intentionally reduced feature scope.”
In other words, if you already know C, C++ or Java, you will probably have an easier time learning Go. JavaScript is another relevant language, in terms of patterns. Go was also built with backward compatibility in mind, which means you may have less trouble keeping up with new releases.
As Finkel points out, Go was always meant for best practices with version control and compatibility. “Go version 1 was delivered with a ‘compatibility promise,’” he said. “It’s a promise that, at a syntax level, any program written to the Go 1 specification will work for all future updates the specification receives. Developers are free to explore and implement new features as they wish but can be assured existing code will remain fully functional.”
How Long Would It Take to Become Proficient In Go?
Go requires some investment to learn. Experience with C or other statically typed languages such as Java and C# will reduce the learning curve, and Go's focus on efficient code can ease new developers, but it is still a powerful and complex programming language.
Wlodkowski said: “Go was designed with the objective of being a small and efficient language, keeping the benefits of being statically typed and compiled. Coming from an object-oriented compiled language like C++ or Java, or having experience in a lower level language like C, one could learn Go within a couple of days. For inexperienced developers, it is possible to learn Go within a couple of weeks or months.”
There’s a lot to unpack with Go. It’s scalable, and the world of technology seems to be edging toward a realm of microservices and quickly-built tooling that taps into cloud-based services and platforms. That will only make Go more and more relevant to tomorrow’s tech industry.