← 返回信息流
AI 资讯Hacker News·2 天前

2026年,为何还要手动写代码?

原标题:Why write code in 2026

速览

随着AI编程助手在2026年达到新高度,文章重新审视了人类编写代码的意义。尽管AI能自动生成大量代码,但复杂系统设计、创造性问题解决和业务理解仍需人类介入。文章指出,写代码不再只是语法表达,而是成为更高层次的思维活动。

AI 深度解读

背景

2026年,AI编码助手已经深度渗透到软件开发流程中。Hacker News上的一篇讨论引发思考:当AI可以生成绝大部分代码时,人类为什么还要亲自写代码?原文作者结合自身实践,反驳了“完全依赖AI”的倾向,认为亲自写代码仍然是必要且有价值的工具,而非过时的行为。

核心内容

我们的工作是构建软件工厂——而不仅仅是软件本身。软件工程师维护着“生产线”,让任何人都可以通过提示(prompt)提出变更并立即交付。我们搭建让AI代理(agent)成功运行的基础设施:通过提示(技能、AGENTS.md、知识库等)主动行动,通过自动化评估(测试、lint、类型系统、eval、其他AI等)被动保护软件。这一切让代理保持在正确的轨道上。即使是一个愚蠢的模型,在新鲜的上下文下,也能在这些约束内工作,产生足够好的变更。甚至让人觉得看代码本身都变得荒谬,想亲自写代码更是可笑。

但我不同意。写代码仍然有用。

即使拥有类似Fable的智能,人类也能从写代码中获得价值。不是因为代理比人类更擅长编程,而是因为人类可以直接在执行环境中思考,而不是通过英语作为代理。关键在于注意力和理解。要保持注意力,我必须超越“阅读代码”——像远处观察代理的被动旁观者。要真正与系统架构连接,亲身感受代码是有帮助的。我不想要你那种扁平的2D diff和补丁系统。时不时地,我需要完整的4DX虚拟现实体验,在身体上连接痛觉传感器,来感受正在发生的事情。

不,这不是因为“代码不漂亮”,而是关于体验脆弱性。如果对我来说在没有破坏的情况下构建代码都很困难,那么对代理来说理解它就更难了。如果我能清理它,然后记录一个关于架构的一致原则,没有半打例外,软件工厂就能更好地运行。如果我能调试,找到测试策略薄弱的地方,并找到修复方法,我就能压扁一整类新的bug。

是的,不写代码也可以做到。我不会教训你,不会叫你“slop-kitty”,也不会说唯一体验软件的方式是用磁化的针和稳定的手。我自己也感染了AI Psychosis(AI精神病)。我的绝大多数代码都是AI生成的。

尽管如此,我发现写代码是一个有用的工具。我鼓励其他人也这样做。当我只是一个“反向半人马”(reverse centaur)时,我很难保持注意力。当我阅读和批准代码时,我发现自己没有同样的所有权感。垃圾(slop)在雷达下飞过。更难进行微调。长期来看,垃圾也会伤害代理。脆弱性恰恰因为我们不注意细节而积累。另一方面,当人类做一些工作、提出一个方法,然后代理根据模式打出代码,我参与并拥有结果。

写代码帮助我思考。

英语是一个欠规范的语言,不是表达计算的精确方式。对于真正算法性的工作,我想用可执行的步骤来草拟和思考。我想要一个校准过的精确度。有时是低阶语言,有巨大的设计空间;有时是高级语言,有更有限的计算环境。

相反,我们正在转向一种错误的心态:认为编码代理就像编译器。这种心态让我们有理由交付糟糕的代码。代理不是编译器——它们更像是刚入职的实习生。它们阅读部分可能已劣化的代码,接受一个不精确的变更描述,然后必须生成一个变更。

人类不能把自己的思考和品味交给一群实习生。亲力亲为,而不是成为消费者,会有所帮助。

例如,你见过代理遵循“童子军规则”吗?即让代码比发现时更好。你希望它们尝试这样做吗?代理倾向于尽可能安全地完成当前变更。我在之前的代码库中遇到一个情况:某天早上,没喝咖啡时,我的肉脑提到使用浏览器本地存储。于是一些随机状态被管理在本地存储中,其他所有东西通过后端数据库。当我查看代码时,为了保留这个愚蠢的人为错误,包裹和间接层的数量可能使代码行数增加了三倍。代理通过过于保守,放大了我们的一次性坏决定。

通过愉快地删除代码和探索,我找到了更好的架构,而不是仅仅通过英语来代理。我的思考、我的作者身份、我引导因子的能力,因为关心代码而得到了极大放大。

如果我们正在构建软件工厂,细节很重要。建立架构模式的细节,深入到算法和性能。代理推动我们评估、衡量和防护。它们让在早期就添加CI到副项目(而不是事后添加)变得很酷。这是对软件状态的巨大改进。

但任何生产线都有薄弱点。偶尔在汽车工厂,我们需要拆解生产线,或者深入内燃机细节以提升10%的效率,或者花一整天观察刹车片测试,以找出某个现场问题为何没有被早期检测到。我们需要这样做,而不是把整个工厂的图景都记在脑子里。我们将微小细节与大局联系起来。在软件中划定哪些你能碰、哪些不能碰的任意边界,会阻碍这种努力。

关键要点

  • AI代理不是编译器,而是实习生:它们需要清晰、精确的上下文,且容易放大人类的错误决策。仅仅依赖代理会导致代码质量下降。
  • 写代码帮助人类思考:英语是欠规范的语言,无法精确表达计算。亲自动手写代码(尤其是算法性工作)能提供更好的注意力、所有权感和对系统脆弱性的直接感知。
  • 人类必须保持对架构的掌控:通过亲自编写、清理和探索代码,人类能发现并修复代理忽略的架构问题,建立更一致的架构模式,避免“垃圾”积累。
  • 代理的保守性会放大坏决策:例如,为保留一个糟糕的局部存储设计,代理可能生成大量间接层,增加代码复杂度。人类干预能打破这种恶性循环。
  • “软件工厂”需要细节关心:代理虽然推动了CI、测试等良好实践,但工厂的薄弱点仍需要人类亲自深入(如调试、性能优化、测试策略改进),而不是仅作为旁观者。
  • 写代码不等于拒绝AI:作者本人也大量使用AI生成代码,但认为亲自写代码是补充工具,而非替代。人类需要保持“参与感”和“所有权”,避免成为“反向半人马”。

意义与影响

这篇文章挑战了“AI编码时代人类无需

查看原文 →softwaredoug.com