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
Clean Code: A Handbook of Agile Software Craftsmanship
Even bad code can function. But if code isn’t clean, it can bring a development organization …
book
Grokking Algorithms
Grokking Algorithms is a fully illustrated, friendly guide that teaches you how to apply common algorithms …
book
Clean Architecture: A Craftsman's Guide to Software Structure and Design
Building upon the success of best-sellers The Clean Coder and Clean Code, legendary software craftsman Robert …