Software Engineering at Google Book
I read the Softare Engineering at Google book recently. It seems to me the book has a similar approach with The Pragmatic Programmer book.
The book has a wide range of topics, from cultural ones to technical ones. There are three main parts; culture, processes, and tools. With the help of these topics, you can imagine how a giant software engineering company like Google works, at least at a high level. You can see evolution processes for some topics, and these are also very valuable for growing companies. Although some solutions that they use are specific to Google’s culture and scale, some solutions are generally applicable, or you can adapt it easily to your scale. And they have a caution for these Google-specific things;
Google’s experience will probably not match yours. In this book, we aim to present what we’ve found that works for us in the construction and maintenance of software that we expect to last for decades, with tens of thousands of engineers, and world-spanning compute resources.
If someone says you “But Google does in this way…” in a discussion, please say the above to them.
Their definition of software engineering;
Programming is the immediate act of producing code. Software engineering is the set of policies, practices, and tools that are necessary to make that code useful for as long as it needs to be used and allowing collaboration across a team.
Culture
This part mostly about being a team and managing/leading a team. You can find similar content in other software engineering culture-related books, but you can see better the value of having a people-oriented culture at large-scale.
Processes
Testing has many chapters in this part. They express their testing approaches very well in terms of technical and cultural-perspective.
Tools
The last part is tools. It mostly about the Google-specific technical solutions, like distributed version control, code search, continuous integration and delivery, computing infrastructure management(Borg), etc. They express these tools in a feature/product perspective, so there are no implementation details.
Conclusion
Generally, I like the book, and highly recommend it to all level software engineers and software engineering managers. I like the first two parts, culture and processes, more. I think that’s because they are more applicable also for not Google-scale companies.