内容推荐 今天,软件工程师不仅需要知道如何高效编程,还得知道怎样树立正确的工程实践,以便其代码库得以可持续地健康发展。本书强调了编程和软件工程之间的区别。 软件工程师该如何管理一个活跃的代码库,使其在生命周期中不断发展并响应时刻变化的需求?基于在Google的工作经验,软件工程师Titus Winters和Hyrum Wright以及技术作家Tom Manshreck,坦率而深刻地讲述了一些世界优秀的从业者如何构建和维护软件。本书介绍了Google独特的工程文化、流程和工具,这些方面如何提高工程组织的效率。 作者简介 铁达时·温特斯 Titus Winters,Google资深软件工程师,是Google C++代码库的负责人:每月有数以千计的各色工程师编辑2.5亿行代码。 目录 Foreword Preface Part Ⅰ. 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 Part Ⅱ. 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 Blameless Post-Mortem Culture 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 Code Scaling Your Organization's Knowledge Cultivating a Knowledge-Sharing Culture Establishing Canonical Sources of Information …… Part Ⅲ Processes Part Ⅳ Tools Part Ⅴ Conclusion |