[4/4] Software Engineering at Google (Do it like Google. Software development) (Category Engineering)
Continuing the story of this cool book raised in posts 1 and 2 and 3The fourth and fifth parts of the book are titled Tools and Conclusions.
IV. Tools (tool) 16. Version control and branch management (Version management and branch management) In In this chapter, the authors describe how Google uses version control, or rather its mono repository, to manage vast amounts of code. The authors explain the strategy for managing branches that enable continuous integration and collaborative development. In fact, this is the TBD version. (trunk based development) 17. Code search (code-search) The chapter focuses on the tools that make navigating a huge codebase efficient. She explains how powerful search capabilities are critical to understanding and supporting large systems. 18. Build systems and build philosophy (Assembly systems and assembly philosophy) The authors talk about assembly infrastructure and practices, including incremental assemblies and automation. This section details how Google's build systems are designed for speed and scale 19. Critique: Google’s code review tool (Criticism: Google's code review tool) An interesting chapter about an internal tool used to facilitate code review. The discussion covers its strengths and weaknesses, as well as its impact on workflow and developer efficiency. 20. Static analysis (static analysis) This chapter explains how automated tools analyze source code to detect errors or deviations from standards before code launches. This proactive approach is key to maintaining code quality at scale. 21. Dependency management (dependency management) This chapter deals with dependency processing methods in a huge codebase. Provides strategies to minimize conflicts and maintain system integrity as code evolves. More information about the concept can be read on Bazel build system site 22. Large-scale changes (large-scale change) In this chapter, the authors discuss methods and tools for safely implementing large-scale changes across thousands of files. The chapter focuses on planning, automating, and minimizing risks when handling large-scale code changes. It is clear that such possibilities are largely based on the use of monorepea. 23. Continuous integration (continuous integration) This chapter details the practices and infrastructure that allow you to integrate code changes often and reliably. Continuous integration is shown as necessary for early detection of problems in the development process. If you want a simpler description, I recommend the book Grokking Continuous Delivery. ("Broke continuous delivery") The same goes for the guys at Google. I already told you. 24. Continuous delivery (continuous delivery) We are talking about conveyors and automation that ensure fast and reliable deployment of changes. This chapter highlights how streamlined delivery processes support continuous innovation while maintaining stability. The book "Grokking Continuous Delivery" is also a good one. 25. Compute as a service (computing) Describes how Google uses scalable computing resources to support development, testing and deployment. Explains how this “infrastructure as a service” underpins many of Google’s engineering practices.
V. Conclusion Software engineering is a continuous process that combines culture, well-defined processes and advanced tools. The authors reflect on the lessons learned, stressing that while not all practices will apply to every organization, the principles of adaptability and sustainability are universal.
#Engineering #Management #Software #Development #Processes #Leadership #SRE #DevOps