Table of contents 谷歌的软件工程 如何参与本书编写 前言 第一部分 论题 1. 什么是软件工程? 时间与变更 范围与效率 权衡和成本 软件工程与编程 结论 TL;DRs 第二部分 文化 2. 如何在团队中很好地工作 Help Me Hide My Code The Genius Myth Hiding Considered Harmful It's All About the Team Conclusion TL;DRs 3. 知识分享 学习面临的挑战 哲学 准备阶段:心理安全 Growing Your Knowledge Scaling Your Questions: Ask the Community 梳理你的知识: 总会找到一些可以教的东西 扩展企业的知识 可读性:通过代码审核进行标准化指导 Conclusion TL;DRs 4. 股权工程 Bias Is the Default Understanding the Need for Diversity Building Multicultural Capacity Making Diversity Actionable Reject Singular Approaches Challenge Established Processes Values Versus Outcomes Stay Curious, Push Forward Conclusion TL;DRs 5. 如何带领团队 Managers and Tech Leads(and Both) Moving from an Individual Contributor Role to a Leadership Role The Engineering Manager Antipatterns Positive Patterns The Unexpected Question Other Tips and Tricks People Are Like Plants Conclusion TL;DRs 6. 规模领先 Always Be Deciding Always Be Leaving Always Be Scaling Conclusion TL;DRs 7. 测量工程生产力 Why Should We Measure Engineering Productivity? Triage: Is It Even Worth Measuring? Selecting Meaningful Metrics with Goals and Signals Goals Signals Metrics Using Data to Validate Metrics Taking Action and Tracking Results Conclusion TL;DRs 第三部分 流程 8. 风格指南和规则 9. 代码审查 10. 文档 11. 测试 Testing overview 为什么我们需要编写测试 设计测试套件 Designing a Test Suite Google规模级别的测试 Testing at Google Scale Google的测试历史 History of Testing at Google 自动化测试的局限 总结 其他 12. 单元测试 Unit Testing 可维护的重要性 The Importance of Maintainability 防止脆性测试 Preventing Brittle Tests 编写清晰的测试 Writing Clear Tests 测试和代码共享:DAMP,而不是 DRY Tests and Code Sharing: DAMP, Not DRY 总结 其他 第四部分 工具 第五部分 结论