Actuating Google Production: How Google's Site Reliability Engineering Team Uses Go - The Go Programming Language
Google runs a small number of very large services. Those services are powered by a global infrastructure covering everything a developer needs: storage systems, load balancers, network, logging, monitoring, and much more. Nevertheless, it is not a static system-it cannot be.
Golang, with its readable and straightforward syntax, plays a vital role in enhancing the development culture. A persistent challenge faced by developers is comprehending and modifying code written by others. Golang mitigates this issue, contributing to the improvement of development culture.
It is noteworthy that open-source projects developed using Golang tend to receive more pull requests as compared to projects written in other programming languages that offer similar functionality. A prime example of this can be seen in the case of etcd and Zookeeper, where etcd gained stability and community contributions at a faster pace. On the other hand, projects developed using C++, particularly those without Bazel, face difficulties in setting up the build process and thus receive fewer contributions.
In microservices architecture, developers are often required to contribute to services developed by other teams while building a single big feature. This affects the developer's mental model, influencing their perception of the code they encounter. Easy-to-read code not only reduces the dependency on collaboration but also enhances the sense of self-efficacy, making developers feel more proactive.
It is essential to note that Golang is not the only solution to this problem. Code that is easy to read, functions as intended, and is comprehensible from its tests, is crucial in reducing the complexity of a development organization. Golang happens to align with these requirements, making it an ideal fit for reducing development complexity.
"For example, Annealing impacts a wide variety of teams and services meaning that we relied heavily on contributions across the company. The simplicity of Go made it possible for people outside our team to see why some part or another was not working for them, and often provide fixes or features themselves. This allowed us to quickly grow.”