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
Modern Software Engineering: Doing What Works to Build Better Software Faster
Improve Your Creativity, Effectiveness, and Ultimately, Your Code In Modern Software Engineering, continuous delivery pioneer David …
book
Software Architecture: The Hard Parts
There are no easy decisions in software architecture. Instead, there are many hard parts--difficult problems or …
audiobook
Software Architecture: The Hard Parts
There are no easy decisions in software architecture. Instead, there are many hard parts-difficult problems or …
book
Designing Data-Intensive Applications
Data is at the center of many challenges in system design today. Difficult issues need to …