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
Publisher resources
Table of contents
- Foreword
- Preface
- I. Thesis
- 1. What Is Software Engineering?
- II. Culture
- 2. How to Work Well on Teams
-
3. Knowledge Sharing
- Challenges to Learning
- Philosophy
- Setting the Stage: Psychological Safety
- Growing Your Knowledge
- Scaling Your Questions: Ask the Community
- Scaling Your Knowledge: You Always Have Something to Teach
- Scaling Your Organization’s Knowledge
- Readability: Standardized Mentorship Through Code Review
- Conclusion
- TL;DRs
- 4. Engineering for Equity
- 5. How to Lead a Team
- 6. Leading at Scale
- 7. Measuring Engineering Productivity
- III. 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
- IV. 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
- Idioms of Continuous Delivery at Google
- Velocity Is a Team Sport: How to Break Up a Deployment into Manageable Pieces
- Evaluating Changes in Isolation: Flag-Guarding Features
- Striving for Agility: Setting Up a Release Train
- Quality and User-Focus: Ship Only What Gets Used
- Shifting Left: Making Data-Driven Decisions Earlier
- Changing Team Culture: Building Discipline into Deployment
- Conclusion
- TL;DRs
- 25. Compute as a Service
- V. Conclusion
- Afterword
- Index
Product information
- Title: Software Engineering at Google
- Author(s):
- Release date: March 2020
- Publisher(s): O'Reilly Media, Inc.
- ISBN: 9781492082798
You might also like
book
Designing Data-Intensive Applications
Data is at the center of many challenges in system design today. Difficult issues need to …
book
The Pragmatic Programmer: your journey to mastery, 20th Anniversary Edition, 2nd Edition
"One of the most significant books in my life." —Obie Fernandez, Author, The Rails Way "Twenty …
book
Designing Data-Intensive Applications, 2nd Edition
Data is at the center of many challenges in system design today. Difficult issues such as …
book
Fundamentals of Software Architecture
Salary surveys worldwide regularly place software architect in the top 10 best jobs, yet no real …