6 tech companies discuss the advantages of using Golang

June 17, 2019
Updated: June 21, 2019
Written by Built In Staff

Since it first appeared at Google in 2009, thousands of developers (and entire businesses) have adopted the open-source coding language Go for key software-based products and services. Designed to mimic core features of C, Go’s authors sought to maximize brevity and simplicity. Today, the language’s clarity and lack of ambiguity around its syntax makes it a favorite with developers.

We spoke with technologists at six tech companies about what they’ve built in Go, and why they chose it for those particular tools and services.

 

golang advantages upbound
Upbound

Upbound

Upbound is working on a Kubernetes-native platform for managing software across multiple cloud services. The idea is to allow businesses to treat multiple public and private clouds as one, thereby paving the way for large-scale automation of services and reducing the risk of being locked in to a single cloud provider. 

Software Engineer Nic Cope said the Upbound team exclusively uses Go for its back end, and has built multiple critical features of its software products in the language.

What tools and services do you write in Go?

At Upbound we’re leading the open cloud movement by making it easy to run your services across multiple public and private clouds. We’re currently focused on two open source Go projects to this end: Crossplane and Rook.

Crossplane is a control plane that empowers developers to manage both Kubernetes workloads and their cloud dependencies — like SQL databases and storage buckets — through a single API, regardless of the underlying cloud.

Rook deploys and operates distributed storage systems like Ceph or CockroachDB atop Kubernetes.

Go eschews features, cleverness and flexibility in favor of ruthless pragmatism and simplicity.”

 

What criteria do you use when determining if you’ll use Go for a particular tool/service?

Go is the default and only back end language at Upbound. We work within the Cloud Native ecosystem, which is largely built with Go. Defaulting to Go allows us to leverage best-in-class libraries, and reduces the burden of context switching between our own projects and those we interface with, such as Kubernetes.

What advantages does Go have over similar coding languages?

Many programming languages sprout and grow organically, or begin as academic pursuits. Go was explicitly engineered to make life easier for “the working programmer” — particularly systems and infrastructure programmers — by folks many consider luminaries within computer science.

Go eschews features, cleverness and flexibility in favor of ruthless pragmatism and simplicity. Enforced coding style, strong typing, garbage collection, simple concurrency primitives, native binaries and fast compile times make Go an excellent choice when you’re concerned about ensuring that a codebase remains maintainable at scale.

What are your favorite challenges about coding in Go?

I’m a sucker for elegant software design patterns. I love writing code that is self-documenting, idiomatic and maintainable. As a relatively young language, such patterns are emergent in Go, and more than once I’ve found myself spending too much time tweaking an API to feel “just right” when I should probably be focusing on the business logic.

 

golang advantages chef software
Chef Software

Chef Software

Chef Software’s central product is called Chef Automate, essentially an integration of a number of commercial and open-source offerings for automating infrastructure, applications and compliance policies. The software is designed to allow developers, operations and security engineers to collaborate on delivering changes to apps and infrastructure at high speed.

Senior Software Development Engineer Stephan Renatus admires Go’s ability to support static typing without increasing time spent on development.

What tools and services do you write in Go?

Most of the services making up Chef Automate are written in Go. It’s a dozen or so microservices dealing with service deployment and upgrading, API authentication and authorization — but also domain-specific services working with different datastores. Internally, all services communicate using gRPC, and we make some use of code generation for service configurations and service mocks, among other things.

What criteria do you use when determining if you’ll use Go for a particular tool/service?

Go has become our first choice — we rarely use other languages for new services. We previously used Erlang/OTP, a platform with decades of wisdom and best practices around distributed systems embedded in its design. We try to apply that knowledge to our use of Go.

There’s been huge momentum behind Go in recent years, leading to a wealth of open-source libraries and, most importantly, SDKs for popular cloud providers.”

What advantages does Go have over other similar coding languages?

That’s simple: static typing that doesn’t slow down development. Also, there’s been huge momentum behind Go in recent years, leading to a wealth of open-source libraries and, most importantly, SDKs for popular cloud providers. In the wake of this, editor support has become outstanding.

The built-in testing and benchmarking facilities also serve us very well. Last, but not least, we appreciate the straightforward build process.

What are your favorite challenges about coding in Go?

Using Go mostly forces you to come up with concrete, no-frills, straightforward code. That often means you end up writing more of it than you would have to in other languages. On the other hand, having code that resembles English prose has an advantage in that you rarely have to spend much time figuring out what’s going on.

Another daily challenge is the blessing-and-curse of easy concurrency. Oftentimes, you forget that things actually could happen concurrently! At other times, an overly liberal use of channels can cause unexpected behavior.

 

golang built in
Built In

Built In

Built In's vision is to connect the world through a shared passion for tech and the human need for purpose. They are reinventing how talented people find their professional purpose and communities connect through shared passions.

Chief Technology Officer Peter Evans said Go is a great programming language for all ranges of experience.

It allows new programmers to pick up the language quickly, and it allows experienced programmers to quickly understand someone else's code.

 

