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.
Golang Advantages
We spoke with technologists at eight tech companies about what they’ve built in Go, and why they chose it for those particular tools and services.
For Choozle Developer Ruchi Malik, the methodology behind why her team picked up Go was simple: They wanted something that was quick and easy to use. And ease of use is important when doing something as complex as, say, restructuring all of your back end or scaling the entire company.
How did you choose Go as the best language for this project?
As a team, we did a lot of research to find the best language for our business needs. Go ended up winning due to many of its awesome features. We knew we wanted a language that would be fast, simple, maintainable and easy to learn. Go checked all those boxes with its support for concurrency, built-in testing, profiling framework and easy and clear documentation. All of this made it very approachable for the entire team to commit to learning Go for our application re-build.
What is the coolest software program you’re building using Go, and how will this project impact your company?
We’re actually rebuilding our entire back end in Go. We are using it to build microservices that are specific to our business needs, like advertising, authentication and creatives. Each of these services is loosely coupled, independently deployable and manageable. Plus, Go makes it very easy to scale as a company. This is very important because, as our engineering team grows, each service can be managed by a different unit.
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 Golang?
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 Golang 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.
JumpCloud’s Software Engineering Manager Julio Santana said the company moved to Go to make work across multiple operating systems easier, specifically to support its hallmark Directory-as-a-Service® platform. Since then, Go has been used to develop a number of additional systems for the company.
How did you choose Go as the best language for this project?
We were looking for a language that would allow us to cross-compile software across operating systems, and looking to move away from JavaScript for back-end development. Golang seemed like a reasonable choice since we were also looking towards a service-oriented architecture. Now, many of our new microservices are written in Go.
What is the coolest software program you’re building using Go, and how will this project impact your company?
JumpCloud’s core offering is an authoritative cloud-based directory service, and the tools and services that support that are written in Golang. This project is critical to our customers’, and by extension, our success. Our directory service allows JumpCloud identities to securely and seamlessly connect employees of organizations to the resources they need to be able to do their jobs. Additionally, we manage workstations across Linux, Mac and Windows operating systems with an agent developed in Go.
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 Golang?
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 Golang?
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#.
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 Golang?
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 Golang 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 Golang 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 Golang?
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.
Progress Chef'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 Golang?
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 Golang 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 Golang 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 Golang?
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.
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 Golang 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.
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 Golang, 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.