1. 这条判断到底在说什么
黄仁勋在一次公开对话里抛出一个观点:初级开发者所面临的那类问题,会在两年内基本结束。这句话被传播的时候,很多人第一反应是“AI要取代初级程序员了”,但如果你把他近两年的公开表达串起来看,会发现他讲的其实不是“岗位消失”,而是“初级开发者每天要面对的那一类问题,会被工具吃掉”。
这两者差别很大。岗位消失,说的是人没用了;问题结束,说的是那些重复、琐碎、需要大量查文档和试错的环节,不再需要人花那么多时间。就像当年从手写汇编到高级语言,从手动管理内存到垃圾回收,从自己搭服务器到云服务——每一次工具跃迁,消失的都不是“开发者”这个身份,而是开发者身上那些低价值的、机械性的负担。
我自己带过团队,也面试过不少初级开发者。说实话,初级开发者最痛苦的地方,往往不是“不会写代码”,而是卡在一个具体问题上:环境配不起来、报错看不懂、文档翻半天找不到对应版本、改了一个地方另一个地方又崩了。这些问题占据了他们大量时间,也消耗了他们的信心。黄仁勋说的“两年内结束”,指向的正是这一类问题。
所以这篇文章,我想把这条判断背后的逻辑拆开讲清楚:他为什么敢说两年?这个判断成立的前提是什么?对正在学编程的人、刚入行的开发者、以及带团队的人,分别意味着什么?我会结合自己这些年的实操经验,把这件事讲透,而不是停留在“AI好厉害”这种层面。
2. 黄仁勋判断背后的三层逻辑
2.1 第一层:工具已经能覆盖初级开发者的高频问题
要理解这个判断,得先看清楚初级开发者日常到底在解决什么问题。我做过一个粗略的统计,带过的初级开发者,一天八小时里,真正用来“写业务逻辑”的时间可能不到三小时,剩下的时间花在这些地方:
- 环境配置和依赖冲突
- 读懂报错信息并定位问题
- 查某个函数、某个库、某个版本的用法
- 调试一个边界条件
- 理解现有代码的结构和意图
- 写测试、补文档、改格式
这些事情的共同点是:它们有相对明确的答案,而且答案大多存在于公开的文档、社区问答、代码示例里。换句话说,它们是“信息检索+模式匹配”类的问题,而不是“从零创造”类的问题。
而过去两年,工具在这类问题上的进步是肉眼可见的。你给一个报错信息,它能直接告诉你可能的原因和修改方向;你描述一个需求,它能给出可运行的代码骨架;你贴一段看不懂的代码,它能逐行解释意图。这些能力,恰好命中了初级开发者高频问题的核心。
黄仁勋的逻辑起点就在这里:当工具能覆盖掉初级开发者80%的日常问题,那么“初级开发者被这些问题困住”这件事,自然就会结束。注意,结束的是“被问题困住”,不是“初级开发者这个人”。
2.2 第二层:问题的“门槛”在下降,而不是“人”在消失
很多人把这条判断理解成“两年后不需要初级开发者了”,这是误读。更准确的解读是:两年后,初级开发者不再需要花大量时间去解决那些本可以被工具解决的问题。
我举个自己的例子。早些年我带一个新人,他第一次接触某个后端框架,光是让项目在本地跑起来就花了两天。第一天卡在依赖版本冲突,第二天卡在配置文件路径。这两天里,他学到的东西其实很有限,更多是消耗。现在同样的事情,工具可以在几分钟内给出排查路径,他可以把这两天省下来,去理解业务逻辑、去读架构设计、去练习写更复杂的查询。
这就是门槛下降的含义。以前你要先跨过一堆“环境关”“配置关”“报错关”,才能摸到真正的开发工作;现在这些关卡被工具削平了,你可以更早地接触到核心问题。对个人来说,这是好事;对行业来说,这意味着初级开发者能更快地产生价值,也意味着“只会解决配置问题”的人,价值会被压缩。
所以这条判断的另一面是:初级开发者这个群体的定义会变。以前“能独立把项目跑起来、能改改bug”就算初级;以后这个标准会被工具拉高,初级开发者需要更早地具备理解业务、拆解需求、判断方案优劣的能力。
2.3 第三层:两年这个时间点,是工具迭代速度推出来的
为什么是两年,不是五年,也不是十年?这个数字不是拍脑袋来的,它对应的是工具能力的迭代节奏。
我观察过去几轮工具跃迁,有一个规律:当某个能力从“能用”到“好用”,通常需要一到两年。比如代码补全,早期只能补全单个词,后来能补全整行,再后来能根据注释生成整段函数,这个过程中每一步的体验提升都很明显。现在工具已经能处理跨文件、跨模块的上下文,能理解项目结构,能根据报错反推原因。从“能用”到“好用”的窗口,大概就是两年。
黄仁勋作为一线硬件和平台公司的负责人,他对算力供给、模型能力、工具生态的判断,比一般人更贴近实际。他说两年,背后是对这几条曲线交汇点的判断:模型能力够用、算力成本可接受、工具集成到开发流程里足够顺滑。这三件事同时成立的时候,初级开发者的高频问题就会被系统性解决。
当然,两年是个概数,不是精确预言。不同技术栈、不同行业、不同团队,节奏会不一样。但方向是清楚的:工具会越来越深地嵌入开发流程,把那些机械性的问题吃掉。
3. 初级开发者到底在解决什么问题
3.1 把“初级问题”拆开看,才知道哪些会被吃掉
要判断这条观点对自己有没有影响,得先把自己每天解决的问题列出来,然后分类。我习惯把初级开发者的问题分成四类:
| 问题类型 | 典型场景 | 是否容易被工具覆盖 |
|---|---|---|
| 环境与配置 | 依赖冲突、路径错误、版本不匹配 | 非常容易 |
| 语法与API用法 | 某个函数怎么调、某个参数什么意思 | 非常容易 |
| 调试与定位 | 报错看不懂、逻辑不符合预期 | 比较容易 |
| 业务与设计 | 需求怎么拆、模块怎么划分、方案怎么选 | 较难 |
前两类问题,工具现在已经能处理得不错,两年内会处理得更好。第三类问题,工具能给出方向,但最终判断还需要人。第四类问题,工具能提供参考,但决策责任在人。
这个分类的意义在于:如果你每天的时间主要花在前两类问题上,那你的工作内容确实会被大幅压缩;如果你已经开始接触第三、第四类问题,那工具对你来说是助力,不是替代。
3.2 一个真实案例:从两天到两小时
我拿自己团队里的一件事来说明。有个初级开发者要接入一个第三方支付接口,任务是“让支付流程跑通”。他第一天的进展是这样的:
- 上午:读文档,发现文档里的示例代码和当前版本对不上
- 下午:尝试运行示例,报了一个签名错误,查了半天没找到原因
- 晚上:换了一种签名方式,又报了一个参数缺失
第二天他继续折腾,最后发现是某个配置项的默认值在版本升级后变了。整个过程花了将近两天,其中真正有价值的收获,是理解了支付流程的签名机制和回调逻辑,但这两天的绝大部分时间,花在了“找版本差异”和“试错”上。
后来我让另一个开发者做类似的事,他先用工具把报错信息贴进去,工具直接指出“该版本签名算法有变更,需要显式指定”,然后给出了修改位置。他花了两个小时跑通流程,剩下的时间用来研究回调的幂等处理和异常分支。
同样的任务,同样的初级开发者,时间从两天变成两小时。省下来的时间,他用来做更有价值的事。这就是“问题结束”的实际含义:不是问题不存在了,而是解决成本大幅下降。
3.3 被吃掉的是“消耗”,留下的是“判断”
我特别想强调一点:工具吃掉的是消耗性的工作,不是判断性的工作。
什么叫消耗性工作?就是那些你做完之后,除了“终于跑通了”之外,没有太多认知增长的事。比如反复试配置、反复改语法、反复查同一个报错的变体。这些事做多了,人会疲惫,但能力提升有限。
什么叫判断性工作?就是你需要权衡、需要决策、需要为结果负责的事。比如两个方案选哪个、这个边界条件要不要处理、这段代码要不要重构、这个需求要不要拆成两步做。这些事工具可以给建议,但拍板的是你。
黄仁勋的判断,本质上是说:消耗性工作会被工具接管,初级开发者需要更早地进入判断性工作。这对人是更高的要求,但也是更有价值的成长路径。
4. 工具替代的边界在哪里
4.1 工具擅长什么,不擅长什么
我用工具处理过不少开发问题,也踩过一些坑。总结下来,工具的能力边界大概是这样:
工具擅长的:
- 有明确答案的问题,比如语法、API用法、常见报错
- 有大量先例的问题,比如标准流程、常见模式
- 需要快速生成草稿的问题,比如写一个函数骨架、写一段测试
- 需要解释的问题,比如这段代码在做什么、这个报错什么意思
工具不擅长的:
- 需要理解业务上下文的问题,比如这个需求背后的真实意图
- 需要权衡取舍的问题,比如性能、可维护性、开发成本的平衡
- 需要为结果负责的问题,比如这个方案上线后出问题谁承担
- 需要跨团队协调的问题,比如和产品、测试、运维对齐
这个边界不是固定的,会随着工具能力提升而变化。但有一条是稳定的:工具可以帮你做决定,但不能替你承担决定的责任。只要责任在人,判断就在人。
4.2 一个容易踩的坑:过度依赖工具给出的“答案”
我见过一些开发者,用工具用得很顺,但慢慢失去了自己排查问题的能力。具体表现是:遇到报错,第一反应是贴给工具,工具给了一个修改建议,他直接照做,问题解决了,但他不知道为什么要这样改。
这种用法短期效率很高,长期有风险。因为工具给的答案不一定对,尤其是在业务逻辑复杂、上下文不完整的情况下。如果你没有自己的判断力,工具给错了你也看不出来。
我的建议是:把工具当成一个反应很快、知识面很广、但需要你复核的同事。它给的建议,你要过一遍脑子,问自己“为什么是这样”“有没有其他可能”“这个改动会影响什么”。这个过程本身,就是判断力的训练。
4.3 两年后,初级开发者的门槛会变成什么
如果工具真的在两年内把高频问题吃掉,那初级开发者的门槛会重新定义。我推测会变成这样:
- 以前:能配好环境、能改bug、能照着文档接入接口
- 以后:能理解需求、能拆解任务、能判断方案、能验证结果
这个门槛其实更高了,因为它要求你更早地具备“工程思维”,而不是“操作技能”。操作技能可以被工具替代,工程思维需要自己长出来。
对正在学编程的人来说,这意味着学习重点要调整。不要只练“怎么用某个框架”,要练“怎么把一个模糊需求变成可执行的步骤”。不要只背“某个报错怎么解决”,要练“怎么系统性地定位问题”。这些能力,工具帮不了你太多,但会让你在工具时代更有价值。
5. 对正在学编程的人意味着什么
5.1 学习路径要调整:从“学工具”转向“学判断”
我接触过不少自学编程的人,他们的学习路径通常是:学一门语言、学一个框架、做几个项目、背一些面试题。这个路径在以前是有效的,因为企业需要能快速上手干活的人。但在工具越来越强的背景下,这个路径的边际收益在下降。
因为“学语言、学框架”这件事,工具可以帮你加速。你不记得某个语法,工具可以补全;你不熟悉某个库,工具可以给示例。真正拉开差距的,是你能不能判断“这个功能该不该做”“这个方案有没有隐患”“这个需求拆得对不对”。
所以我的建议是:在学习阶段,就有意识地训练判断力。具体做法是,每做完一个功能,问自己几个问题:
- 这个功能的核心逻辑是什么,如果需求变了,哪里需要改
- 这个方案有什么假设,假设不成立会怎样
- 有没有更简单的做法,为什么没选
- 如果数据量涨十倍,哪里会先出问题
这些问题没有标准答案,但思考过程本身,就是在建立工程思维。
5.2 不要和工具比“谁记得多”,要和工具比“谁想得深”
有些开发者会有一种焦虑:工具知道那么多,我背那么多语法和API还有什么用?我的看法是,不要和工具比记忆,那是它的强项。你要和它比的是:在信息不完整、需求模糊、约束复杂的情况下,谁能做出更好的判断。
举个例子。工具可以告诉你“这个功能可以用三种方式实现”,但它不知道你们团队的代码规范、不知道这个模块的历史包袱、不知道上线时间有多紧。这些信息在你脑子里,你的判断就比工具更贴合实际。
所以,学编程的时候,不要只满足于“跑通了”,要多问“为什么这样设计”“有没有更好的方式”。这些思考,才是工具替代不了的部分。
5.3 一个实操建议:用工具当陪练,而不是当答案
我自己用工具的方式,是把它当陪练。具体来说:
- 遇到问题,先自己想十分钟,列出可能的原因和排查方向
- 然后问工具,看它的思路和我的有什么不同
- 如果它给了答案,我不直接抄,而是先理解为什么
- 如果它给错了,我记录下它错在哪里,下次注意
这个用法,效率可能比直接抄答案低一点,但长期来看,我的排查能力和判断能力在提升。工具越强,这种能力越值钱。
6. 对刚入行的开发者意味着什么
6.1 前两年是黄金期,但黄金期的内容变了
刚入行的前两年,通常被认为是打基础的黄金期。以前这个基础,很大一部分是“熟练度”:熟练使用某个框架、熟练处理某类报错、熟练写某类代码。现在这个基础的定义在变,熟练度的重要性在下降,理解力的重要性在上升。
我观察团队里的新人,进步快的往往不是“手速快”的,而是“想得清楚”的。他们可能写代码不快,但他们知道为什么要这样写,知道哪里可能出问题,知道怎么验证。这种人在工具时代会更吃香,因为工具帮他们省掉了操作时间,他们的思考时间更多了。
所以,如果你刚入行,不要把时间全花在“多写代码”上,要留出时间“多想代码”。写完之后,回头看看,问自己几个问题:这段代码的核心逻辑是什么、边界条件处理了吗、如果出问题怎么排查。这些反思,比多写一百行代码更有价值。
6.2 主动接触“工具处理不了”的问题
工具能处理的问题,你花时间在上面,收益会越来越低。所以,要主动往工具处理不了的方向走。哪些方向是工具处理不了的?
- 需求分析和拆解:把模糊的需求变成清晰的步骤
- 方案设计和权衡:在多个选项里选一个,并为选择负责
- 跨模块协调:理解不同模块的关系,协调改动
- 线上问题排查:在信息不完整的情况下定位根因
- 性能优化:找到瓶颈,判断优化收益
这些问题,工具可以辅助,但主导的是人。你越早接触这些问题,成长越快。
6.3 一个容易被忽略的能力:验证
工具给的答案,需要验证。验证能力,是工具时代最被低估的能力之一。
什么叫验证?就是工具说“这样改可以”,你要能判断“真的可以吗”。验证的方式有很多:跑测试、看日志、对比预期、检查边界。这些动作看起来简单,但做得好的人不多。
我见过一些开发者,工具给了修改建议,他直接提交,结果线上出问题。原因是他没有验证,没有考虑这个改动在其他场景下的影响。这种问题,工具不会提醒你,因为它不知道你的完整上下文。
所以,刚入行的时候,就要养成验证的习惯。任何改动,都要问自己:怎么证明它是对的?怎么证明它没有破坏其他东西?这个习惯,会让你在工具时代走得更稳。
7. 对带团队的人意味着什么
7.1 培养重点要调整:从“教操作”转向“教思考”
如果你带团队,这条判断对你的影响是:培养新人的方式要变。以前你可以让新人先做简单的任务,比如改改bug、配配环境、接接接口,通过这些任务熟悉流程。现在这些任务会被工具加速,新人花在上面的时间会减少,你需要更早地让他们接触需要思考的任务。
我的做法是,给新人任务的时候,不只说“做什么”,还说“为什么做”。比如,不只说“把这个接口接一下”,还说“这个接口是给谁用的、解决什么问题、如果出问题会影响谁”。这样新人做的时候,会带着上下文思考,而不是机械执行。
另外,要鼓励新人提问。工具时代,新人容易陷入“工具给了答案就不问了”的状态。你要主动问他们:为什么这样改、有没有其他方案、如果需求变了怎么办。这些问题,会逼着他们思考。
7.2 任务分配要变:把消耗性任务交给工具,把判断性任务留给人
带团队的人,可以重新审视一下任务分配。那些消耗性的任务,比如环境配置、简单bug修复、格式调整,可以更多地借助工具,把人的时间省下来,用在判断性任务上。
判断性任务包括:需求评审、方案设计、代码审查、线上排查、性能优化。这些任务,工具可以辅助,但需要人主导。把人的时间往这些任务上倾斜,团队的整体产出会更高。
当然,这需要你判断哪些任务是消耗性的,哪些是判断性的。一个简单的标准是:这个任务做完之后,执行的人除了“完成了”之外,有没有认知增长。如果没有,就是消耗性的,可以考虑用工具加速。
7.3 一个实操建议:建立团队的“问题库”
我带团队的时候,会维护一个“问题库”,记录团队遇到过的问题、排查过程、解决方法。以前这个库主要靠人写,现在可以用工具辅助整理。但关键是,这个库不只是记录“怎么解决”,还要记录“为什么这样解决”“当时考虑了哪些因素”。
这样,新人遇到类似问题时,不只是拿到一个答案,还能看到背后的思考过程。这个思考过程,才是工具替代不了的。
8. 常见疑问与我的看法
8.1 “两年内结束”是不是太乐观了
有人觉得两年太短,因为工具现在还有很多问题:会编造答案、会忽略上下文、会在复杂场景下出错。这些问题是真实存在的,我也遇到过。
但要注意,黄仁勋说的不是“问题被完美解决”,而是“问题结束”。这两个不一样。问题结束,可以理解为“问题不再是主要矛盾”。就像现在的开发者,很少需要手动管理内存,但内存问题并没有“完美解决”,只是不再是日常主要矛盾了。
工具现在确实会出错,但它的迭代速度很快。两年内,它在初级开发者高频问题上的准确率,大概率会提升到“可以依赖”的程度。到那时候,初级开发者遇到这类问题,第一反应是问工具,而不是自己从头查。这就是“结束”的含义。
8.2 初级开发者会不会因此更难找工作
这个问题要分两面看。一方面,如果企业只需要“能解决配置问题、能改简单bug”的人,那这类岗位的需求会减少,因为工具能做了。另一方面,如果企业需要“能理解业务、能拆解需求、能判断方案”的人,那这类岗位的需求会增加,因为工具帮人省下了时间,人可以做更多判断性工作。
所以,不是“初级开发者更难找工作”,而是“只会做消耗性工作的初级开发者更难找工作”。如果你在入行初期就注重培养判断力,你的竞争力不会下降,反而会上升。
8.3 工具会不会让开发者变懒
工具本身是中性的,它放大的是你原本的习惯。如果你原本就喜欢思考,工具会让你思考得更快;如果你原本就习惯抄答案,工具会让你抄得更顺。
我见过用工具用得很好的开发者,他们用工具加速消耗性工作,把省下的时间用来深入理解系统和业务。我也见过用工具用得很差的开发者,他们用工具跳过思考,结果遇到工具处理不了的问题就卡住。
所以,关键不是工具,是你怎么用工具。我的建议是,把工具当成一个加速器,而不是一个替代品。加速的是你的操作,替代不了的是你的判断。
9. 我自己的实操心得
9.1 把工具嵌入工作流,而不是当成外挂
我用工具的方式,是把它嵌入日常工作流。具体来说:
- 写代码前,用工具梳理思路,列出可能的方案和风险
- 写代码时,用工具补全和检查,但不直接抄
- 写代码后,用工具审查,看有没有遗漏的边界和隐患
- 遇到问题时,用工具辅助定位,但自己验证根因
这个流程的关键是,工具在每个环节都参与,但每个环节的决策权在我。这样既享受了工具的加速,又保持了判断力。
9.2 定期做“无工具练习”,保持基本功
工具用多了,容易产生依赖。为了保持基本功,我会定期做“无工具练习”:关掉补全和提示,自己从头写一段代码,自己排查一个问题。这个过程会慢一些,但能让我保持对基础知识的敏感度。
这个习惯,我推荐给所有依赖工具的开发者。工具越强,越要保持自己的基本功,因为工具出问题的时候,你得能顶上。
9.3 把省下来的时间,投资在“工具不会的事”上
工具帮我省下了大量时间,这些时间我用来做工具不会的事:读业务文档、和产品聊天、研究系统架构、复盘线上问题。这些事看起来不直接产生代码,但它们决定了代码的方向和质量。
如果你用工具省下了时间,却把这些时间用来刷更多工具能做的事,那就浪费了工具的价值。省下来的时间,要投资在判断力、理解力、协调力上,这些才是工具时代真正稀缺的能力。
10. 最后再分享一个小技巧
如果你想知道这条判断对你有没有影响,可以做一个小实验:记录你一周的工作时间,把每件事按“消耗性”和“判断性”分类。如果消耗性占了大头,那你要警惕,因为这部分正在被工具吃掉;如果判断性占了大头,那你可以放心,工具是你的助力。
这个实验很简单,但能让你看清自己的时间花在哪里。看清之后,你就能决定,是把时间继续花在消耗性工作上,还是主动往判断性工作迁移。
我自己的经验是,越早往判断性工作迁移,成长越快。工具不会等你,但你可以选择跑在工具前面。