谁在用 AI 改变软件开发?AI 编程正在催生一种全新的软件开发者
他们未必熟悉代码语法,却懂业务、会测试、能挑错,也能把软件交付出来。真正移动的不是专业底线,而是实现门槛。
拥有 30 多年编程经验的开发者 Lars Jansen 在 X 上发帖,提出一个观察:AI 编程正在催生一种全新的软件开发者。
他指的不是精通每种框架规范、随手能写编译器,或者为缩进该用制表符还是空格争论 15 年的传统程序员;更不是跟着教程做个待办清单、一路点击 Accept 就自称工程师的人。他说的是另一群人:能把系统应该怎样工作描述清楚,会测试、会质疑模型,发现不对劲时不会放过,并持续修改直到软件真正可用的人。他们中的许多人以前甚至不会称自己为程序员。
这条帖文很快引来大量争论,也出现了许多“这说的就是我”的回复。Jansen 随后结合自己的编程经验和这些回复写成了这篇观点长文。它不是一份具有统计代表性的行业调查,而是在追问一个已经发生的变化:当亲手写代码不再是过去那道硬门槛,什么才算软件开发,又有谁因此获得了进入软件开发的机会?
谁正在进入软件开发
回复让 Jansen 注意到,这批人不是计算机专业的学生,也不是想靠 AI 冒充资深工程师的新人。他们是长期生活在具体问题里的领域专家:律师、设计师、电影从业者、电商人士和企业主。
他们过去缺的通常不是想法,而是把想法变成软件的能力。律所从业者可能比外部开发者更熟悉自己的工作流程;建筑从业者知道十个项目之间需要追踪哪些信息;仓库管理者清楚昂贵旧系统只要多一个界面,就能替每个人每天省下半小时;设计师也能准确描述图像工作流应该怎样运转。
领域知识原本就在那里
4 种职业,看见 4 种软件缺口
律所从业者
熟悉律所内部真正怎样运转,比外部开发者更清楚工作流应该如何衔接。
建筑从业者
知道十个项目并行时,哪些信息必须持续追踪。
仓库管理者
看得见旧系统缺少的那个界面,以及它为什么能替每个人每天省下半小时。
设计师
能够准确描述图像工作流应当怎样运转,也能判断输出是否符合真实需要。
但知道“我需要什么软件”,并不等于能够把它造出来。过去要跨过这道墙,通常需要程序员、开发团队和足够的预算,或者花数年时间自己学习编程。领域知识再深,如果缺少实现能力,软件仍只能停留在想法里。
AI 正在降低这道门槛。回复者谈到的并不只是个人玩具:有人为自己的工作搭建内部系统,有人用自建工具替代昂贵的软件订阅,也有人在没有传统开发背景的情况下交付了全栈系统。
这与照着教程做一个待办应用并不相同。他们也许写不出模型生成的每个函数,甚至不熟悉所用语言的一半语法,但他们清楚软件应该怎样工作。结果不对时,他们能够指出问题、测试差异、反复修改,并把实现一步步推向真正需要的状态。

