Software Engineering at Google: Lessons Learned from Programming Over Time
by Titus Winters ,Tom Manshreck,Hyrum Wright
Print Length 页数: 602 pages
Publisher finelybook 出版社: O’Reilly Media; 1 edition (March 17,2020)
Language 语言: English
ISBN-10: 1492082791
ISBN-13: 9781492082798
Book Description
Today,software engineers need to know not only how to program effectively but also how to develop proper engineering practices to make their codebase sustainable and healthy. This book emphasizes this difference between programming and software engineering.
How can software engineers manage a living codebase that evolves and responds to changing requirements and demands over the length of its life? Based on their experience at Google,software engineers Titus Winters and Hyrum Wright,along with technical writer Tom Manshreck,present a candid and insightful look at how some of the world’s leading practitioners construct and maintain software. This book covers Google’s unique engineering culture,processes,and tools and how these aspects contribute to the effectiveness of an engineering organization.
You’ll explore three fundamental principles that software organizations should keep in mind when designing,architecting,writing,and maintaining code:
How time affects the sustainability of software and how to make your code resilient over time
How scale affects the viability of software practices within an engineering organization
What trade-offs a typical engineer needs to make when evaluating design and development decisions
Preface
1. Thesis
1. What Is Software Engineering?
lⅡ. Culture
2. How to Work Well on Teams
3. Knowledge Sharing
4. Engineering for Equity
5. How to Lead a Team
6. Leading at Scale
7. Measuring Engineering Productivity
ll. Processes
8. Style Guides and Rules
9. Code Review
10. Documentation
11. Testing Overview
12. Unit Testing
13. Test Doubles
14. Larger Testing
15. Deprecation
Ⅳ. Tools
16. Version Control and Branch Management
17. Code Search
18. Build Systems and Build Philosophy
19. Critique: Google’s Code Review Tool
20. Static Analysis
21. Dependency Management
22. Large-Scale Changes
23. Continuous Integration
24. Continuous Delivery
25. Compute as a Service
V. Conclusion
Afterword
Index