副标题:从“知道如何验证正确”,到“设计一种更容易正确的工作方式”。
0. 这份手册解决什么问题
前一版方法论已经给出了一个总判断:AI 时代的开发者,核心能力正在从“亲手写出代码”,迁移到“定义正确性、设计验证信号、驾驭生成—验证回路”。但落到日常工作里,程序员面对的不是抽象理论,而是一类类具体问题:需求怎么构建?Issue 怎么定位?前端页面怎么避免只做 happy path?后端接口怎么保证事务、幂等和权限?测试怎么避免只有覆盖率、没有杀伤力?SRE 怎么让 AI 辅助排障而不制造事故?
这份手册的目标,是把“理论”落到“操作”。它不只回答“最后怎么验证才是对的”,还回答更前置的问题:
核心思想可以概括为三句话:
1
2
3
| 1. 让正确更容易发生。
2. 让错误更早暴露。
3. 让错误更容易回滚和修复。
|
AI 时代的最佳实践,不是把过去的工作直接丢给 AI,而是重新设计工作方式:把模糊任务变成清晰输入,把大任务拆成小闭环,把隐含标准变成显式约束,把最终验收变成持续反馈。
1. 总模型:从“最终验证”到“过程设计”
1.1 旧问题:它最后对不对?
传统使用 AI 的方式经常是:
1
| 输入一个需求 → AI 生成一大段代码 → 人最后 review → 发现问题再返工
|
这个流程的问题是:错误出现得太晚,范围太大,人的 review 压力极高。AI 生成越快,越容易在短时间内制造大量“看起来完整、实际没人真正想清楚”的内容。
所以,不能只在最后问“它对不对”。更好的问题是:
1
| 我能不能把任务设计成:AI 更容易做对,人更容易检查,错了更容易撤回?
|
1.2 新模型:澄清 → 建模 → 拆分 → 锚定 → 生成 → 验证 → 修正 → 沉淀
AI 时代的工作流,可以从单次生成改造成连续闭环:
| 阶段 |
核心问题 |
典型产物 |
| 澄清 |
到底要解决什么问题?什么不是本次目标? |
目标、范围、非目标、待确认问题 |
| 建模 |
这个问题由哪些对象、流程、规则、状态组成? |
领域模型、流程图、状态矩阵、权限矩阵 |
| 拆分 |
如何拆成每一步都有反馈的小任务? |
任务分解、执行顺序、最小闭环 |
| 锚定 |
每一步怎么证明是对的? |
测试、契约、验收标准、对账规则、SLO |
| 生成 |
AI 具体生成什么? |
代码、测试、配置、文档、脚本、检查清单 |
| 验证 |
它真的符合锚点吗? |
测试结果、Review 记录、指标对比、人工验收 |
| 修正 |
错在哪里,如何缩小修改范围? |
失败用例、补丁、回归测试 |
| 沉淀 |
下次如何更容易做对? |
模板、Checklist、SOP、失败案例库、ADR |
1.3 最小原则
为了让正确更容易发生,所有岗位都可以遵循六个原则:
1
2
3
4
5
6
| 1. 先澄清,再生成。
2. 先建模,再实现。
3. 先失败模式,再解决方案。
4. 先验证锚点,再让 AI 写实现。
5. 一个回合只做一个修改意图。
6. 每一步都要有可检查产物和回滚点。
|
2. 需求工程师:把模糊愿望变成可开发、可测试、可验收的需求
2.1 岗位核心变化
AI 时代,需求工程师的价值不是“写更多 PRD 文档”,而是把模糊愿望变成可以被开发、测试、AI 和业务方共同理解的结构化规格。
过去很多需求文档写的是:
1
2
3
| 用户可以方便地管理项目。
优化工作台体验。
支持智能推荐。
|
这些表达看起来像需求,但不可验证。AI 会自动脑补对象、流程、边界和验收标准,而这些脑补经常与真实业务不一致。
需求工程师的新核心能力是:
1
| 把不可验证的愿望,改写成对象、动作、规则、边界、异常和验收标准。
|
2.2 常见问题与最佳实践
| 常见问题 |
错误做法 |
最佳实践 |
验证信号 |
| 需求只有愿景,没有边界 |
写一段描述,让 AI 自由发挥 |
显式列出 in scope / out of scope / 后续再做 |
范围矩阵 + 业务方签字 |
| 验收标准含糊 |
写“体验好”“性能快” |
Given-When-Then + 样例数据 + 可观测指标 |
验收用例可被测试直接执行 |
| 隐含业务规则未声明 |
让 AI 自行推断 |
把规则写成结构化条目 |
规则清单 + 反例 |
| 优先级靠争论 |
“老板说要” |
用频率 × 价值 × 风险打分 |
优先级表 + 影响面数据 |
| 需求频繁口头变更 |
临时改需求 |
走变更流程 + 影响评估 + 重新确认 |
变更记录 + 影响分析 |
| 用户故事太泛 |
“用户可以管理项目” |
用户 + 场景 + 任务 + 异常 + 验收 |
故事评审通过 |
| 成功标准不清晰 |
“提升活跃度” |
明确业务指标 + 阈值 + 验证窗口 |
指标基线 + 看板 |
| 错误信息不设计 |
异常情况留空 |
每种错误有提示、引导、回退 |
错误路径走查 |
2.3 SOP:从愿望到可验收需求
1
2
3
4
5
6
7
8
9
10
| 收集原始信息(用户访谈、工单、数据)
→ 写问题陈述:谁、什么场景、什么痛点、为什么现在必须解决
→ 列出范围和非目标
→ 枚举主流程、异常流程、边界流程
→ 把每条写成 Given-When-Then
→ 写验收标准:可测试、可观测、可达成
→ 评估优先级与影响面
→ 与研发、测试、AI 一起评审
→ 形成基线,进入需求池
→ 变更必须走变更流程
|
2.4 AI 在这个岗位的最佳角色
- 整理访谈纪要;
- 提炼痛点和矛盾点;
- 枚举异常场景;
- 把模糊表达改写为验收标准;
- 生成 PRD 初稿;
- 充当反方挑战需求完整性。
AI 不能做的是:判断问题真实、决定优先级、判断业务价值、判断组织约束。
3. 前端工程师:让页面不是“看起来对”,而是真的状态完整、交互正确
3.1 岗位核心变化
AI 时代,前端最容易被“生成一大堆组件”淹没。组件可以生成,但状态、交互、异常、体验不能被生成决定。
前端工程师的新核心能力是:
1
| 把页面拆成状态、交互、视觉、异常和体验判断,并建立验证闭环。
|
3.2 常见问题与最佳实践
| 常见问题 |
错误做法 |
最佳实践 |
验证信号 |
| 只做 happy path |
只渲染成功态 |
枚举空态、加载、错误、超时、弱网、无权限 |
状态矩阵 + 截图 diff |
| 视觉靠肉眼 review |
让 AI 直接出页面 |
设计稿 + 截图 diff + 设计 token |
视觉回归测试 |
| 状态耦合在组件里 |
一个组件控制所有状态 |
状态外置 + 容器组件 + 展示组件 |
单测 + Storybook |
| 交互只测主路径 |
只测点击 → 列表 |
覆盖键盘、触屏、辅助技术、边界输入 |
E2E 矩阵 |
| 错误提示模板化 |
写 “请求失败” |
不同错误有针对性提示和引导 |
错误路径走查 |
| 性能事后优化 |
先写完再优化 |
设计阶段定义性能预算 |
Lighthouse 阈值 |
| 可访问性靠运气 |
不专门考虑 |
语义、对比度、键盘导航、ARIA |
axe + 人工 |
| 暗色模式残缺 |
不测暗色 |
主题 token + 全量截图 diff |
视觉回归 |
| 表单校验缺失 |
提交时统一校验 |
字段级、规则化、可恢复提示 |
单测 + E2E |
| i18n 临时补 |
写中文硬编码 |
文案外置 + key 设计 + 占位符 |
多语言截图 diff |
3.3 SOP:从页面目标到可验收页面
1
2
3
4
5
6
7
8
9
10
| 写页面状态矩阵:所有可能状态、所有可能交互
→ 定义组件契约:props、events、错误状态
→ 准备 mock 数据:成功、空、异常、超时
→ 让 AI 生成组件和样式
→ Storybook 验证每个状态
→ 单测组件逻辑
→ E2E 验证关键路径
→ 走查视觉和体验
→ 性能与可访问性测试
→ 小步提交
|
3.4 验收清单
- 页面有哪些状态?每个状态都有设计和文案吗?
- API 成功、失败、超时、空数据如何处理?
- 表单校验是否清楚、错误提示是否具体?
- 是否有 E2E 覆盖主流程和异常路径?
- 是否有截图 diff 或视觉回归?
- 是否考虑移动端、暗色模式、多语言?
- AI 生成的组件是否过度耦合?
- 用户在不看说明的情况下能完成任务吗?
4. 后端工程师:让接口不仅能跑,还能守住契约、一致性和边界
4.1 岗位核心变化
AI 时代,后端的实现成本被极大压缩。后端工程师的价值集中在“不变量、边界、契约、安全、演进”。
后端工程师的新核心能力是:
1
| 把业务规则、事务边界、幂等、安全、并发契约、外兼容变成可验证的工程约束。
|
4.2 常见问题与最佳实践
| 常见问题 |
错误做法 |
最佳实践 |
验证信号 |
| 接口契约随意变更 |
字段随意加 |
OpenAPI + 契约测试 + 版本管理 |
契约测试 + 客户端兼容测试 |
| 错误码模糊 |
都返回 200 + msg |
明确错误码 + 类别 + 文档 |
错误码文档 + 客户端映射 |
| 事务边界模糊 |
一个 Service 一锅炖 |
明确事务边界 + 跨服务用 Saga/Outbox |
事务测试 + 集成测试 |
| 没有幂等 |
重复扣款 |
幂等键 + 唯一约束 |
重复请求测试 |
| 并发写脏数据 |
不加锁 |
乐观锁 / 悲观锁 / 唯一索引 |
并发测试 |
| 权限校验散落 |
漏校验 |
集中在中间件 / 网关 / 切面 |
权限矩阵 + 越权测试 |
| 日志缺失 |
只打印异常 |
关键操作 + 业务上下文 + trace id |
日志规范 + trace 走查 |
| 数据迁移无回滚 |
直接 ALTER |
影子库 + 双写 + 切换 + 回滚预案 |
回滚演练 |
| 性能无指标 |
等线上告警 |
接口 SLO + 压测 + 容量评估 |
压测报告 + 监控 |
| 老接口不兼容 |
直接破坏 |
灰度 + 兼容性测试 + 多版本 |
兼容测试矩阵 |
| 缓存滥用 |
缓存失效不一致 |
显式缓存策略 + 一致性级别 |
一致性测试 |
4.3 SOP:从接口需求到可上线接口
1
2
3
4
5
6
7
8
| 明确接口契约:路径、方法、入参、出参、错误码
→ 写业务不变量:哪些永远不能违反的规则
→ 准备用例:正常、异常、并发、重复请求、越权
→ 让 AI 实现接口、DTO、Service、测试
→ 跑单测、集成测试、契约测试
→ 人审事务、幂等、权限、迁移和日志
→ 灰度发布 + 监控
→ 沉淀常见错误码和处置 SOP
|
4.4 验收清单
- 接口契约是否稳定、文档化?
- 错误码是否清楚、可被客户端理解?
- 事务边界在哪里?跨服务如何协调?
- 重复请求会不会产生副作用?
- 并发写会不会产生脏数据?
- 权限校验在正确层做吗?
- 有审计日志吗?能 trace 吗?
- 数据迁移能回滚吗?
- 兼容老版本客户端吗?
- 有压测或容量评估吗?
5. 测试工程师:从追覆盖率,转向设计高杀伤力验证信号
5.1 岗位核心变化
AI 时代,测试用例可以快速生成。但用例数量 ≠ 验证能力。
测试工程师的价值是:
1
| 设计能发现真实问题的验证系统,而不是堆砌低价值用例。
|
5.2 常见问题与最佳实践
| 常见问题 |
错误做法 |
最佳实践 |
验证信号 |
| 只追覆盖率 |
100% 覆盖但全是空断言 |
高杀伤力用例 + 有效断言 |
变异测试 |
| 用例维护难 |
强耦合实现 |
行为驱动 + 解耦断言 |
重构时测试稳定 |
| 缺陷难复现 |
偶发就不管 |
完整环境快照 + 复现脚本 |
缺陷知识库 |
| E2E 慢且脆弱 |
全链路一锅端 |
分层测试 + 关键路径 E2E |
测试金字塔 |
| 自动化测试不维护 |
写完不管 |
失败测试立即处理 + 定期清理 |
测试健康看板 |
| 边界条件漏掉 |
测典型输入 |
边界值 + 异常值 + 异常路径 |
边界测试矩阵 |
| 权限测试缺失 |
默认全部通过 |
越权、缺权、错权 |
权限测试 |
| 性能测试只在生产 |
出现问题再查 |
设计阶段压测 + 容量评估 |
压测报告 |
| 测试只测实现 |
内部细节决定测试 |
测行为、契约、用户场景 |
重构不破坏测试 |
| 测试数据脏 |
临时构造 |
固定种子 + 构造器 |
测试稳定可重现 |
5.3 SOP:从需求到验证系统
1
2
3
4
5
6
7
8
| 理解需求和风险
→ 让 AI 枚举场景、边界、异常
→ 人筛选高风险路径
→ 让 AI 生成测试脚本和数据
→ 人审断言质量(是否验证了真实行为)
→ 接入 CI
→ 把线上缺陷回灌为回归用例
→ 维护缺陷知识库
|
5.4 验收清单
- 这个测试能发现什么具体错误?
- 如果实现写错,测试真的会失败吗?
- 是否只在测试实现细节?
- 是否覆盖异常流和边界值?
- 是否覆盖权限、并发、重复提交?
- 测试失败时定位成本高不高?
- 是否有 flaky 风险?
- 历史 bug 是否沉淀为回归用例?
6. DevOps / SRE:让 AI 辅助变更和排障,而不是放大生产风险
6.1 岗位核心变化
AI 可以生成脚本、配置、排障建议。但生产环境的风险不可外包。
DevOps/SRE 的价值是:
1
| 让系统稳定运行,让变更可观测、可恢复、可回滚。
|
6.2 常见问题与最佳实践
| 常见问题 |
错误做法 |
最佳实践 |
验证信号 |
| 变更直接上生产 |
不做灰度 |
灰度发布 + 观察期 |
灰度指标 + 自动回滚 |
| 没有回滚预案 |
出问题再想 |
每次变更都准备回滚 |
回滚演练 |
| 监控只设不调 |
装上 Prometheus 不看 |
SLO + 告警阈值 + 噪音治理 |
告警命中率 |
| 告警雪崩 |
一个故障几百条告警 |
收敛、抑制、分级 |
告警聚合 |
| 权限过大 |
用 root 跑脚本 |
最小权限 + 角色分离 |
权限审计 |
| IaC 漂移 |
改了控制台忘了改代码 |
控制台操作进 IaC |
漂移检测 |
| 排障靠人肉 |
凭经验翻日志 |
标准化排查 + AI 辅助 + 知识库 |
排障 SOP |
| 演练缺失 |
出问题才学 |
定期故障演练 |
演练记录 |
| 容量评估缺失 |
等宕机 |
设计阶段定容量 + 压测 |
容量模型 |
| 变更窗口混乱 |
任意时间变更 |
变更窗口 + 变更审批 |
变更记录 |
| 事故复盘走形式 |
只写报告不行动 |
行动项必须落地 + 验证 |
行动项追踪 |
6.3 SOP:从变更意图到安全上线
1
2
3
4
5
6
7
8
9
| 定义变更目标和回滚条件
→ 让 AI 生成脚本或配置
→ 本地 / 测试环境 dry-run
→ 用工具验证配置(kubeval、tfsec 等)
→ 人审权限、影响范围、回滚路径
→ 灰度发布
→ 观察指标
→ 达标后扩大范围
→ 沉淀为 SOP
|
6.4 验收清单
- 这次变更影响哪些服务?
- 失败时如何回滚?回滚是否演练过?
- 有没有 dry-run?
- 是否有灰度方案?
- 监控指标看什么?告警是否会触发?
- 权限是否过大?
- AI 生成的脚本有没有危险命令?
- 是否会误删数据或资源?
7. 数据工程师:让 SQL / ETL 不只是能跑,而是口径正确、可对账、可追溯
7.1 岗位核心变化
AI 可以生成 SQL、ETL、清洗脚本。但口径和链路可信度是数据工程的核心难点。
7.2 常见问题与最佳实践
| 常见问题 |
错误做法 |
最佳实践 |
验证信号 |
| 口径不清晰 |
每个分析师一套定义 |
指标口径文档 + 业务方确认 |
口径评审通过 |
| 源表含义不明 |
字段名猜意思 |
字段字典 + 业务说明 |
字段文档 |
| 时间口径混乱 |
用本地时间算指标 |
统一时区 + 时间戳标准 |
时间一致性测试 |
| 去重规则不固定 |
临时去重 |
明确去重 key + 业务确认 |
去重验证 |
| 空值处理不当 |
默认 0 或 NULL |
显式处理 + 业务确认 |
空值分布 |
| 行数对账缺失 |
不查行数 |
上游/下游行数对账 |
对账报告 |
| 异常值无解释 |
不查直接用 |
异常检测 + 业务解释 |
异常清单 |
| 血缘不可追溯 |
表改了没人知道 |
自动血缘 + 影响分析 |
血缘图 |
| 指标口径变更无通知 |
直接改 SQL |
影响分析 + 下游确认 |
变更通知 |
| 数据延迟无感知 |
等数据齐再算 |
监控延迟 + 提前预警 |
延迟监控 |
| 抽样验证缺失 |
不知真实情况 |
定期抽样 + 人工核验 |
抽样记录 |
7.3 SOP:从业务问题到可信数据
1
2
3
4
5
6
7
8
| 定义指标口径和数据契约
→ 准备样例输入和期望输出
→ 让 AI 生成 SQL / ETL
→ 跑行数、字段、分布、历史趋势校验
→ 人审业务口径和异常解释
→ 输出血缘和文档
→ 监控指标延迟和质量
→ 口径变更走流程
|
7.4 验收清单
- 指标口径是否有业务确认?
- 源表字段含义是否清楚?
- 时间口径是什么?去重规则是什么?
- 空值如何处理?
- 是否有行数对账?是否有历史趋势对比?
- 异常值如何解释?
- 下游依赖有哪些?口径变更是否通知到位?
8. AI / LLM 应用工程师:从“调 Prompt”转向建设可评估系统
8.1 岗位核心变化
LLM 应用工程师最容易掉进的坑:调出一次看起来好的输出 ≠ 系统的有效性。
真正的能力是:
1
| 把“效果好不好”变成可重复、可比较、可改进的评估系统。
|
8.2 常见问题与最佳实践
| 常见问题 |
错误做法 |
最佳实践 |
验证信号 |
| 凭感觉调 Prompt |
试几次看运气 |
golden set + 自动 eval |
评测分数 |
| 评测集过小 |
测 3 个例子就上线 |
覆盖典型、边界、难例 |
评测集统计 |
| 评测维度单一 |
只看“像不像” |
事实、格式、风格、安全分别评估 |
多维分数 |
| 失败案例不沉淀 |
线上出错就结束 |
失败模式分类 + 回归评测 |
失败案例库 |
| RAG 检索不可控 |
直接塞上下文 |
检索命中率 + 召回评估 + 答案引用 |
检索指标 |
| Agent 行为难调试 |
黑盒 |
轨迹日志 + 工具调用成功率 |
轨迹分析 |
| 幻觉和越权不管 |
只看效果 |
红队测试 + 越权检测 |
安全评测 |
| 成本失控 |
不算 token 成本 |
成本监控 + 缓存 + 模型路由 |
成本看板 |
| 延迟不优化 |
等用户抱怨 |
监控延迟 + 限流 + 缓存 |
延迟分位数 |
| 用户反馈无闭环 |
收集了不看 |
反馈回灌评测集 |
反馈 → 评测 循环 |
| 多轮对话状态漂移 |
只测单轮 |
多轮一致性 + 上下文测试 |
多轮评测 |
| Prompt 版本混乱 |
改了不记录 |
Prompt 版本管理 + 变更评审 |
版本追踪 |
8.3 SOP:从任务到可评估系统
1
2
3
4
5
6
7
8
9
| 定义任务类型和成功标准
→ 建 golden set(典型、边界、难例)
→ 定义评价维度(事实、格式、风格、安全)
→ 让 AI 生成 Prompt / 流程 / 工具调用
→ 跑自动 eval
→ 人工抽检失败案例
→ 记录失败模式
→ 迭代 Prompt、工具、检索和工作流
→ 监控线上效果,反馈回灌
|
8.4 验收清单
- 有 golden set 吗?覆盖典型、边界、难例吗?
- 评价维度是什么?区分事实、格式、风格、安全吗?
- 失败案例是否沉淀?
- RAG 要求引用来源吗?检索命中率如何?
- 工具调用失败怎么处理?
- 多轮对话状态会不会漂移?
- 成本和延迟可接受吗?
- 有越权和敏感信息风险吗?
- 线上反馈如何回灌到评测集?
9. 安全工程师:让 AI 做审计助手,而不是制造“已经安全”的错觉
9.1 岗位核心变化
AI 可以辅助代码审计、日志分析、生成安全检查清单、解释漏洞。但安全判断不可外包——它依赖上下文、攻击者视角和系统思维。
9.2 常见问题与最佳实践
| 常见问题 |
错误做法 |
最佳实践 |
验证信号 |
| 漏洞扫描 = 安全 |
跑完扫描就结束 |
扫描 + 人工复核 + PoC |
漏洞闭环率 |
| 权限设计模糊 |
默认放行 |
显式权限模型 + 最小权限 |
权限矩阵 |
| 越权测试缺失 |
不测越权 |
横向 + 纵向越权测试 |
越权测试报告 |
| 威胁建模靠感觉 |
不画 DFD |
DFD + 攻击路径 + STRIDE |
威胁清单 |
| 日志泄露敏感信息 |
打印全量对象 |
日志脱敏 + 字段白名单 |
日志审计 |
| 默认密钥遗留 |
用默认密码上线 |
强制密钥轮换 + 配置审计 |
密钥扫描 |
| 依赖漏洞忽视 |
不更新依赖 |
SCA + SBOM + 升级策略 |
依赖扫描 |
| 越权/注入靠运气 |
不测注入 |
SQL 注入 / 命令注入 / SSRF 测试 |
渗透测试 |
| AI 生成代码不审 |
直接合入 |
安全审计 + 静态检查 |
安全审计记录 |
| 风险评级模糊 |
“高危”“低危”随便标 |
用 CVSS + 业务影响打分 |
评级标准 |
| 修复验证缺失 |
修了不验 |
复测 + 渗透验证 |
修复验证记录 |
9.3 SOP:从系统边界到安全验证
1
2
3
4
5
6
7
8
9
| 画系统边界和数据流
→ 让 AI 枚举威胁和攻击路径
→ 人筛选真实风险
→ 让 AI 辅助代码审计和日志分析
→ 用工具扫描和 PoC 验证
→ 人做风险评级和修复优先级
→ 跟踪修复 + 复测
→ 形成审计记录
→ 沉淀攻击模式库
|
9.4 验收清单
- 谁能访问什么资源?
- 有没有越权路径?
- 敏感数据在哪里存储和传输?
- 日志是否泄露敏感信息?
- 是否有审计记录?
- 第三方依赖是否有高危漏洞?
- AI 生成的代码是否引入注入风险?
- 是否有默认密钥或过大权限?
- 风险评级依据是什么?
- 修复是否经过验证?
10. 架构师 / Tech Lead:让 AI 做反方、推演和记录,而不是替你做最终决策
10.1 岗位核心变化
AI 可以生成方案、对比选型、写 ADR。但长期取舍和不可逆决策不能外包。
架构师的价值是:
1
| 在技术约束、业务节奏、团队能力和未来变化之间做负责任的取舍。
|
10.2 常见问题与最佳实践
| 常见问题 |
错误做法 |
最佳实践 |
验证信号 |
| 方案靠灵光一现 |
拍脑袋选技术 |
ADR + 评审记录 + 取舍依据 |
ADR 完整 |
| 抽象过早 |
还没需求就抽象 |
等到第三个用例再抽象 |
YAGNI 原则 |
| 抽象过晚 |
重复造轮子 |
识别重复模式后抽象 |
DRY 落地 |
| 模块边界含糊 |
包乱分 |
按业务边界 + 依赖方向 |
依赖图 |
| 关键路径不可扩展 |
设计期不思考增长 |
容量评估 + 演进路径 |
容量模型 |
| 失败会扩散 |
没考虑隔离 |
熔断、限流、降级、超时 |
故障演练 |
| 团队无法维护 |
过度设计 |
评估团队能力 + 渐进式 |
维护记录 |
| 数据方向错误 |
双向依赖 |
严格依赖方向 + 防腐层 |
依赖分析 |
| 演进路径缺失 |
一锤子买卖 |
路线图 + 迁移成本 |
演进计划 |
| 决策不可逆 |
没识别不可逆点 |
标注不可逆决策 + 沙箱验证 |
决策评审 |
10.3 SOP:从业务目标到可演进架构
1
2
3
4
5
6
7
8
| 先明确业务目标和约束
→ 让 AI 生成多种方案
→ 让 AI 扮演反方攻击每个方案
→ 人判断长期取舍
→ 做最小 PoC 验证关键假设
→ 写 ADR
→ 小步演进,而不是一次性大重构
→ 定期回顾架构假设
|
10.4 验收清单
- 这个设计解决的核心问题是什么?
- 有没有更简单的方案?
- 哪些决策不可逆?
- 未来最可能变化的地方在哪里?
- 模块边界是否对应业务边界?
- 数据流是否清楚?失败会不会扩散?
- 团队是否有能力维护?
- 迁移路径是什么?
- 三个月后和三年后看,这个设计是否仍然合理?
11. 通用场景 SOP:所有岗位都会遇到的高频问题
11.1 接到模糊需求
1
2
3
4
5
6
7
| 需求:用户希望系统更智能。
→ 把“更智能”翻译成具体场景
→ 列出至少 3 个用户故事
→ 给出每条的可验证标准
→ 划定范围和非目标
→ 让 AI 输出多种实现思路
→ 评审后选定
|
11.2 修一个 bug
1
2
3
4
5
6
7
| 现象:用户反馈 X 失败。
→ 完整复现:环境、输入、步骤、期望、实际
→ 定位根因:二分、trace、日志、断点
→ 写一个能稳定复现的失败测试
→ 修实现
→ 跑测试 + 回归
→ 沉淀到缺陷库
|
11.3 重构一段代码
1
2
3
4
5
6
7
| 目标:让代码更清晰 / 更快 / 更易测。
→ 先写刻画测试,把当前行为钉住
→ 列出重构意图和验收标准
→ 小步重构(一次只改一个意图)
→ 每步都跑测试
→ 行为不变 = 重构成功
→ 沉淀重构模式
|
11.4 加一个功能
1
2
3
4
5
6
7
| 目标:让用户能 X。
→ 列场景:主流程、异常、边界
→ 定义接口契约或组件契约
→ 写测试 / 契约 / 验收标准
→ 让 AI 实现
→ 人审关键路径
→ 小步提交
|
11.5 改一个数据库 schema
1
2
3
4
5
6
| → 评估影响:哪些表、哪些查询、哪些缓存
→ 写迁移脚本 + 回滚脚本
→ 影子库或测试环境演练
→ 双写或灰度切换
→ 验证数据和查询正确性
→ 清理旧字段
|
11.6 处理线上告警
1
2
3
4
5
6
| → 看告警上下文(指标、日志、trace)
→ 二分定位:上游 / 下游 / 自身
→ 评估影响面和紧急度
→ 缓解优先(限流、回滚、降级)
→ 修复 + 复盘
→ 行动项落地
|
11.7 设计评审
1
2
3
4
5
6
| → 让作者先讲“解决什么问题、为什么这样做”
→ 列出备选方案和取舍依据
→ 反方逐条质疑
→ 明确不可逆决策
→ 写 ADR
→ 跟踪行动项
|
11.8 引入新依赖
1
2
3
4
5
6
| → 评估必要性:能不能用现有依赖?
→ 看维护活跃度、许可证、社区
→ 看安全漏洞历史
→ 小范围试点
→ 写使用规范
→ 团队培训
|
11.9 跨团队协作
1
2
3
4
5
| → 明确接口契约
→ 写协作 SOP
→ 约定变更流程
→ 共享监控和告警
→ 定期对齐
|
11.10 性能问题
1
2
3
4
5
| → 用 profiler 找热点
→ 区分 CPU / IO / 锁 / GC
→ 小步优化 + 每步验证
→ 不优化无测量的部分
→ 写压测保证不退化
|
12. 岗位最佳实践总表
| 岗位 |
核心原则 |
必须建立的产物 |
关键 AI 用法 |
| 需求工程师 |
模糊愿望 → 结构化规格 |
验收用例库、口径文档、变更记录 |
整理访谈、反方质疑、改写验收 |
| 前端工程师 |
状态完整 + 体验可验 |
状态矩阵、Storybook、E2E |
生成组件、生成测试 |
| 后端工程师 |
守住契约、边界、一致性 |
OpenAPI、契约测试、幂等 key、迁移脚本 |
CRUD 实现、生成测试 |
| 测试工程师 |
高杀伤力验证信号 |
缺陷库、变异测试、回归用例 |
生成用例、辅助复现 |
| DevOps/SRE |
可观测、可恢复、可回滚 |
SLO、回滚 SOP、变更记录、演练 |
排障辅助、生成配置 |
| 数据工程师 |
口径一致、链路可信 |
口径文档、血缘、对账、异常清单 |
SQL 生成、ETL 编写 |
| AI/LLM 应用工程师 |
效果可评估、失败可观察 |
golden set、eval 体系、失败案例库 |
Prompt 探索、自动化评测 |
| 安全工程师 |
攻击面可控、权限边界正确 |
威胁模型、权限矩阵、审计记录 |
审计辅助、日志分析 |
| 架构师/Tech Lead |
长期取舍、不可逆决策可控 |
ADR、PoC、容量模型、演进路线 |
方案对比、反方推演 |
13. 最终结论:最佳实践的本质是降低正确性的获得成本
回到手册最开始的三句话:
1
2
3
| 1. 让正确更容易发生。
2. 让错误更早暴露。
3. 让错误更容易回滚和修复。
|
AI 时代的所有“最佳实践”,本质都是一件事:
这不是工具升级,而是工作方式升级。
它的核心动作是:
- 把模糊愿望拆成显式约束;
- 把大任务拆成小闭环;
- 把“最后 review”前移到“每一步都有验证锚点”;
- 把隐含假设变成显式记录;
- 把个人判断变成团队可继承的 SOP、ADR、缺陷库。
写代码变快是表面的,让人更容易做对、更容易发现错、更容易撤回错——才是真正的能力。
未来最重要的程序员,不是最会让 AI 写代码的人,而是最会回答这三个问题的人:
1
2
3
| 什么是对?
怎么证明对?
错了如何不炸?
|
这三句话,也是这份手册的全部。
📚 系列导航
这是「AI 时代程序员方法论」专题的第三篇 — 岗位最佳实践手册(怎么做)。建议按顺序阅读:
- ➡️ 思考手册:核心是驾驭生成—验证回路,理解“为什么要这么干”(先读这篇建立心智)。
- ➡️ 9 岗位完整版:把方法论展开到 9 个岗位,回答每个岗位的核心正确性、验证信号、AI 委托边界、新护城河。
- ✅ 岗位最佳实践手册(本文):把方法论落到操作——9 个岗位的常见问题、错误做法、最佳实践、通用场景 SOP,让“正确更容易发生、错误更早暴露、更容易回滚”。