Go 2019-2022: Becoming a Cloud team

In this article, I’ll talk about how we aligned Go with Google Cloud while preserving the core values that make Go great for everyone.

When Go joined Google’s Cloud org in 2019, I experienced the greatest culture shock of my career, as did many others on the Go team. Cloud was a newly formed product area under a newly hired leader, Thomas Kurian. TK (as he’s commonly known) worked quickly to define Cloud’s culture around a relentless focus on customer success and generating revenue through sales and customer spend on the platform. The Go team had come from the Google organization formerly known as Technical Infrastructure (TI), where our definition of success had been on growing Go adoption and making Go developers happy. We had no idea how to connect our work to Cloud’s business success. But our leadership expressed strong confidence in Go, calling us “part of Cloud’s DNA”.

Fortunately, the Go team was placed alongside other developer tools teams under Mary Smiley, who had a background in leading research teams within product organizations. Mary did an incredible job leading our teams through this change. And the Go team itself includes several people with backgrounds working in product teams at startups and in enterprises. Mary and these others helped me to understand what success in a product organization meant.

They also helped me understand the value of cross-functional teams. We were joined by fantastic user experience researchers (UXRs), Todd Kulesza and Alice Merrick, who help us understand Go and GCP developers through surveys, interviews, and user studies. We had talented developer relations engineers, developer advocates, and open source program managers like Carmen Andoh who engaged the Go community and brought their voices into our discussions. Our PMs, Steve Francia and Cameron Balahan, organized our cross-functional efforts and served as our liaisons to other teams across Google.

While our team was still responsible for growing Go overall, we now also had to connect Go’s success to Cloud’s success. We had to do this in a way that preserved what made Go great: its simplicity, reliability, and efficiency, as well as its status as a free, open source language that was easily portable to any platform. We determined that the best way to drive Cloud success was to work with GCP product teams to ensure they supported Go well. We worked simultaneously to make Go the best language for building cloud workloads while partnering to make GCP the best place to develop and run Go workloads.

We worked closely with the teams that develop the Cloud SDK, serverless runtimes, vulnerability scanning, managed Kubernetes instances, AI assistance, and more. Many of these products are themselves implemented in Go, so we engaged in two fronts: both to improve the product teams’ own use of Go as well as to enhance their offerings for Go developers. Improvements to Go’s efficiency, security, and developer productivity benefited both Cloud’s teams as well as our customers using Go. We worked with Cloud sales teams to educate them about Go and help them sell GCP to “Go shops”. And we kept talking to our users, working to identify their most pressing needs so the we could address them in Go and, when appropriate, in partnership with GCP.

We also aligned Go with opportunities presented by changes in the industry. For example, the CodeCov and SolarWinds attacks alerted the industry to the need to “secure their software supply chains” (S3C). In May 2021, the Biden administration issued an Executive Order defining new requirements on how federal systems would need to secure their software supply chains. With Go, we had the opportunity to meet certain S3C requirements—like authenticated dependencies, SBOM generation, and vulnerability scanning—directly in our core toolchain. We did this in a way that’s open and compatible with any platform, and we partnered with GCP to ensure their S3C solutions could support Go well. We also partnered with Google’s efforts to improve the security of all open source software and worked to make it simple to follow S3C best practices with Go. Check out Russ Cox’s recent ACM SCORED talk for details.

We’ve worked to balance the need to keep Go free, open, and portable with the need to support Google’s business goals through GCP. The results are strong: Go users are very happy overall, and Go users on GCP are happier than those using other languages. Go usage on GCP is high and growing well. Go and GCP are succeeding together, because Go helps GCP developers build their cloud applications quickly, scale them gracefully, and integrate them easily with cloud services.

Nothing in our approach prevents other platforms from providing great Go support, and several do. Competition makes the ecosystem better for everyone. Overall, we believe Go demonstrates a successful model for corporate sponsorship of a major open source project: Go is free and portable, and Google provides steadfast support for the Go project while also investing in Google product integrations that attract Go developers and their workloads.

Author: Sameer Ajmani

Engineering Director at Google

Leave a comment