为什么氛围编程有意义

"如果你广泛了解路,你会在一切中看到它。" --- 宫本武藏 [1]

为什么我对氛围编程有如此强烈的信念?为什么我花这么多时间来做它并传达它?

我不是 AI 专家。上次我研究它是在大学,我几乎不知道"随机森林"是什么。

我也不是编程专家。我现在可能很难解决非平凡的"LeetCode 简单"面试问题。我不记得如何实现归并排序与快速排序。

我也不是任何编程语言的专家。我最了解的编程语言是令人憎恶的 Jenkins Groovy。

我也不是系统设计专家。我可能在没有 Terraform 代码或系统图在我面前的情况下,在云计算基础知识中蹒跚。

这听起来像我是最不需要完全理解堆栈每一层如何工作并让 AI 代理为我自主做事的人。但如果你注意到,我也知道我不知道什么。

1、对很多事情的近似了解

然而,我确实知道的是,当事情看起来正确的时候。通过我在大学的计算机工程培训和 11 年在各种 DevOps 角色中的专业经验,从移动到云端到本地,我有足够的接触。经常被空投到我不拥有的新仓库中,但需要以某种方式协助修复,这是一种对于开发对它们如何工作的广义理解非常有价值的经验。我记得作为一名实习生,我不得不在其中工作的第一个大型代码库感到恐惧,不知道从哪里开始。通过被迫一次又一次地开始,我很快就克服了对新代码库的(未知的)恐惧,并将正确的事物视为黑盒(比如应用程序做什么,或者它如何工作,或者它的入口点),将适当的事物如构建脚本、Dockerfile、Terraform 和 CI/CD 管道视为白盒。这些标准 DevOps 工具都共享相同的标准功能集,每个人在自生自灭时都会略有不同。

我知道事情应该如何进行。我知道最佳实践,我可以识别什么时候事情闻起来不对。这些形状和模式不限于特定语言。这些实践是由成千上万名在我之前来到的工程师以迭代和增量方式找出用计算机解决问题的更好方法的血液、汗水和眼泪写成的。我站在巨人的肩膀上,知道软件问题通常应该如何解决。

2、指导他人的输出

就像 Dr. Dre(虽然他有问题,他只是说明这一概念的最清晰的例子)以不写他表演的歌词而闻名。这听起来很奇怪,几乎是倒退,因为说唱可以是音乐中强大的个人自我表达形式。

相反,他有别人为他写,最著名的是 Eminem 为他的一些最大的歌曲。然后他纠正、指导和编辑为他写的歌词。他知道什么歌词听起来适合他的风格和说唱的流畅。这是一种非常非确定性的音乐创作方法,但它创造了一些人们至今仍然享受的最受欢迎的歌曲。

我将给你一个更接近家的例子。你的工程经理分配给你一个史诗。你,高级工程师,负责将史诗的高级业务目标分解为故事和子任务。这些任务定义得足够明确,以至于你或一些初级工程师在指导的情况下可以完成并推进高级业务目标。

这些听起来像什么?这些听起来像是两个不同的人没有直接控制或键入生成的每个字符的例子。然而,这些人仍然有一个过程来改进和迭代生成的内容。

我认为工程师对氛围编程的奇怪感觉很大程度上是因为我们是 IC(个人贡献者),我们通常是被委托工作的人。我们不习惯于做委托。但你猜怎么着?你的经理一直都在做氛围编程。

3、非确定性创作

在你说你有完全合乎逻辑的、结构化的、有序的思维并且不可能与 LLM 相比之前:你的想法从哪里来?思考是如何工作的?它是确定性的吗?

我要写的下一个词从哪里来

感觉非常像是在一个巨大的压缩向量空间中搜索我曾经经历过的所有东西,试图在当前上下文窗口中围绕这个特定想法的所有令牌中找到下一个合适的词。如果我开始做其他事情并分心,所有这些上下文都会被清除。我必须重新开始并重建它。

我以为这是一个 xkcd,但我猜它不是

这有点令人不安,对吧?即使它不是我们内部工作的确切方式,它甚至接近于它的近似也是可怕的。它让你感觉你不是那么"特别"(我们将在下面解释一些柔道的东西后再回到这一点)。我认为这就是人们害怕的:我们内心最深处的思想甚至可以在自动化的方式中以日益令人不安的保真度被重现。

你有多不安取决于你如何看待宇宙。它是完全确定性的,还是有一些根本不可解的随机性元素,即使我们可以完美地模拟一切?

我认为为什么管理类型对氛围编程和 AI 如此热情,是因为它的运作方式与他们一直以来的工作方式完全相同。任何从 第一层(Gene Kim,Steven Spear)抽象出来的人,前线类型的工作只能指导和反馈呈现给他们的是什么,无论是人类还是 AI 生成的。

对我无法直接控制的行动给予反馈感觉很像指导柔道。

4、强制的柔道类比

拉斯维加斯一个周四的凌晨 6 点

