Stream of Consciousness Driven Development

Hillel Wayne — Computer Things 新闻

摘要

作者描述了一种称为'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&#39;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 表示法、递归等旁支话题。这些都是你早已内化的概念,因此改动对你来说很简单,但方案用到了新手不了解的概念。所以对他们来说,概念是复杂的。 我结对的对象不是刚入门的程序员,甚至不是刚入门的规范编写者。这位客户完全可以独立写出复杂的规范。但他们不像我这样全职从事规范工作。只要结对中两人经验有差距,就会出现对一个人来说概念简单、对另一个人来说复杂的解决方案。 我经常注意到这种现象:当一方不完全理解改动背后的概念时,他们就会说“你是专家,我相信你”。这最终会导致一个完全不可维护的规范。因此,我把一切都写出来。 正如我之前所说,我只尝试过一次(但我在教学研讨时成功用过类似的想法)。不过效果还不错!只是要做好大量打字的准备。

相似文章

DeepCode:开放式智能体编程

Papers with Code Trending

DeepCode 是一个完全自主的框架,用于从文档到代码库的合成,通过原则性的信息流管理将科学论文转化为生产级代码,在 PaperBench 上取得了最先进的结果,并超越了博士级人类专家。

@SaitoWu: https://x.com/SaitoWu/status/2053101671035851216

X AI KOLs Timeline

The article summarizes a talk by Matt Pocock criticizing 'specs-to-code' approaches, arguing that solid software engineering fundamentals like TDD and modular design are more critical than ever for effectively using AI coding assistants like Claude Code.