Stream of Consciousness Driven Development
摘要
作者描述了一种称为'Stream of Consciousness Driven Development'的技术,在结对编程中,他们在做出更改前先编写一份详细的markdown文件来探究问题和解决方案,以确保双方都完全理解其中的推理。
<p>这是上周我刚刚尝试的一个方法,但它似乎很有潜力,值得在未打磨的情况下展示出来。当时我正在与一位客户结对编写一份规范。我发现了规范中的一个问题,以及一种复杂的修复方式。与其试图口头解释,我首先创建了一个新的markdown文件:</p>
<div class="codehilite"><pre><span></span><code>NameOfProblem.md
</code></pre></div>
<p>然后我开始打字。先是问题摘要,然后是详细描述,接着是解决方案及其可行的原因。当我的搭档提出问题时,我将他的问题以及我们的讨论融入了整个流程。如果解决方案走进了死胡同,我们就将其标记为死胡同。最终文件看起来像这样:</p>
<div class="codehilite"><pre><span></span><code>Current state of spec
Problems caused by this
Elaboration of problems
What we tried that didn't work
Proposed Solution
Theory behind proposed solution
How the solution works
Expected changes
Other problems this helps solve
Problems this does *not* help with
</code></pre></div>
<p>只有当这一切完成后,我的搭档完全理解了思考链,<em>并且</em>我们一致认为这是正确的方法,我们才开始对规范进行修改。</p>
<h3>这比直接进行更改好在哪里?</h3>
<p>这个更改在<em>概念上</em>是复杂的。一个粗略的类比:想象一下与一位初学者结对,他写了一个插入排序,而你想用快速排序替换它。你需要解释为什么插入排序太慢,为什么快速排序不慢,以及快速排序如何正确地对列表进行排序。这可能会涉及到计算复杂性、大O表示法、递归等话题。这些都是你已经内化的概念,所以更改对你来说很简单,但解决方案使用了初学者不知道的概念。因此对他们来说,这在概念上是复杂的。</p>
<p>我并非与一位初学程序员或初学规范编写者结对。这是一位能够自信地独立编写复杂规范的客户。但他们不像我这样全职从事规范工作。任何结对中存在经验差距时,有些解决方案对一个人来说概念上简单,对另一个人来说则复杂。</p>
<p>我经常注意到,当一个人不完全理解更改背后的概念时,他们就会说“你是专家,我相信你”。这最终会导致一个完全无法维护的规范。因此,全部写出来。</p>
<p>正如我之前所说,我只尝试过一次(尽管我在教学研讨会时成功使用过类似的想法)。不过效果还不错!只是要做好大量输入的准备。</p>
查看缓存全文
缓存时间: 2026/05/16 03:40
# 意识流驱动开发
来源:https://buttondown.com/hillelwayne/archive/stream-of-consciousness-driven-development
这是我上周刚尝试的方法,但看起来潜力很大,值得展示一下未经打磨的版本。当时我和一位客户在结对编写一个规范。我发现规范中有一个问题,而解决这个问题的方案又很绕。与其用口头解释,我直接新建了一个 Markdown 文件:
然后我开始打字。先是问题总结,接着是详细描述,然后是解决方案及其工作原理。当搭档提问时,我把他的问题和我们的讨论也融入进去。如果解决方案遇到死胡同,我们就标记为死胡同。最终文件看起来像这样:
``
规范当前状态
由此产生的问题
问题详述
我们曾尝试但无效的方案
建议解决方案
方案背后的理论
方案如何运作
预期变化
该方案还能解决的其他问题
该方案*不能*解决的问题
``
直到这一步完成,我的搭档完全理解了整个思路,*并且*我们都认同这是正确的方向,才开始修改规范。
### 这比直接修改好在哪里?
这次修改在*概念*上很复杂。粗略打个比方:想象一下你和一位新手结对,他写了一个插入排序,你想把它替换成快速排序。你需要解释为什么插入排序太慢,为什么快速排序不慢,以及快速排序如何正确地对列表排序。这可能会涉及计算复杂度、大 O 表示法、递归等旁支话题。这些都是你早已内化的概念,因此改动对你来说很简单,但方案用到了新手不了解的概念。所以对他们来说,概念是复杂的。
我结对的对象不是刚入门的程序员,甚至不是刚入门的规范编写者。这位客户完全可以独立写出复杂的规范。但他们不像我这样全职从事规范工作。只要结对中两人经验有差距,就会出现对一个人来说概念简单、对另一个人来说复杂的解决方案。
我经常注意到这种现象:当一方不完全理解改动背后的概念时,他们就会说“你是专家,我相信你”。这最终会导致一个完全不可维护的规范。因此,我把一切都写出来。
正如我之前所说,我只尝试过一次(但我在教学研讨时成功用过类似的想法)。不过效果还不错!只是要做好大量打字的准备。
相似文章
分层项目记忆
一位开发者分享了一个用于AI辅助开发的免费/开源系统,该系统采用分层markdown文档和工作流程,具备人工闸门和代码图谱记忆等功能,以改进项目管理。
PairCoder++:结对编程作为已验证代码驱动的多模态与结构化工件生成的通用范式
PairCoder++ 提出了一种结对编程范式,其中 Driver 代理编写代码,Navigator 代理利用工具链验证进行审查。在 17 个基准测试中,该方法在生成图表、科学图像、CAD 模型、3D 场景及其他结构化工件方面取得了显著改进。
过去一年,我是如何改变编程方式的?你呢?
一位程序员回顾了过去一年其开发工作流程的演变,从使用基于LLM的IDE自动补全转向采用CLI编码代理和plan.md文件,并对传统IDE的必要性提出了质疑。
Ask HN: 使用AI编程时如何进入心流状态?
一位Hacker News用户询问在使用AI编程时如何保持心流状态,描述了从长时间心流向多个短时间心流的转变,并建议并行探索想法。
@zostaff: 这篇论文彻底改变了我对自我演化代码库的看法:Backlog -> Ideate -> Triage -> Execute -> Poli…
这篇论文提出了一个利用LLM实现自我演化代码库的六阶段蓝图,强调向规范(specification)而非指标收敛。