BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage News Google Software Engineering Culture

Google Software Engineering Culture

Leia em Português

This item in japanese

Bookmarks

Google conducted several studies to better understand the impact of managers and culture on team performance. In 2008 they released Project Oxygen findings and in 2018 they published a follow on study. To the eight best managers' behaviors discovered in 2008, they identified two new behaviors, which are collaboration across Google and strong decision-making.

In 2019, Seth Richtsmeier shared some cultural practices that contribute today to the success of Google. Among these, the company creates an environment where people's creativity and autonomy are encouraged, and where transparency and cross-functional collaboration is recommended to speed information sharing and innovation.

Fergus Henderson, staff software engineer at Google, published an article in 2017 describing Google's software-engineering practices that, according to him, greatly contribute to the success of the company and its popularity among software developers. Henderson summarized key engineering technology and practices shared widely across teams that have stood the test of time at Google.

The first key practice is the use of a code repository: most of the developers' code is stored in a single unified source code accessible to all software engineers. Write access is controlled, but engineers can access any code and make changes to be approved by code owners. When it comes to the code ownership, each subtree of the repository has a file listing the users' identities. The owners of each subtree control write access to that subtree, and the whole team is listed in the owner's file.

The build is based on a distributed system known as Blaze, used for compiling and linking software and for running tests. Blaze provides standard commands for building and testing software that work across the whole repository. These standard practices allow engineers to build and test software in the repository quickly and safely, and allow engineers to easily make changes across project boundaries. The work of each build is distributed across hundreds or even thousands of machines, making it possible to build extremely large programs quickly or to run thousands of tests in parallel.

Software engineers perform their code reviews using web-based tools developed in-house. All changes to the main source-code repository are reviewed by at least one other engineer.

Software rewrite happens every few years, consuming important resources, but it guarantees the company's ability to adapt quickly to market demand and change. Engineers rewrite code to reduce accumulated code legacy and complexity and allows them to transfer their knowledge and code ownership to newer team members. These rewrites ensure that Google's code base is written using modern technology and engineering practices.

Culturally, engineers are empowered to fix any broken code, regardless of the product boundaries, to ensure that their products meet the company's highest quality standards.

In an article also published in 2017, Edmond Lau, who worked at Google between 2006 and 2008, confirmed that Google teaches valuable engineering techniques that can set engineers for success in their career, but pointed out that most engineers are constrained to develop and coordinate for large-scale and global products. Engineers have less flexibility to iterate, prioritize, make product decisions, or even take initiatives or prioritize their time based on outcome.

Rate this Article

Adoption
Style

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Community comments

  • Blaze or Bazel?

    by Rafael Barbiero,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    Sorry but i`m confused about if there is an error with the tool`s name. Should be Bazel?

  • Re: Blaze or Bazel?

    by Raja Guntaka,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    Google internal build system is Blaze. Bazel is the open-source project derived from Blaze.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

BT