AI编程拐点已至,Django 作者 Simon Willison 谈程序员工作的未来

11 阅读9分钟

有了 AI 编程,代码生成的效率提升百倍,但问题也随之而来:

  • AI 产出的海量代码,如何把控质量?
  • 程序员不再手写代码后,工作方式要如何重塑?
  • 我们又应该怎样与 AI 高效协作?

Simon Willison,Django 框架的核心作者之一,开源工具 Datasette 的创建者,无疑是回答这些问题的最佳人选之一。近年来,他持续追踪并评测各大前沿模型,并通过博客 Simon Willison’s Weblog 持续分享自己的 AI 探索历程与技术观察,在开发者社区具有广泛的影响力。

最近 Simon 做客 Lenny's Podcast (Lenny Rachitsky 主持的知名播客),深入聊了 AI 编程对程序员工作的冲击和应对心法。我梳理了其中的精华,相信能给你带来启发。

拐点已至 ( The November Inflection Point ) ,编程方式彻底改变

Simon 介绍,大模型的能力一直在提升,但之前还不够好,模型写的代码你还得盯着。直到去年 11 月份, GPT 5.1 和 Claude Opus 4.5 的推出,标志着模型越过了拐点,现在模型在大部分时候能够生成直接可用的代码,引发了编码模式的根本性变革。

我也发现很多大神都说最近几个月没有手写代码了,Simon 说现在自己 95% 的代码都是由 AI 生成,很多时候甚至是通过手机发送指令让 AI 写代码。

未来的“黑灯工厂”( Dark Factory ) 模式

由 AI 生成代码,软件行业的未来会是什么样呢?

Simon 设想未来软件行业是“黑灯工厂”( Dark Factory ) 模式,即公司里面所有代码都由 AI 生成。黑灯工厂是来自制造业的名词,就是全自动化生产的工厂,因为车间没有人类员工,所以无需开灯照明。

他举了一个“黑灯工厂”的例子:StrongDM 公司。从去年 8 月开始,这家公司禁止员工手动编写代码,必须全部由 AI 生成代码。

那么问题来了:AI 生成代码的速度极快,人工代码审查 ( Code Review ) 根本看不过来,会成为新的瓶颈。

如果取消人工 Code Review 环节,那又要如何保证代码质量呢?

StrongDM 公司的方法就是:加入测试,测试也是用 AI 生成。值得一提的是,他们用 AI 来构建仿真的环境,例如让 AI 读取 Slack 的 API 文档,模拟出一个 Slack 界面,接着 AI 模拟用户的操作来测试代码。

工作方式的颠覆:手机编程、并行 Agents 与精疲力尽的上午 10 点

Simon 提到,现在程序员的工作方式也发生了变化。以前,程序员编写代码时需要专注,把不被打扰的几个小时用于思考和编写代码。现在,因为 AI 承担了编写代码的工作,他发现自己的时间变得可以被打扰。只要有几分钟空闲时间,他就能通过手机端发出指令,让 AI 编写代码。

另一方面,同时开启几个 Agents 并行工作,看起来轻松了,其实大脑很累。他到了上午 10 点就感觉精疲力尽,因为要思考这些任务安排,认知负担加重。

Simon 说,他看到很多人因为要给 Agents 排满任务而不眠不休,希望这只是短暂的现象。我们也需要认识自己的能力边界,不要把自己搞得很疲惫。

看到这里,我很奇怪,为什么把编程迁移到手机上,就带上了手机社交媒体 APP 的特性呢?碎片化编程,让人上瘾。你是否有这样的感受呢?

AI 写代码带来的好处是能够很快构建原型 ( prototype )。以前,你写了产品的需求文档之后,工程团队需要两三周构建原型。现在,借助 AI 可能两三个小时就完成了,所以能够更快验证你的想法。很多时候一开始的想法不一定对,需要修改迭代, AI 正好可以加速这个过程。

效率提高了,是不是更有成就感呢?

很有意思的是,Simon说,正是因为用 AI 写项目的时间太快了,例如一个小时就写出一个Python 库,反而导致他对生成的软件并不是那么有信心,因为感觉自己没有花时间去打磨。他觉得软件的使用量,比如开发者自己是否在用这个软件,也是软件质量的重要衡量指标。AI 生成代码让他的很多想法点子都马上付诸实现、有了成品,然而写完之后就搁置一旁、没有使用。

对不同层次程序员的影响

AI 对不同层次的程序员影响也不同。对于高级程序员来说,AI 能够放大过去的经验和技能。例如, Simon 说他自己累积的技能就能够用在更精准地提出需求和指令上面。对于初级程序员,AI 可以帮他们度过新手期、更快上手工作。

中级程序员反而是最难的:已经度过了新手期,但又没有足够深厚的经验积累。

对于这些程序员,Simon 有什么建议呢?

