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 five local tech startups about what they’ve built in Go, and why they chose it for those particular tools and services.
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.
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.
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.
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.
Seattle-based iTrellis specializes in custom software development, systems integration, technology program management and 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#.