资深架构师最后一块拼图:不再只是「自己厉害」,而是让「团队持续变厉害」。本章讲透技术评审、技术债管理、契约与协作、知识沉淀,以及架构师必需的软技能——影响力、沟通与向上管理。学完本章,你就拥有了把前九章所有能力「放大到团队」的机制。
这是最容易被误解的一步:架构师不是写代码更多的那个人。
| 维度 | 高级工程师 | 架构师 |
|---|---|---|
| 产出 | 自己交付高质量代码 | 让别人高质量交付(杠杆) |
| 范围 | 模块 / 功能 | 系统 / 跨团队 / 长期 |
| 时间视野 | 当下迭代 | 未来 6~18 个月 |
| 决策依据 | 技术可行性 | 技术 + 组织 + 商业成本 |
| 影响力方式 | 代码说话 | 文档、评审、辅导、机制 |
| 风险视角 | 代码 bug | 架构腐化、人才瓶颈、交付风险 |
Code Review 查的是「这段代码对不对」,设计评审查的是「这条路该不该走」。
| 类型 | 触发条件 | 形式 |
|---|---|---|
| 重大架构决策 | 新框架 / 新存储 / 新架构模式 / 跨团队方案 | 正式评审会 + ADR |
| 中等设计 | 新模块设计、复杂功能方案、接口设计 | 文档 + 异步评审(评论区) |
| 日常变更 | 普通功能、修 bug、小重构 | Code Review 就够了,不评审 |
# 设计评审:商家中心权限系统重构
## 1. 背景与目标(为什么现在做)
现有权限散落在各页面 if 判断里,新增角色要改十几处;本季度要
接入集团统一 SSO,借此机会收敛权限模型。
目标:新增一个角色类型时,改动点 <= 2 个文件。
## 2. 方案概述(高层)
统一 RBAC 模型(角色→权限点),前端按「权限点」而非「角色名」判断;
权限点列表由后端接口下发,前端缓存 5 分钟。
## 3. 关键设计决策(附备选与理由)
- 前端存「权限点集合」而非「角色名」:角色是后端概念,直接判断角色
会在前端复制后端逻辑(ADR-0021)
- 权限检查用 HOC 还是 Hook?→ 用自定义 Hook,避免包装层带来的调试困难
- 失败降级:接口失败时默认「全部拒绝」+ 错误提示,避免误放行(安全优先)
## 4. 影响面与兼容性
- 涉及页面:商家中心全部 23 个页面
- 存量判断需迁移清单:附录 A(逐页列出)
- 灰度策略:按商家 ID 灰度 10% → 50% → 100%
## 5. 风险与对策
- 接口下发权限点延迟 → 首屏加 loading 态,超时走缓存
- 角色名判断散落各处遗漏 → 上线前用 grep 全仓扫描残余判断
## 6. 验证方案
- 单元测试:权限判断纯函数全分支覆盖
- E2E:低权限账号访问高权限页面,断言跳转与提示
技术债不可怕,可怕的是「欠了不记账、从不还」。
为了「短期快」而牺牲「长期质量」的决定,就是欠债。负债本身不是问题——创业期用技术债换上线速度是合理的;问题是:无意识负债(不知道欠了)、不付利息(每次改动都更慢)、从不还本(债越滚越大直到系统烂尾)。
| 债的类型 | 例子 | 利息表现 |
|---|---|---|
| 代码债 | 复制粘贴的相似逻辑 | 改一处漏三处,bug 频发 |
| 设计债 | 组件绕过分层直接 fetch | 新需求无处安放,硬塞 |
| 测试债 | 核心逻辑零测试 | 每次重构心惊胆战 |
| 文档债 | 关键模块无任何文档 | 新同学上手 3 个月 |
| 依赖债 | 依赖长期不升级,EOL 版本 | 安全漏洞、无法升级其他库 |
| 基建债 | 构建 10 分钟、测试 20 分钟 | 交付节奏被拖死 |
利息 = 每周因它多花的分钟数,本金 = 一次性修复成本。利息高本金低的先还。# docs/tech-debt.md 示例
| 编号 | 现象 | 利息(每周) | 本金(修复) | 发现 | 负责人 | 状态 |
|------|------|-----------|-----------|------|--------|------|
| TD-12 | 订单页复用 3 份相似表格逻辑 | 2 小时(改表头要改 3 处) | 4 小时 | 2026-08 | 小李 | 待还 |
| TD-15 | lodash 版本过旧(CVE-2024-xxxx) | 0(但安全风险高) | 30 分钟 | 2026-08 | 小李 | 本周还 |
规范只有变成工具和流水线,才会被执行。
| 形态 | 例子 | 强制力 | 适用 |
|---|---|---|---|
| 工具强制 | ESLint error、TypeScript strict、CI 构建门禁 | 100%(拦在合并前) | 可机器判断的规则 |
| 评审把关 | Code Review 清单、架构红线 | 80%(靠人,可能漏) | 需要判断力的规则 |
| 文档约定 | 命名规范、git 提交规范 | 40%(靠自觉) | 难以自动化的软约定 |
系统越做越大,最大的风险从「代码」变成「团队之间的接口」。
// 实践:前端 mock 与真实请求同构 —— 契约变了 mock 会先失败 // 用 MSW 或 json-server 维护一份与 OpenAPI 同步的 mock 数据 // 契约变更 → 生成脚本重新生成 types → mock 同步更新 → 前后端 MR 一起合 import { paths } from '@company/api-spec' // 由 OpenAPI 自动生成的类型 type GetUserResp = paths['/api/user']['get']['responses']['200']
文档不是写给未来的,是写给 3 个月后的自己的。
| 文档类型 | 内容 | 维护时机 |
|---|---|---|
| 项目 README | 怎么跑、怎么测、目录结构、常用命令 | 新成员入职时更新 |
| 架构文档(一张图 + 文字) | 系统分层、依赖方向、关键流程、部署架构 | 架构变化时 |
| ADR | 技术决策及理由(上一章模板) | 每次架构决策时 |
| 运行手册(Runbook) | 线上问题怎么排查:日志在哪、告警怎么处理、应急开关 | 每次线上事故后补 |
| FAQ / 常见坑 | 「开发时最常踩的坑」 | 有人来问第二次时写 |
技术方案写得再对,推动不了落地 = 零。架构师一半的功夫在「人」上。
把本手册十个阶段串成一条完整的成长地图。
| 阶段 | 能力主题 | 你掌握的标志性能力 |
|---|---|---|
| 01 HTML/CSS | 视觉与布局 | 任何界面还原无障碍,Flex/Grid/BFC 信手拈来 |
| 02 JavaScript | 语言核心 | 闭包/原型/异步/事件循环全部讲清并手写实现 |
| 03 浏览器与网络 | 运行环境 | 输入 URL 到渲染全流程、缓存/CORS/安全全掌握 |
| 04 工程化 | 工具链 | 从源码到上线全链路,能搭完整工程 |
| 05 框架核心 | 框架原理 | React 渲染/diff/Hooks 原理,能解释为什么慢 |
| 06 状态管理 | 数据流 | 状态分类学决策树,选型有依据 |
| 07 性能优化 | 性能 | 能定位并优化线上性能问题,用数据验证 |
| 08 测试质量 | 质量保障 | 测试金字塔落地,重构有护航 |
| 09 架构设计 | 系统设计 | SOLID/分层/模式/选型,决策有 ADR |
| 10 治理协作 | 团队放大 | 评审/债务/契约/辅导,团队持续变强 |
治理不是「管」,是「让团队跑得更快还不翻车」。
这一章的实战不是写代码,是「在真实环境里推动一次改进」。
答完这 12 题,你就有资格自称「架构师视角」了。
工程师和架构师的衡量标准有什么本质区别?「你的产出是团队的产出」这句话怎么理解?
架构师的四种错误定位(图纸管理员/超级工程师/独裁者/老好人)你最容易犯哪一种?怎么改?
什么决策需要设计评审?判断标准「改动成本 > 评审成本」如何应用?事事评审的坏处是什么?
设计评审文档应包含哪些章节?评审会的四条纪律是什么?
技术债的「利息」和「本金」怎么算?为什么说「先这样吧」是最贵的四个字?
规范的三种形态(工具/评审/文档)的强制力排序?「能自动化一律自动化」怎么落地?
前后端契约管理的三个关键动作是什么?为什么「契约变更悄悄发生」是线上事故之源?
公共包治理的核心问题是什么?「隐式耦合」是怎么发生的、如何避免?
防文档腐烂的三招是什么?为什么「过期文档比没有文档更危险」?
说服别人的四步法是什么?为什么「先试点拿数据」比「论证」有效十倍?
向上管理的四个要点是什么?「管理期望」为什么重要?
回顾全手册十个阶段:你现在处于哪个阶段?未来 3 个月的计划是什么?(这一题没有标准答案,但必须写下来)