他说很多人担心用了 AI 会导致技能的退化,其实倒不如反向思考 如何用 AI 帮助你放大自己的技能、更快学习新技能。在 AI 的辅助下,你有信心去探索更多新事物、挑战新项目。 以前你觉得做这些事情需要专业知识,要花时间去学习,没敢尝试,然而现在 AI 可以帮你快速度过新手期。 Simon 举例说他以前一直没用过 AppleScript,因为一想到需要花两三个月的时间来学习他就退缩了。但是他现在已经用了两年了!因为有 ChatGPT 的帮助,他可以快速上手使用。此外,他还通过 Claude 提供的菜谱来学习做饭,提升自己的厨艺。

如何用好 AI 编程?Simon Willison 的 Agentic Engineering 指南

Simon 说,如果你编写的软件代码只是自己使用,那可以 Vibe Coding(氛围编程),代码好坏都没事。但如果你要让别人使用,出现问题可能会给别人带来损失或不便,那就应该有一套方法规程来编写合格的软件。Simon 把这个称为 Agentic Engineering。有 AI 助力之后,我们应该编写出更好的代码。就是说,不仅在编码速度和数量上提高,在代码质量上也应该提高。

Simon 正在写一本 Agentic Engineering 的指南 Agentic Engineering Patterns,在他的博客以连载的方式发表。感兴趣的朋友请看这个链接: Agentic Engineering Patterns - Simon Willison's Weblog

Simon 特别指出,这个指南看起来是讲如何用 AI Agent 写好代码,其实讲的是软件工程,对于程序员的工作同样适用。

在播客访谈中,他重点介绍了其中的三项原则:

一、“囤”(hoard)你做过的项目代码,笔记。

Simon 说,你职业生涯中最有价值的部分是你的经验和知识,就是你验证过哪些技术可以解决哪些问题,哪些技术不可行,这些都可以应用于解决新问题上。

现在有了 AI ,可以更快地积累这些经验,比如让 AI 去写代码做试验,去生成小项目。

Lenny 追问:你是怎么用这些积攒的代码和笔记呢?用 AI 搜索,还是经常手动翻阅?

Simon 说两者兼有。有时将过往项目经验交叉融合,也许就是新项目的解决方案。他举了一个例子,他以前写过在浏览器打开PDF 并显示的代码,也写过用 OCR 从图片识别文本的代码。有一天他想写一个用 OCR 识别 PDF 文本的项目,他就想到了把之前的这两个项目结合:在浏览器打开 PDF,渲染为图片显示,然后用 OCR 从中识别文本。他把这两个项目的代码及说明发给Claude Code,让它生成代码,结果很好。

二、Test Driven Development(测试驱动开发)。

AI 生成的代码,必须要做测试。 很多人觉得AI生成代码量大,干脆放弃测试。Simon 说测试看起来好像花费时间,其实不然。如果不测试,以后出现问题时花费的时间更多。测试既可以确保代码运行过,也可以确保后续新功能开发不影响现有功能。

重要的是,你完全可以让 AI 来写测试啊!AI 很善于写测试。 这里 Simon 谈到了 Red/Green TDD:先写测试,然后再写程序。他说以前作为程序员的时候,他很烦这个流程,一般都是先把自己的想法付诸代码实现,然后再来考虑测试。现在正好可以把这些工作交给 AI 。

三、为 AI 提供一些示例代码:Template(模板)或者 Boilerplate(样板代码)。

Simon 说他并不是通过定义 claude.md 来规范代码,而是提供极简的代码样例:Template 或者 Boilerplate。他说 AI 很擅长模仿样例的风格写法,比如你的样例中有测试函数,AI 生成的代码中也会写测试函数。

听完 Simon 介绍的这几点,我发现使用 AI Agent的思维和带实习生做项目如出一辙。 你要整体把握项目方向和技术选型(这就要求自身有技术积累),通过测试保证交付质量,并用示例来明确代码规范。难怪他说,这本质上就是软件工程的思想。

一点感想

看完这期访谈,Simon 身上那种因好奇而生的乐观很打动我。他主动拥抱 AI,尝试各种大模型,把工具用熟、用透。更加可贵的是,他把一路摸索的宝贵经验整理分享出来,帮助更多人用好 AI 编程。

我想,这种开放和探索的心态,或许正是我们面对技术变革时的最好定力。 正如 Simon 给程序员的建议:与其担心使用 AI 会让技能退化,不如反向思考——有了 AI 辅助,我可以去尝试哪些以前不敢碰的新项目?

你在 AI 编程中有哪些心得或踩过的坑?如何看待它对程序员工作的冲击与重塑呢?欢迎在评论区聊聊。

B站收看链接:

【Lenny's Podcast】人工智能现状报告:拐点已至,暗黑工厂即将来临 | 中英字幕