Intro
Foreword
Preface
Programming Over Time
Google's Perspective
What This Book Isn't
Parting Remarks
Conventions Used in This Book
O'Reilly Online Learning
How to Contact Us
Acknowledgments
I. Thesis
1. What Is Software Engineering?
Time and Change
Hyrum's Law
Example: Hash Ordering
Why Not Just Aim for "Nothing Changes"?
Scale and Efficiency
Policies That Don't Scale
Policies That Scale Well
Example: Compiler Upgrade
Shifting Left
Trade-offs and Costs
Example: Markers
Inputs to Decision Making Example: Distributed Builds
Example: Deciding Between Time and Scale
Revisiting Decisions, Making Mistakes
Software Engineering Versus Programming
Conclusion
TL
DRs
II. Culture
2. How to Work Well on Teams
Help Me Hide My Code
The Genius Myth
Hiding Considered Harmful
Early Detection
The Bus Factor
Pace of Progress
In Short, Don't Hide
It's All About the Team
The Three Pillars of Social Interaction
Why Do These Pillars Matter?
Humility, Respect, and Trust in Practice
Lose the ego
Learn to give and take criticism Fail fast and iterate
Blameless Post-Mortem Culture
Learn patience
Be open to influence
Being Googley
Conclusion
TL
DRs
3. Knowledge Sharing
Challenges to Learning
Philosophy
Setting the Stage: Psychological Safety
Mentorship
Psychological Safety in Large Groups
Growing Your Knowledge
Ask Questions
Understand Context
Scaling Your Questions: Ask the Community
Group Chats
Mailing Lists
YAQS: Question-and-Answer Platform
Scaling Your Knowledge: You Always Have Something to Teach
Office Hours
Tech Talks and Classes
Documentation Updating documentation
Creating documentation
Promoting documentation
Code
Scaling Your Organization's Knowledge
Cultivating a Knowledge-Sharing Culture
Respect
Incentives and recognition
Establishing Canonical Sources of Information
Developer guides
go/ links
Codelabs
Static analysis
Staying in the Loop
Newsletters
Communities
Readability: Standardized Mentorship Through Code Review
What Is the Readability Process?
Why Have This Process?
Conclusion
TL
DRs
4. Engineering for Equity
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. How to Lead a Team
Managers and Tech Leads (and Both)
The Engineering Manager
The Tech Lead
The Tech Lead Manager
Moving from an Individual Contributor Role to a Leadership Role
The Only Thing to Fear Is ... Well, Everything
Servant Leadership
The Engineering Manager
Manager Is a Four-Letter Word
Antipatterns
Positive Patterns
The Unexpected Question
Other Tips and Tricks
People Are Like Plants
Conclusion
TL;DRs
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
25. Compute as a Service
V. Conclusion
Index
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.3