在周二和周四的早上,在世界著名的拉斯维加斯第 10 星球场,你可以发现我教普通的 9-5 级学生如何在垫子房间里更好地摔跤。我的学生从站立开始,到互相把对方放倒,通过一系列的锁技(控制位置),并最终让对方拍地(让对方"拍出")[2]。

无论我如何尝试,我基本上无法为我的学生做技术。我无法控制他们的身体。我无法劫持他们的肌肉和神经系统来完全按照我会做的方式做技术。即使我可以,它也会感觉和工作不同,因为我们的身体不一样。他们有不同的肢体长度、柔韧性和力量属性。他们需要自己弄清楚如何以他们自己的方式,为他们自己的身体来做。

我只能给他们想要做的事情的目标。例如,我们要试着让对手的手在垫子上而不是在我们身上。无论情况如何,这对我们来说通常是一件好事。另一个要并行尝试实现的目标是我们总是想要尝试上去并保持在上面。这些"经验法则"开始约束我的学生行为朝向某些可取的行动。

我可以给他们他们在某些条件下可以尝试做的技术的具体实例,他们的身体将尝试用他们的镜像神经元模仿这些动作。最终,这些镜像神经元没有连接到我的神经元,他们将必须根据他们自己的属性开发自己执行技术路径。

根据上述 Gene Kim 的"工作层"参考,作为一名教练,我在第 2 和第 3 层运作。第 2 层是我确保我们有安全、清洁的垫子空间(使用的工具),第 3 层是关于摔跤工作应该完成的沟通(第 1 层)。

5、剧变

这些基本事实是柔道在过去 3 年中随着生态学/约束主导方法 / CLA(更具体的定义稍后)的引入而发生的巨大剧变。

传统上,当你想到武术时,你会想到《空手道小子》一遍又一遍地练习相同的技术:"上蜡,下蜡",直到它是"完美的。"这是武术的传统观点。与现实世界互动的武术不是那样工作的。

在你练习柔道的第一天,一旦你在实战会话(称为"滚")中拍打你的搭档,他们就变成了一个不合作的、移动的目标。没有任何静态的、"完美的"练习会帮助你对他们做些什么,除非他们完美地保持静止并配合你。你必须弄清楚如何在混乱的四肢和汗水的混乱中应用这些技术。

从这个两体(包括垫子👀的三体问题)系统中出来的甚至不是具体的技术。没有单一技术以相同的方式应用两次,就像一个人两次踏入同一条河流一样。

没有人两次踏入同一条河流,因为它不是同一条河流,他也不是同一个人。------ 赫拉克利特

然而,柔道传统规定我们将大部分课堂时间静态地"死练"配合伙伴的技术。所有"正确"的技术来自黑带教练,他们都知道一切。传统思维规定你需要从最好的教练那里学习每个技术的所有细节。

如果你看不出来,这种传统方法是一种非常提升自我和以教练为中心的世界观。CLA 是一种更加分散的、以学生为中心的世界观。传统观点让教练感觉"特别"(注意我之前用过这个词)。CLA 的世界观将教练更多地变成学习环境的促进者,而不是技术的全知神谕。

Greg Souders,我采访过的人 在他声名鹊起作为教练的早期,是公开质疑柔道社区长期以来的信念,即我们需要练习才能擅长摔跤的催化剂。

他彻底颠覆了柔道课看起来像什么的想法。将近 100% 的课堂时间,除了休息期间,都在从特定情况的实战中进行,每个人都有他们想要实现的具体目标 [3]。这种类型的训练被称为"约束主导方法"或 CLA。它基于生态心理学,他们研究生物体与其环境之间的相互作用。

考虑这种类型的训练的一种方式是在柔道的更大游戏中玩特定的"迷你游戏"。"约束"是教练定义的来自各个位置的具体目标,以鼓励学生的可取行为。

通过在实际情况下花费更多时间,Greg Souders 的学生与他们训练的时间相比展示了卓越的技能水平。他们赢得了重大比赛,尽管很少,如果有的话,静态练习。

6、氛围编程的约束主导方法

如果我们不静态练习,我们怎么可能学到任何东西?如果我们不亲手编写代码,我们怎么可能学到任何东西?

我们迭代地和增量地(注意我之前在哪里用过这些词)约束系统的输出。随着时间的推移,我们的身体开始识别模式和行为形状。它不是严格的、硬编码的、确定性的"如果这样,那么那样",而是一个有界的搜索空间,游戏是在基于我们所有先前的经验为给定的上下文情况寻找"足够好"的答案。

这听起来像什么?

听起来非常像 LLM。

这就是我为什么如此坚定地坚信氛围编程。它是对我们委派给其他人我们学习的方式的扩展,只是用一种称为代理的自动化系统又迈进了一步。

这意味着什么?我们只是把大脑关闭,不再知道任何东西,并把一切都委托给代理吗?

员工和首席级工程师会关闭大脑并把工作分配给初级工程师吗?经理会这样做吗?坏的可能会。好的绝对不会。

