文章摘要
目前,AI技术的快速发展使得构建AI应用的方法和规则不断变化,导致即使是经验丰富的开发者也无法形成稳定的专业知识。大家都在摸索中前进,无法假装成为专家,因为技术本身在不断更新,使得所有人都处于初学者的状态。
文章总结
标题:目前还没有人知道如何用AI构建软件
发布时间: 2025年7月19日
上周,我发布了Protocollie。这个项目是用我不熟悉的语言在4天内完成的,甚至没有直接接触代码。人们一直在问“怎么做到的?”,但我不确定同样的方法是否还能奏效。
我们都在边做边摸索。
每一种新技术都会经历这样一个阶段:每个人都假装自己知道自己在做什么。我们已经过了那个阶段,或者也许还没到。无论如何,我们正处于一个有趣的中间地带,没有人能假装自己是专家,因为一切都在我们脚下不断变化。
最近我一直在思考“专家”这个概念。成为专家需要多长时间?马尔科姆·格拉德威尔说需要1万小时,但他谈论的是小提琴和国际象棋。这些技能的规则不会每两周更新一次,你的肌肉记忆也不会在一夜之间过时。
如果世界上最有经验的AI结对程序员最多只有两年的经验,那么我们所有人都是初学者。随着技术的加速发展,我们可能永远是初学者。
我一直在称之为“系统”,但这意味着我有所计划。实际上,它更像是积累的过程,就像桌子上堆满了文件,直到突然之间你有了一个“归档系统”。
它从一份文档开始,因为我总是忘记我告诉Claude关于架构的内容。然后是两份文档,因为我厌倦了解决同样的问题。接着是三份,因为我注意到我在重复工作流程。最后是四份,因为故事需要有个地方存放。
四份文档,不是因为四是最佳数字,只是因为我那时停止了添加。
有时我怀疑自己是否只是在扮演程序员的角色,就像那些玩复杂过家家游戏的人。“让我们假装这份文档是架构!让我们假装这个流程是正式的!让我们假装我们知道自己在做什么!”
但软件是真实的。它能编译,能运行,人们在使用它。所以,也许假装才是关键?也许所有的方法论都只是相互认可的虚构,恰好能产生结果?
架构概述——最初是一份README。“这是这个东西大概的功能,我想。”
技术考虑——我的积累的挫败感变成了文档。每次Claude遇到困难,我们就添加更多细节。
工作流程——我注意到我一直在重复同样的步骤。所以我让Claude写下这些步骤。现在我像遵循圣典一样遵循自己的指示。它们并不是圣典,只是这次碰巧奏效了。
故事分解——一切都在15-30分钟的块中进行。为什么?因为大约这么长时间后,Claude就会忘记我们十分钟前讨论的内容。就像一个拥有博士学位的金鱼。
在构建Protocollie的第一个周日,我发现了一种新的工作方式。我会走进办公室,检查Claude构建的内容,快速测试一下。如果它有效,太好了!提交并推送。“现在构建服务器连接UI,”我会说,然后走出去。
做早餐。Claude在编码。
和儿子玩耍。Claude在编码。
看电视。Claude在编码。
每隔一小时左右,我会回来。五分钟的测试。一分钟的反馈。“实际上,你能让它记住最后一个服务器吗?”然后回到我的周日。
这就像有一个非常专注的初级开发人员。只不过这个初级开发人员每分钟能输入1万个字,而且从不会被Twitter分心。
一整天,我可能只花了90分钟真正“工作”。那种需要你做出决定、测试东西、说“不,不是这样”的专注工作。其余时间只是……在软件在后台生成的同时过我的生活。
有一种奇怪的时间膨胀感。你给出提示。你去过你的生活。你回来时,已经有了一万行代码。你花5分钟阅读。一句反馈。在你做午餐时,又有一万行代码出现。
比例完全不对。输入与输出。努力与结果。时间与进展。它打破了我所有关于工作应该是什么感觉的心理模型。
有时我感到内疚。就像我在作弊。就像Hacker News上有人会评论说:“不好意思,你不能这么快构建软件,而且肯定不能在做煎饼的时候,请回到你通常的挣扎中。”
我最近告诉某人,我们正处于AI开发的“往墙上扔意大利面”阶段。他们纠正我:“你是说‘看看什么能粘住’?”
不。我是说往墙上扔意大利面。粘不粘住无关紧要。扔才是关键。
每一个奇怪的过程,每一个失败的实验,每一个“这不应该奏效但确实奏效”的时刻,它们都是我们集体进行的实验中的数据点,而这个实验没有假设。
我的四文档系统?只是碰巧以一种我能识别的模式粘在墙上的意大利面。明天它可能会滑下来。没关系。我会扔更多的意大利面。
我编程的时间足够长,记得我们曾经手工雕刻HTML表格。当CSS只是一个建议,而不是一种生活方式。当JavaScript只用于鼠标悬停效果,别无他用。
每个时代,我们都抽象掉了上一个时代的工作。从汇编到C,从C到Java,从Java到Ruby,一直到“我描述我想要的东西,它就会出现”。
但这不仅仅是另一个抽象层。它是别的东西。更奇怪的东西。
当我构建Protocollie时,我不是在编程。但我也不是在非编程。我不知道该怎么称呼它。我们还没有这个词。
技能不再是语法。不是算法。甚至不是系统设计。它更像是“连贯的愿望”或“精确的想象力”或“结构化的愿望”。
回顾我的文档,我意识到它们与代码无关。它们关乎记忆和遗忘。关于什么值得保留,什么可以重新生成。
架构概述并不是真正的架构。它是“如果我失忆了,我会想知道什么?”
技术考虑并不是真正的指令。它们是“如果我们不得不重复,什么会让我沮丧?”
工作流程并不是真正的流程。它是“出现了哪些我不想失去的模式?”
故事分解并不是真正的计划。它是“当一切重置时,我如何取得进展?”
也许所有的文档都是这样。给未来困惑的自己的信息。
我们又都成了初级开发人员。但不是传统意义上的初级,即经过足够多年后成为高级。我们是永久意义上的初级,因为技术进化的速度超过了专业知识的积累。
这就像是一个职业冲浪者在一个不断改变物理规律的海洋中冲浪。就在你以为你理解了波浪时,它们开始横向移动。或者向后移动。或者变成鸟。
这要么令人恐惧,要么令人解放,取决于你与控制的关系。
我不知道下周我会构建什么。我会使用什么流程。我会创建或放弃什么文档。这一切是否还会有意义。
这种不确定性曾经困扰我。
我们正处于这样一个时刻:每个开发者同时是专家(在他们自己奇怪的过程中)和完全的初学者(在接下来的一切中)。四天的工作可以产生过去需要几个月才能完成的东西。主要的技能是向一个打字速度比你思考速度还快的东西解释你想要什么。
我的四文档系统并不是一个建议。它只是我们集体进行的一个实验中的一个数据点。上周开发过程中的化石。已经过时。已经怀旧。
但正是这一点让这个时刻充满活力。我们都在低潮时建造沙堡,知道潮水会回来。沙堡是软件。潮水是进步。而我们正在享受生命中最美好的时光。
明天,有人会发现一个三文档系统。或者五文档系统。或者根本不需要文档,只有良好的意图。
而且它可能会奏效。
我使用的四份文档?它们现在在GitHub上。不是作为福音。不是作为模板。更像是……考古文物。“这是一个人在2025年某个星期做过的事情。”
如果你想看就看吧。获得灵感。感到困惑。然后完全忽略它们,创建你自己的。它们不是指令——它们只是证明某件事曾经对某人奏效过。
就像找到别人的徒步旅行标记。知道有人走过这条路是有用的。但假设他们的路径就是你的路径是危险的。
感谢阅读《Works on My Machine》!这篇文章是公开的,所以请随意分享。
评论总结
评论内容总结:
AI提升开发效率:
- 一些开发者认为AI工具(如Claude)显著提高了他们的工作效率,尤其是在处理繁琐任务时。例如,fizx提到“我可以在会议间隙的两分钟内进行提示,回来时已经有显著进展”。
- lordnacho表示:“我现在可以一边放松一边写代码,Claude帮我完成了许多原本需要大量时间的任务。”
AI工具的局限性:
- 尽管AI工具在某些方面表现出色,但许多评论者指出其局限性,尤其是在处理复杂问题和代码质量方面。renewiltord提到:“代码中的bug很奇怪,我无法理解它们之间的关系,因为我从未看过代码。”
- iLoveOncall批评道:“AI工具无法解决超出极基础问题之外的任何问题,而且提示它的时间可能比直接写代码更长。”
AI对开发流程的影响:
- 一些开发者认为AI正在改变编程的本质,甚至可能使开发者更像项目经理。reactordev指出:“你现在更像是一个项目经理,而不是程序员。”
- schneems提到:“AI在生成大量代码时,有时会直接违背计划中的要求,这让我希望有更多的控制权。”
对AI未来的看法:
- 一些评论者对AI的未来持乐观态度,认为它只是另一种工具,类似于搜索引擎的进化。Flatcircle表示:“AI只是下一个迭代的谷歌搜索,聪明的人可以用它做很多酷炫的事情。”
- 然而,xyst则持怀疑态度:“如果AI真的那么好,为什么还需要这么多文章来宣传它的好处?这让我想起了数字货币的狂热。”
对AI代码质量的担忧:
- 许多评论者对AI生成的代码质量表示担忧,尤其是在安全性和可扩展性方面。asadotzler指出:“业余开发者假装是软件生产者,忽略了安全性、国际化等核心问题。”
- facefactsdamnit直言:“如果代码频繁出错,那它就是垃圾。”
总结:评论者对AI在软件开发中的应用持不同观点,一些人认为它显著提高了效率,尤其是在处理繁琐任务时;而另一些人则对其代码质量、复杂问题处理能力以及未来发展方向表示担忧。