What tools and services do you write in Go?

We tend to write backend-focused tools. All of our API services are written in Go, and we have a number of commands which are also written in Go that we run as one-offs or on regular schedules.

 

What criteria do you use?

For us, Go is our general-purpose backend language. Sometimes, there's a specific need for another language--the tooling for data engineering in Python is excellent, and we use a lot of Python for that. If not, the available libraries in Go are often excellent for the needs we have, and the tooling that you get with Go is really hard to beat.

 

What are your favorite challenges?

I think because Go doesn't have classes, it really forces you to think about your program design in a different (and I would say better) way. We've known for a long time that object composition is a better pattern than class inheritance, and Go forces you to use object composition--classical inheritance just isn't an option.

Another interesting challenge is making explicit use of Go's concurrency features. I often think to myself that we should try to solve a problem synchronously, and then look to see how we can layer in concurrency later on, because you can make things a lot more complex if you misuse concurrency. But it's such a powerful feature of the language, and there are opportunities for performance and efficiency in many places with it. 

 

What advantages does Go have?

Go is a really simple language to understand. It allows new programmers to pick up the language quickly, and it allows experienced programmers to quickly understand someone else's code. And Go's fast: if you're coming from an interpreted language like PHP, Python, or Ruby, it's almost night-and-day.

The tooling provided by Go is amazing: a great testing framework built into the language itself, that can also generate code coverage reports; a great linter, and lots of other compelling tools to perform static analysis. And Go's built-in source formatting tool (gofmt) was, and is, a game-changer: the only times our team comments on formatting issues in our pull requests is because someone's editor integration with gofmt broke.

A good comparison for Go is with Java. Ten years ago, if you had a project you thought you'd obviously need to use Java to build, I feel that these days you would be better off with Go. It's a great language to use on the backend.

 

golang advantages suplari
Suplari

Suplari

By deploying artificial intelligence to scan enterprise applications for millions of data points, Suplari helps businesses find inefficiencies in how they purchase and manage software contracts, orders, invoices, corporate cards and more. The company integrates, normalizes and categorizes otherwise siloed data sources to build a unified supplier data model, with a range of functions to provide analytics and updates in real time.

Senior Software Engineer Mark Waddle said he likes the simplicity of Go, which makes debugging easier than with other languages.

What criteria do you use when determining if you’ll use Go for a particular tool/service?

If you’re looking to build a back end service that isn’t data-science heavy, use Golang. Otherwise, use Python.

The simplicity of the language makes for easier code review and debugging.”

What advantages does it have over other similar coding languages?

The simplicity of the language makes for easier code review and debugging, while the philosophy of leanness in libraries also eases debugging. Meanwhile, the inclusion of all dependencies in the compiled binary makes for simple deployments.

What are your favorite challenges about coding in Go?

Mostly the fact that it requires you to be more explicit — for loops, for example. It does require a few more lines of code, but it promotes transparency and makes debugging easier.

 

golang advantages itrellis
iTrellis

iTrellis

Seattle-based iTrellis specializes in custom software development, systems integration, technology program management andHeading 2 business intelligence for businesses of all sizes. The company builds industry-specific full stack solutions for clients all over the world.

Lead Software Developer Loren Anderson said Go is an easy language for developers to learn relatively quickly.

What tools and services do you write in Go?

Golang is very useful for writing light-weight microservices. We currently use it for generating APIs that interact with our front-end applications. If you want to build a small functional microservice quickly, then Golang is a great tool to use.

It’s an easy language for developers to learn quickly.”

What are some advantages and challenges associated with coding in Go?

The advantages of using Go over other similar coding languages is that it’s an easy language for developers to learn quickly, and it has several built-in features to assist in asynchronous development.

One of the more notable challenges about coding in Go is that it lacks some of the features that I find useful in programming languages such as C#. The biggest missing feature would be the LINQ functions when working with collections of data in C#.

 

golang advantages drift
Drift

Drift

Drift uses complex software to essentially cut billing companies, credit brokers, banks, scheduling companies and other middlemen out of the power supply chain, and connect consumers directly with renewable energy providers instead. The company’s artificial intelligence determines how much energy any given consumer will need, and works with a growing network of wind, solar, hydroelectric and energy storage companies to match those demands.

Principal Software Engineer Mark Markaryan said Go makes it easy for his team to write high-performing code.

Go made it easy for us to write maintainable, testable, lightweight and performant code.”

 

What tools/services do you write in Go, and why?

We used Go to write the service behind our website and some of its surrounding tools. Go made it easy for us to write maintainable, testable, lightweight and performant code, thanks to Go’s (relative) simplicity, strong and static typing, rich ecosystem and robust tooling. Our data scientists and finance folks speak Python, so that’s the language we are using for our data models and some of our internal tools. Our web services are written in Elixir, which helps us stand up prototypes and production-quality services quickly, with little long-term code maintenance overhead.

 

RelatedSoftware Engineering Perspectives

Great Companies Need Great People. That's Where We Come In.

Recruit With Us