我认为我们只是从起跑线开始在一个更高的水平运作。初级工程师不需要苦练 10 年才能达到高级工程师告诉别人做什么。他们现在必须从第一天起学习如何管理代理。

我们不再自己编写代码行。我们需要通过阅读和审查代理正在做的事情来研究输出。如果我们真的好奇,我们总是可以要求代理逐行向我们解释代码是如何工作的,如果我们需要确保完全准确性。注意,人类代码从来都不是 100% 准确的。

这并不意味着我们作为软件开发人员"什么都不知道"。现在几乎相反。我们需要了解更多关于团队级别的最佳实践和好的模式,以提供给代理,以便他们可以最有效地执行他们的工作。

7、角色的演变

别担心,我们不会被氛围编程 PM 取代。只是软件开发人员的角色已经被提升了。

类似于柔道课从以教练为中心转向以学生为中心,软件开发人员的个人代码处理技能不再像以前那样"特别",我们的重点现在更多于为代理做他们最好的工作促进推理环境(上下文窗口!)。

当我指导柔道时,我仍然需要了解一些关于柔道的东西。一个全新的白带学生无法上课,就像一个全新接触软件开发的人可能无法编写好的软件,即使有最好的代理可用给他们。

我知道好的柔道看起来像什么是被称为"不变量",或者我想传给学生的原则。我围绕这些设计课程,以便我的学生尽可能多地接触它们。他们可以直观地体验它们,而不仅仅是认知地概念化它们。这是"对......的知识"和"关于......的知识"之间的区别。

"对......的知识"是通过直接体验、迭代尝试和失败来做一件事而获得的。"关于......的知识"是关于给定主题的元知识或"书本智慧"。换句话说,你可以阅读所有你想了解关于驾驶汽车的书,但你不会通过阅读来实际学会如何驾驶汽车(并且失败!)驾驶汽车。

你也可以将其框架为"理论"与"应用"。

这并不意味着我们需要为每件小事重新发现和重新发明轮子,而是重新优先考虑我们将时间花在什么上。教练和氛围编程软件工程师的角色是深入和直接参与问题,以便提出约束来帮助他人搜索这些问题的解决方案空间。

如果我们卡住了或者如果我们需要引用现有的解决方案,那没关系。预先制定的规定性解决方案只有在之后我们与问题有直接经验才有意义。这意味着我们应该做的大部分是获得更多的"对......本身做某事的知识"。

8、我们现在去哪里?

我们现在去哪里?------ "甜蜜的孩子噢我的",枪与玫瑰

我们要进入不适。我们必须坐在其中,浸渍其中,做这件事。

不仅仅是"思考"这件事并让它像一篇我们需要开始但实际上还没有开始的论文一样悬在我们上方,而是主动尝试和在这件事上失败。

我们必须理解我们解决的问题的边界,并能够将这些边界传达给其他人,无论其他人是人类还是代理,以帮助他们围绕潜在解决方案的搜索空间绘制边界。

我知道不适对我来说仍然很可怕。你必须面对你的自我并冒着发现你不如你想象的那么好的风险,但同时,你知道你能够以未知的工作量实现目标。

不适是知道你现在的位置和你想要去的地方之间存在一些差距,中间有未知的工作量。

为什么我跟随 Stevie Yegge 和其他人,因为他们从前线领导:他们花费大部分时间进行氛围编程,这件事。他们在任何其他人之前投入了 10,000 多小时。他们看到了我们才刚刚开始谈论的第一组 farther down the road 的问题。

让我们共同面对不适。


原文链接:为什么氛围编程有意义 - 汇智网

相关推荐
卷福同学1 小时前
【养虾日记】Openclaw操作浏览器自动化发文
人工智能·后端·算法
春日见2 小时前
如何入门端到端自动驾驶?
linux·人工智能·算法·机器学习·自动驾驶
光锥智能2 小时前
从自动驾驶到 AI 能力体系,元戎启行 GTC 发布基座模型新进展
人工智能
luoganttcc2 小时前
自动驾驶 世界模型 有哪些
人工智能·机器学习·自动驾驶
潘高2 小时前
10分钟教你手撸一个小龙虾(OpenClaw)
人工智能
禁默2 小时前
光学与机器视觉:解锁“机器之眼”的核心密码-《第五届光学与机器视觉国际学术会议(ICOMV 2026)》
人工智能·计算机视觉·光学
深小乐2 小时前
不是DeepSeek V4!这两个神秘的 Hunter 模型竟然来自小米
人工智能
laozhao4322 小时前
科大讯飞中标教育管理应用升级开发项目
大数据·人工智能
rainbow7242442 小时前
AI人才简历评估选型:技术面试、代码评审与项目复盘的综合运用方案
人工智能·面试·职场和发展
张张123y2 小时前
RAG从0到1学习:技术架构、项目实践与面试指南
人工智能·python·学习·面试·架构·langchain·transformer