哲学与心态
"LeanSpec 是一种心态,而非格式。"
除了 第一性原理 之外,有效的 LeanSpec 实践还需要采用关于Spec应如何工作的关键心智模型和信念。
AI 协作创造的心智模型
当 AI 协助编写Spec时(不仅仅是从Spec实施),三种心智模型指导Spec如何融入您的工作流:
Spec作为检查点(Spec-as-Checkpoint,主要模型)
** 它是什么:** 在开发对话的关键决策点正式化意图。
** 工作流:**
- ** 与 AI 对话 ** - 探索选项、澄清需求、迭代设计
- ** 识别检查点 ** - 当设计足够清晰可以正式化时
- ** 结晶为Spec ** - AI 起草初始Spec,人类完善
- ** 从Spec继续 ** - Spec成为实施的契约
** 何时使用:**
- 在与 AI 澄清复杂设计后
- 在开始多阶段实施之前
- 当准备提交到某种方法时
- 在向前推进之前捕获决策
** 示例:** 您与 AI 讨论 API 设计 15 分钟,澄清约束和权衡,然后在实施开始前将商定的设计正式化为Spec。
Spec作为工件(Spec-as-Artifact,正式文档)
** 它是什么:** 超越即时工作持续存在的持久性文档。
** 目的:**
- 未来修改的参考
- 新团队成员的入职
- 合规和审计跟踪
- 机构知识捕获
** 何时使用:**
- 影响多个系统的架构决策
- 需要监管文档的功能
- 其他人将扩展的复杂设计
- 需要未来参考的工作
** 示例:** 记录安全决策、PCI 合规方法和未来开发人员集成模式的支付处理Spec。
Spec作为上下文(Spec-as-Context,活文档)
** 它是什么:** 随实施一起增长的演进上下文。
** 特征:**
- 随理解增长而迭代更新
- 反映当前现实,而非仅初始计划
- 桥接持续的人机协作
- 捕获学习和完善
** 何时使用:**
- SDD 风格的迭代开发
- 需求出现的复杂功能
- 多次迭代的长期工作
- 当Spec作为活跃项目记忆时
** 示例:** 随着您发现新模式而演变的重构Spec,在做出决策时记录决策,并捕获什么有效与什么无效。
选择您的心智模型
大多数Spec经历这些阶段:
- ** 作为检查点开始 ** - 将对话正式化为Spec
- ** 作为上下文演进 ** - 随着实施教会您事情而更新
- ** 作为工件结束 ** - 归档作为参考文档
** 关键见解:** 这些不是独立的方法——它们是Spec生命周期中的阶段。简单开始(检查点),自然演进(上下文),完成为文档(工件)。
** 对于 AI 辅助编写:**
- AI 帮助起草检查点(结构化您的想法)
- AI 帮助维护上下文(随着您学习而更新)
- 人类确保工件质量(完善以提高清晰度)
LeanSpec 心态
要有效实践 LeanSpec,请采用这些核心态度:
从为什么开始
每个Spec都应该回答:"这项工作为什么存在?"
- 我们要解决什么问题?
- 为什么重要?
- 为什么是现在?
没有清晰的答案,工作可能不值得做。
拥抱"足够好"
完美主义是精简Spec的敌人。
- 快速交付"足够好"的Spec
- 从实际工作中获得反馈
- 根据您学到的内容进行完善
- 持续迭代
永远不会编写的完美Spec是无价值的。让工作推进的不完美Spec是有价值的。
质疑每个字
在编写任何内容之前,问:"这会增加清晰度吗?"
如果不会,就不要写。
- 冗长的解释 → 简短、清晰的陈述
- 详尽的边缘情况 → 仅关键场景
- 学术正式性 → 对话式清晰度
- 全面的参考 → 基本链接
把它想成活文档
Spec不是刻在石头上的契约。它们是演变的活指南。
- 随着您学习更新Spec
- 在做出决策时捕获决策
- 反映现实,而非仅计划
- 工作完成时归档
过时的Spec比根本没有Spec更糟糕。
为扫描而设计
人(和 AI 代理)在阅读之前会扫描。
构建Spec以便快速理解:
- 使用清晰的标题
- 保持部分简短
- 使用要点
- 突出显示关键信息
- 在有帮助的地方添加视觉元素(表情符号、徽章)
如果有人无法在 2 分钟内理解您的Spec,它可能太长了。
核心信念
LeanSpec 方法由四个基本信念指导:
1. 文档是手段,而非目的
目标不是创建全面的文档。目标是 ** 实现有效行动 **。
- Spec的存在是为了促进理解和决策
- 如果没有人阅读或使用Spec,它就失败了——无论它有多彻底
- 向用户交付的价值 > 文档完整性
2. 上下文胜过全面性
捕获 ** 为什么 ** 某事重要比详尽记录 ** 是什么 ** 更有价值。
- 理解问题比详细说明解决方案更重要
- "为什么"很少改变,但"如何"不断演变
- 上下文实现良好决策;详尽的细节很快就会过时
3. Spec应该减轻负担,而非制造负担
传统Spec通常成为负担(太长无法阅读,太复杂无法维护,太僵化无法适应)。
LeanSpec Spec应该:
- 花几分钟阅读
- 易于保持最新
- 随项目演进
- 邀请协作
4. AI 改变一切
在 AI 辅助开发时代,Spec有双重目的:
- ** 人类沟通 **:对齐团队理解
- ** AI 上下文 **:为 AI 编码代理提供清晰方向
AI 代理受益于人类受益的相同品质:清晰、简洁的写作,具体示例、明确边界和可测试标准。
平衡精简和完整
目标不是写得尽可能少。目标是写 ** 必要的内容 **。
某些功能很复杂,需要详细的Spec。这没关系。问题不是"我能把这个写多短?"而是"理解所必需的是什么?"
何时添加更多细节
在以下情况下添加细节:
- 复杂性要求它
- 歧义会导致问题
- 需要跨团队协调
- 技术约束至关重要
- 失败有高后果
何时削减细节
在以下情况下削减细节:
- 对您的受众来说显而易见
- 在其他地方容易发现
- 可能在工作开始前改变
- 与核心目标无关
- 是稍后的实现细节
AI 辅助的Spec编写
AI 可以帮助编写Spec,而不仅仅是从Spec实施。这创造了一个协作工作流:
** 人类提供:**
- 意图和上下文("我们为什么要这样做?")
- 约束和权衡("存在什么限制?")
- 成功标准("我们如何知道完成了?")
- 完善和编辑(执行 LeanSpec 原则)
** AI 提供:**
- 初始结构和草稿
- 将简短笔记扩展为部分
- 示例和测试用例
- 格式和组织
** 结果:** 更快的Spec创建,同时仍保持对重要内容的人类判断。AI 处理结构,人类确保清晰度和意图。
** 关键:** 第一性原理在 AI 辅助编写中 ** 更 ** 重要。没有人类审查,AI 倾向于冗长(违反信噪比 (Signal-to-Noise))和实现焦点(违反意图优于实现 (Intent Over Implementation))。您的角色是确保Spec保持精简和有目的。
成功标准
如何知道您是否有效地实践 LeanSpec?
自我检查问题
** 上下文经济 (Context Economy):**
- 有人能在 5-10 分钟内阅读这个Spec吗?
- 每个Spec文件是否少于 400 行?
- 如果不是,是否拆分为聚焦的子 Spec?
** 信噪比:**
- 每个句子都提供决策信息吗?
- 我能解释每个部分实现什么决策吗?
- 我是否削减了"好知道"与"需要知道"?
** 意图优于实现:**
- "为什么"清晰吗?
- 权衡是否解释了?
- 有人能在没有我的情况下做出良好决策吗?
** 弥合差距 (Bridge the Gap):**
- 人类和 AI 都能理解这个吗?
- 是否有清晰的结构 + 自然语言?
- 在需要时是否包含示例?
** 渐进式披露 (Progressive Disclosure):**
- 我是否只添加了我现在需要的?
- 我是在解决当前痛点,而非未来"假设"吗?
- 这能自然增长而无需重写吗?
如果满足以下条件,您的Spec是成功的:
✅ ** 它们被阅读 ** - 人们实际阅读它们(一直到底)
✅ ** 它们被使用 ** - 它们为实际开发工作提供信息
✅ ** 它们保持最新 ** - 随着项目演进而更新
✅ ** 它们实现自主 ** - 开发人员可以在没有持续澄清的情况下工作
✅ ** 它们促进 AI ** - AI 代理可以从中实施功能
✅ ** 它们经得起时间考验 ** - 即使在实施后仍然有用
如果满足以下条件,您的Spec正在失败:
❌ 人们说"太长了;没读"(TL;DR)
❌ 开发人员忽略它们并请求澄清
❌ 它们很快就过时了
❌ 它们产生的问题多于答案
❌ AI 代理误解它们
❌ 初始审查后从未被引用
底线
LeanSpec 是一种 ** 心态 **,而非格式。
专注于:
- ** 为什么 ** 优于什么
- ** 清晰度 ** 优于完整性
- ** 行动 ** 优于文档
- ** 演进 ** 优于完美
如果您的Spec帮助人(和 AI 代理)更快地构建更好的软件,您就在正确地做 LeanSpec。
** 下一步 **:在 AI 辅助的Spec编写 中探索实用的日常技术,或了解 LeanSpec 中的 何时编写Spec。