他们怎样驾驭模型
会使用 AI 编程工具,并不会自动让人成为作者所说的新开发者。真正的分水岭,是判断权留在人手里,还是一起交给了模型。
第一类人让 AI 做一个功能,运行一次,看到正常流程似乎能走通便继续往下。他们不清楚模型为什么选择这种实现,也没有检查代码里藏着哪些假设,更不知道正常路径之外会发生什么。现实中确实有人输入“帮我做个类似 Airbnb 的应用”,连续点击 47 次 Accept All,看到本地出现登录页面,就觉得自己已经成了软件工程师。
第二类人可能从同一个需求开始,但接下来的对话完全不同。他们会继续追问:
- 同一个请求发送两次会发生什么?
- 为什么要把这段状态放在这里?
- 进程在两个操作之间崩溃,数据怎样恢复?
- 只要求修一个问题,为什么改了三个无关文件?
他们还会要求模型为失败路径写测试,停止重做已经可以工作的部分,修改前先检查现有实现,并解释看起来可疑的决定。
以一个库存工具为例,只看表单能否提交,只验证了最顺利的一条路径。保留判断权的人还会检查重复提交会不会重复入库、库存更新与操作记录之间发生中断后能否恢复、多人同时修改库存时怎样处理,以及这些失败情况有没有测试覆盖。
同一个库存功能
点开四种意外,看判断权在谁手里
选择一种情况
被模型牵引
表单提交成功,就继续往下做 只验证正常路径,没有确认同一请求再次到达时会不会重复入库。驾驭模型
先问:同一请求发两次会怎样? 要求模型解释去重方式,并为重复请求写失败路径测试,再决定是否接受实现。页面能跑只证明正常路径出现过;能否处理重复请求,才开始触及软件在真实环境里的行为。
两类人都在使用 AI 写代码,但做的不是同一层面的工作。前者把技术判断外包给模型,后者把模型当作实现工具,自己负责定向、质疑、测试和最终验收。能不能亲手写出全部代码,不再是唯一分界;能不能发现实现已经跑偏,才是更关键的区别。
这也是“氛围编程”(Vibe Coding)正在失去区分度的原因。这个词既被用来形容全天使用 Claude 或 Codex 的资深开发者,也被用来形容不了解数据库、只会不断接受模型输出的初学者,还包括认真测试自己工具的非程序员。把三类人放进同一个标签,并不能帮助我们判断他们实际具备什么能力。
有人认为,这种能力其实就是技术产品经理或架构师的工作:定义行为、理解用户、测试结果、发现边界问题。这个判断说对了一部分,但少了过去流程中的最后一层。传统产品经理把需求交给工程团队后,仍要有人将它变成运行中的软件;现在,同一个懂产品和业务的人可能通过自然语言调度实现层,自己完成从需求到部署的闭环。称呼并不是重点,新增的交付能力才是。
老程序员为什么仍然重要
把判断权留在自己手里,并不等于已经具备生产环境需要的全部经验。资深开发者提出的质疑并非没有依据,因为真正的软件工程远不只是让正常流程在本地跑通。
安全、可维护性、身份验证、竞态条件、重试、数据库索引、速率限制、后台任务、CI/CD 和部署,都藏在界面截图看不到的地方。数据库宕机时会怎样?两名用户同时执行同一个操作时会怎样?如果模型写出一段表面合理、实际却存在危险错误的代码,使用者能否识别?
Jansen 写了 30 多年代码,不会因为模型能轻松生成 500 行 Go,就认为软件从此变得简单。AI 让人更快地做出更多软件,也会让人更快地做出更多坏软件。这不是反对 AI 的理由,却是不能忽略的真实代价。
更困难的问题通常出现在第二版。第一版能够运行两年以后,代码可能已经被修改 400 次;新需求开始与旧假设冲突;系统需要迁移数百万行数据;依赖库停止维护;新的模型甚至可能建议拆掉上一个模型推荐的设计。
第一版不是终点
从“生成一个应用”到“维护一个有历史的系统”
白纸上开始
模型可以很快生成界面、功能和数百行代码,正常路径也可能顺利跑通。
历史开始施加压力
- 代码已经修改 400 次
- 新需求撞上旧假设
- 迁移数百万行数据
- 依赖库停止维护
修改不能只看眼前
还要知道旧约定为何存在,并避免修一个问题时破坏用户已经依赖的 15 项功能。
软件会积累历史,而大量复杂度正是由历史产生的。在不破坏人们已经依赖的 15 项功能的前提下修改线上系统,远比在白纸上新建应用困难。资深工程师见过这些问题怎样发生,知道某些看似笨拙的约定为什么存在,也知道一行无辜的修改可能毁掉某个人的周末。这种由生产事故留下的判断力,无法只靠一段提示词获得。
他们最先改变哪类软件
理解这群人会改变什么,必须先区分软件的风险。如果把他们想成取代资深团队、维护一家银行运行 18 年的交易系统,当然不现实。金融、医疗、基础设施、安全敏感系统和大型分布式应用,一旦出错可能伤害用户或造成巨大损失,深度技术理解在这里不是可选项。
但大量软件并不是支付网络、Netflix 或飞机控制系统。它们是表单、数据库、工作流、报表、CRUD、API、通知、业务规则和定时任务。对这些普通软件来说,关键不是能否满足最高等级的架构标准,而是能否可靠地解决它存在的那个问题。
新开发者最先改变的,是过去因为经济上不划算而根本不会被开发的长尾软件。作者举了一个简单的账:专业团队可能为一款定制工具报价 5 万美元,但这个问题对需求者只值 5000 美元。按照过去的商业逻辑,这个项目不会发生。
如果最了解问题的人可以用几个周末做出一个足够好用的版本,这笔账就变了。原文列出的范围很广:内部工具、工作流应用、后台系统、专业计算器、库存工具、WordPress 实用程序、数据导入器、报表看板、垂直行业系统、个人工具、社区应用、小型 SaaS、家庭菜谱系统、工坊里的追踪器,以及只对 300 个人有意义的小应用。
被成本挡住的需求
价值只有 5000 美元,开发却要 5 万美元
当最懂问题的人能用几个周末亲自构建,首先被解锁的是这些小而具体的软件:
内部运转
内部工具 · 工作流应用 · 后台系统 · 库存工具
数据与集成
数据导入器 · 报表看板 · WordPress 实用程序
垂直需求
专业计算器 · 行业系统 · 个人工具 · 社区应用
很小的市场
小型 SaaS · 家庭菜谱 · 工坊追踪器 · 只服务 300 人的应用
“专业程序员一个小时就能重写”并不是有力的反驳。也许他们确实能,但过去并没有人去写;现在,领域专家把它做出来了。
这批长尾软件不会全部成功。有些质量很差,有些六周后就会被放弃,还有些可能意外把数据库暴露到互联网上。做出一个“看起来已经完成”的应用,比理解它下面的一切更容易。但其中也会出现真正有用的工具,因为有时最好的软件不是来自最熟悉编程语言细节的人,而是来自最了解问题的人。
他们怎样在实践中学习工程
当领域专家开始亲自构建这些工具,学习编程的顺序也可能随之改变。
传统路径通常是先学习变量、函数、循环、数据结构、一门语言和某个框架,然后才逐渐进入更大的项目,遇到架构问题。AI 让另一条路径成为可能:先做真正关心的应用,项目遇到什么问题,再去学习解决它需要的知识。
- 需要控制谁能访问系统,于是学习身份验证。
- 需要接收外部服务的事件,于是理解 Webhook。
- 同一件事被处理了两次,于是学习幂等性。
- 数据查询越来越慢,于是研究数据库索引。
- 两个操作同时更新同一状态,于是理解竞态条件。
- 进程在操作中途崩溃,于是开始考虑恢复机制。
学习顺序正在翻转
从“学完再做”到“做着遇阻,再把知识补上”
传统路径先建立知识,再进入项目
- 变量、函数、循环
- 数据结构与编程语言
- 框架与更大的项目
- 最后遇到架构问题
AI 时代的另一条路径先做真实项目,再按问题学习
- 先做真正关心的应用
- 访问控制 → 身份验证
- 重复处理 → 幂等性
- 查询慢 → 索引;并发与崩溃 → 竞态和恢复
关键条件:如果 AI 只给出能跑的答案,却把原理藏起来,项目越往上叠,使用者可能越不了解自己正在维护的系统。
这些概念不再是“未来也许会用到”的课本章节,而是眼前项目无法继续的具体原因。Jansen 说,自己在真正需要某个知识时学得更好;回复中也有人描述了类似经历:通过追问模型、阅读解释、检查代码、破坏实现再修好它,在构建软件的过程中学习架构。
危险也在这里。AI 可以给出一个能够工作的幂等实现,却让使用者没有真正理解幂等性。如果只是不断叠加自己不理解的实现,最后负责的可能是一个几乎无法解释和维护的系统。先做再学能否成为有效路径,取决于使用者有没有继续追问、检查和理解,而不是只要结果暂时能跑。
新的入场券是什么
前面的变化指向同一个结论:AI 没有取消技术门槛,而是改变了最低有效技术能力的位置。
过去,想把一个想法变成软件,首先需要知道如何写出它。现在,一部分人可以把实现交给模型,但自己仍要理解到足以完成这些工作:
- 定义真正要解决的问题,并把它拆成合理的部分;
- 区分好的实现和看似正常、实际有问题的实现;
- 设计测试,检查正常路径之外的结果;
- 让模型留在现有系统的边界内,并调查可疑代码;
- 第一个方案错了以后继续修改,直到软件真正交付。
开始构建所需的技术知识可能减少了,但技术判断变得更重要。能够完成并发布软件,本来就是一项独立能力;许多技术出色的人同样有装满未完成项目的文件夹,AI 并没有替任何人取消最后这段路。
软件开发一直在提高抽象层级。开发者使用框架,而不是自己编写 HTTP 服务器;使用 PostgreSQL,而不是自己实现数据库引擎;参考 Stack Overflow,也不会因此失去开发者身份。AI 可能只是同一方向上跨度更大的一步,它让人可以通过语言接触过去必须亲手完成的实现层。
所以,AI 创造的并不是一种全新的人。具有产品直觉、领域知识、流程理解、逻辑思维和测试能力的人一直存在,过去缺的是把这些能力变成代码的通道。现在他们能够从另一扇门进入,质疑模型、验证结果、不断修改,最后把一个真正可用的应用放到服务器上。
AI 是否催生了一种全新的软件开发者?
拥有 30 多年编程经验的开发者 Lars Jansen 在 X 上发帖,提出一个观察:AI 编程正在催生一种全新的软件开发者。他们不是为缩进争论 15 年的传统程序员,更不是一路点击 Accept 的初学者,而是深谙业务逻辑、能够把需求精准拆解并最终交付可用工具的领域专家。
回复让 Jansen 注意到,这批人不是计算机专业的学生,也不是想靠 AI 冒充资深工程师的新人。他们是长期生活在具体问题里的领域专家:律师、设计师、电影从业者、电商人士和企业主。过去他们被语法与工程预算隔绝在软件世界之外;现在,大模型替他们搬开了这道门槛。
会使用 AI 编程工具,并不会自动让人成为新开发者。真正的分水岭,是判断权留在人手里,还是一起交给了模型。如果将技术判断全盘外包,软件只要在正常路径跑通便万事大吉,就会陷入“氛围编程”(Vibe Coding)的脆弱幻觉;只有将模型当作受控实现工具的人,才是在进行真正的软件构建。
输入“帮我做个类似 Airbnb 的应用”,连续点击 47 次 Accept All。看到本地登录页出现便自认工程师,完全不清楚模型为何这般设计,更不知正常路径之外隐藏何种风险。
以业务边界持续拷打模型,要求为失败路径编写测试,阻止模型盲目重写已可用模块,并对每个可疑改动进行严格质询:
- 同一个请求发送两次会发生什么?
- 为什么要把这段状态放在这里?
- 进程在两个操作之间崩溃,数据怎样恢复?
- 只要求修一个问题,为什么改了三个无关文件?
能不能亲手写出全部代码,不再是唯一分界;能不能发现实现已经跑偏,才是更关键的区别。懂产品与业务流程的人通过自然语言调度实现层,自主完成从需求定义到部署验收的完整闭环。
把判断权留在自己手里,并不等于已经具备生产环境需要的全部经验。资深开发者提出的质疑并非没有依据,因为真正的软件工程远不只是让正常流程在本地跑通。安全、竞态条件、数据库索引、速率限制与 CI/CD 部署,都藏在界面截图看不到的深处。
更困难的问题通常出现在第二版。第一版能够运行两年以后,代码可能已经被修改 400 次;新需求开始与旧假设冲突;系统需要迁移数百万行数据;依赖库停止维护;新的模型甚至可能建议拆掉上一个模型推荐的设计。在不破坏人们已经依赖的 15 项功能的前提下修改线上系统,远比在白纸上新建应用困难得多。
Jansen 提醒:AI 让人更快地做出更多软件,也会让人更快地做出更多坏软件。生产事故沉淀出的工程直觉无法仅靠提示词复刻,敬畏生产环境与系统历史是每位新入局者的必修课。
新开发者绝非去取代维护银行 18 年核心交易系统的资深团队;他们最先改变的,是过去因经济上不划算而根本不会被开发的长尾软件。在传统软件商业逻辑下,定制软件的供需天平往往被高昂的人工工时卡死。
从仓储内部多一个界面每天省半小时,到垂直行业看板、工坊追踪器与只服务 300 人的小应用——过去没有人愿意写,现在领域专家亲手把它造了出来。最好的软件往往不来自最熟悉语言细节的人,而是来自最理解问题本质的人。
伴随自建软件的普及,传统学习编程的先后顺序也发生了根本逆转:不再按部就班从变量、循环与语法学起,而是由真实业务遭遇的工程事故倒逼学习。
AI 没有取消技术门槛,而是改变了技术判断的位置。开始构建所需的手写语法知识减少了,但定义真实问题、辨别可疑实现、设计边界测试与坚持交付结果的能力变得前所未有地重要。具有产品直觉与逻辑思维的人一直存在,现在他们推开了另一扇门,把真正可用的软件推上了服务器。