1.0 第一部分导言:人
软件是由人构建的,而人是由文化、结构和流程组织起来的。所以在谈论代码、架构或工具之前,本部分先审视产生这一切的人的系统:一个团队所信奉的共同价值观、它如何把自己划分成若干团队、它如何培养职业发展、它如何在日常中协调工作,以及它如何做出并记住决策。本书其余的一切都建立在这些基础之上。一个由恐惧、分裂或健忘的组织构建出来的绝妙架构,是无法经受住现实考验的。
对于大型团队而言,这些基础不再是凭直觉就能掌握的东西,而变成了结构性的问题。在一个房间里的八个人之间靠耳濡目染就能传播开的做法,放到分散在全球各地的八百个人之间就会土崩瓦解。所以你必须让文化变得显性化,刻意地设计团队边界,把成长期望写成文字,把协调工作从走廊闲聊转移到持久的文档中,并把决策记录下来,让其背后的推理能够比做出决策的人活得更久。
企业和政府组织将全力感受到这些压力中的每一种。它们要在大规模、受审计和监督、长时间跨度、以及由正式员工、外包人员和供应商混合组成的条件下运作。你今天构建的系统可能要运行十年,由从未见过你的人来维护。在这些环境中,本部分所讲的这些基础不是软技能,也不是锦上添花的东西。它们是组织记忆、问责制和风险管理的运作机制。
本部分的各章节
1.1 软件工程价值观: 真正支配软件构建方式的共同信念和日常行为,以心理安全感、无责学习、明确的归属感、写作文化和可持续的节奏为核心。
1.2 团队拓扑与组织设计: 把人划分成团队的方式,如何塑造他们能够构建出的软件(康威定律:组织产生的系统会反映出其自身的沟通结构),利用流对齐团队、平台团队、赋能团队和复杂子系统团队来最小化认知负荷、减少跨团队依赖。
1.3 角色、职业阶梯与成长: 构建明确的、经过校准的职业发展框架,设置并行的个人贡献者和管理者双轨,使定级、晋升、招聘和薪酬能够在规模化条件下保持公平、一致、站得住脚。
1.4 工作方式: 团队如何在日常中协调、规划和交付,倾向于原则而非仪式,默认采用能够跨越时区和混合用工形态的异步、文档优先、以结果为导向的做法。
1.5 决策与治理: 通过铺好的路、恰如其分的评审、可逆与不可逆的思维方式,以及把技术债务当作一个组合来管理,在团队自主权与组织一致性之间取得平衡。
1.6 决策记录: 如何撰写、存储并长期维护决策记录,最常见的形式是架构决策记录(ADR),让一项选择背后的推理能够经受住人员流动的考验、满足审计要求,以及如何让决策变得可被发现、甚至可被检验。
1.7 工程标准与例外: 一个组织如何撰写、发布、强制执行并演进其工程标准,以及它如何通过一套受治理、有文档记录的例外(豁免)流程来处理偏离标准的情况,让标准在不变得僵化的同时保持可信度。
1.8 招聘、面试与入职: 通过包容性的候选人来源渠道、能减少偏见的结构化和经过校准的面试,以及一份真正的入职计划,让新工程师能够快速产出成果并获得归属感,而不是自生自灭,从而有意识地构建团队。
1.9 分布式与远程工作: 通过默认采用异步的、书面的、文档优先的协作方式,刻意设计重叠工作时间和交接安排,并依据结果而非工时或可见度来评判人,从而实现跨地点、跨时区的运作。
1.10 工程效能与开发者生产力: 使用多维框架(SPACE 和开发者体验)而非单一可被操纵的数字,来度量并提升工程师能以最佳状态工作的程度,并消除拖慢团队速度的摩擦和琐碎劳动。
1.11 工程管理: 管理工程师这门手艺本身,而不是职业阶梯本身:一对一沟通、反馈与指导的循环、授权、人性化的绩效管理,以及把自己视为团队的倍增器来衡量,而不是依据自身的产出来衡量。
1.12 多样性、公平、包容与归属感: 构建一个差异真实存在、被公平对待、被积极纳入、并让人感受到归属感的团队,因为包容性的团队能构建出更好的软件,也因为这样做本身就是对的,要辅以诚实的度量、拒绝象征性摆设。
1.13 指导、辅导与知识分享: 通过指导、辅导和担保关系、实践社区、内部分享、结对编程以及”文档即教学”,有意识地培养人才、传播专业知识,使知识能够比任何个人活得更久,让关键人物依赖风险保持在低水平。
这些章节如何相互关联
这些章节构成了一条单一的主线。价值观定义了一个组织所看重的东西。结构与角色决定了谁来做这项工作,以及他们如何成长。工作方式支配着人们如何协调。治理与决策记录保存了他们所做选择背后的推理。这些依赖关系正是按这个顺序展开的。第 1.1 章的写作文化和心理安全感,是第 1.3 章诚实校准、第 1.4 章文档优先协作,以及第 1.6 章持久决策记录的前提条件。第 1.2 章设计的团队边界,是你在第 1.4 章中扩展协调规模的主要杠杆,而第 1.4 章明确倾向于减少协调的必要性,而不是叠加更沉重的框架。第 1.5 章和第 1.6 章是刻意配对的一对:前者确立治理理念,后者把它变成一种持续的实践。
本部分的影响力贯穿全书。第 1.2 章的团队拓扑塑造了第 8.4 章的平台工程和第 9.1 章的可靠性归属。这里引入的决策记录,会在任何做出重大选择的地方反复出现,从第 3.1 章的架构基础,到第 10.3 章的自建与购买及采购决策,其适应度函数保证机制与第 8.1 章的交付流水线相连接。第 1.1 章的无责学习,支撑着第 9.3 章的事件管理,而本部分自始至终所确立的、站得住脚的、有文档记录的决策方式,正是第 10.2 章风险、审计与保证工作所依赖的东西。把这些基础打牢,本书其余部分的应用就会容易得多。