工作应该活过对话
聊天制造动量,产物创造连续性。真正完成的工作,不该只能在聊天记录里被理解。
对话是一种很好的启动方式。需求还没有完全清楚时,我们可以先指向一个方向,再通过纠正、补充和反问逐渐靠近结果。它允许工作在不确定中向前移动。
但对话并不擅长保存工作。
第十五次修正可能仍然存在于聊天记录里,可它为什么发生,已经被埋在前十四个版本之间。一个自信的总结可能掩盖了仍未解决的不确定性;一个看似完成的任务,也可能没有给下一个接手的人留下任何稳定的抓手。
创造工作的界面,不应该成为唯一能够理解这份工作的地方。
动量不等于连续性
许多现代工具都在优化动量:让光标继续移动,让回答更快出现,让分支持续变化。这种效率很容易被感知,因为延迟是眼前的,而连续性通常要到几周之后才会暴露——当另一个人试图继续这项工作,却不得不重新拼凑全部上下文。
连续性需要另一类输出:说明成功意味着什么的契约,记录取舍的决策,固化边界的测试,证明实际发生了什么的凭据,以及诚实标注剩余不确定性的下一步。
这些并不是工作完成后的行政残留。它们本身就是产品的一部分。一个系统如果只产出代码,却无法保留代码为什么形成现在的样子,就只完成了一半。
留下抓手,而不是留下全部历史
答案并不是保存一切。完整历史往往是另一种不透明。一万条消息在技术上可以持久保存,在实际中却几乎无法使用。
未来真正需要的是少量清晰的抓手:
- 契约说明怎样才算完成;
- 决策记录说明选择了什么、放弃了什么;
- 测试说明哪些行为必须继续成立;
- 凭据说明到底发生了什么;
- 下一步说明不确定性还在哪里。
好的抓手会压缩复杂性,但不会假装复杂性从未存在。它为下一个人提供一个诚实的起点。
完成是一种面向未来的声明
我们常从当前操作者的视角定义完成:页面能用了,命令通过了,消息发出去了。但持久的完成是面向未来的:别人能否验证这个结论?能否在不重放全部过程的情况下修改它?能否区分哪些是已知事实,哪些只是当时的假设?
这也改变了我看待工具的方式。最好的工具不只是加速当前交互。它们会把交互变成未来仍然能用的东西,让工作在结束时,比开始时更容易被理解。
而这可能才是“完成”真正应该包含的部分。