夜雨聆风学习资料网

ARTICLE · 986351

AI 时代,程序员还需要读源码吗?

AI 时代,程序员还需要读源码吗?

— 当代码不再稀缺,什么才真正值钱

    以前面试程序员,经常会被问到一个问题:

    "你看过哪些优秀的开源项目源码?"

    Spring、Netty、Redis、MyBatis、JVM、Kafka……工作几年以后,多少都应该能说出几个。那个时候,大家普遍相信:真正的程序员,不能只会调用 API,还得知道这些东西底下到底是怎么工作的。

    所以我们读源码。研究线程池、JVM、网络、数据库、分布式。有时候为了搞明白一个问题,盯着几百行代码看一下午。

因为大家都觉得:

底层能力,决定一个程序员能够走多远。

    但 AI 出现以后,这件事情好像突然变得没那么重要了。现在遇到一个问题,可以问 AI。看不懂一个类,可以让 AI 解释。不知道一个框架怎么实现,可以让 AI 帮你梳理源码。甚至整个 GitHub 项目扔进去,让 AI 给你讲架构。

那么问题来了:AI 时代,我们还需要读源码吗?

❋ ❋ ❋

一、以前不会写代码,很多事情真的做不了

以前的软件开发有一个非常明显的门槛。你得会:

            编程语言框架数据库网络LinuxGit部署

哪怕只是做一个简单的网站,也得先跨过这些门槛。所以过去:代码能力,本身就是产品开发能力的重要组成部分。不会代码,很多事情真的做不了。

于是我们会花大量时间学习:

Java 怎么写 → Spring 怎么用 → MySQL 怎么优化 → Redis 为什么快 → JVM 怎么运行 → Netty 为什么性能高

这些东西不仅仅是为了"会用"。更重要的是:建立自己的技术认知。

❋ ❋ ❋

二、但 AI 正在把这个门槛一点点拆掉

AI 正在拆掉编程的门槛

现在情况完全不一样了。你告诉 AI:

"帮我做一个用户注册系统。"

✅ 可以。已生成完整代码。

"增加验证码。""接 MySQL。""增加后台管理。""帮我部署到服务器。"——它也已经可以参与。

于是一个以前很难想象的事情出现了:

一个不懂编程的人,也可以开始生产大量代码。

    我身边就有一个挺典型的例子。一个做运营的朋友,并不是传统意义上的程序员,但最近一直在用 Claude Code 做产品。有一次聊天,他跟我说:

"我已经用 Claude Code 写了几十万行代码,上线十几个产品了。"

    我当时其实挺震撼。因为按照以前的认知,一个非程序员想做十几个产品,至少得找程序员、找外包,或者自己花几年时间学开发。但现在,他只需要不断告诉 AI "我想要这个功能",然后 "这里不对,改一下",代码就这么一点点长出来了。而且最关键的是:产品真的上线了。

这件事情让我第一次非常强烈地意识到:

AI 可能真的正在改变"会不会写代码"这件事情的意义。

❋ ❋ ❋

三、当代码变得越来越便宜,问题就来了

以前写 1000 行代码,可能意味着你花了一天、两天,甚至更久。现在呢?AI 几秒钟就能生成出来。

以前

1-2 天

1000 行代码

现在

几 秒

AI 生成

    代码已经不是那么稀缺了。甚至只要 Token 足够,一个不会传统编程的人,也可能让 AI 生成成千上万行代码。所以我越来越觉得:

未来真正稀缺的,可能不是"写代码"

而是:理解代码,以及 判断代码

❋ ❋ ❋

四、这也是为什么我重新想到了"读源码"

以前我们读 Spring 源码,是为了知道 Spring 到底是怎么实现的;读 Netty,是为了知道为什么它能做到这么高的性能;读 Redis,是为了知道它为什么这么快。

那个时候,读源码本身就是一种学习编程的方式。但 AI 出现以后,读源码的意义可能正在发生变化。

以前:你不知道怎么实现 → AI 可以告诉你。你看不懂源码 → AI 可以给你解释。你甚至可以让 AI 帮你画整个调用链。

现在真正重要的问题:为什么要这么写?

"知道代码怎么写出来"这件事情,正在变得没那么稀缺。真正重要的问题变成了:为什么要这么写?

❋ ❋ ❋

五、"怎么写"和"为什么这么写",是两种完全不同的能力

比如 AI 给你生成一个缓存系统。代码 3000 行,能运行,测试也通过。但你有没有想过:

    ❓ 为什么这里用 Redis?    ❓ 为什么这里设置这个过期时间?    ❓ 为什么这里需要本地缓存?    ❓ 为什么这里用了消息队列?    ❓ 为什么这里需要分布式锁?    ❓ 为什么这个地方不能直接查数据库?

AI 都可以给你一个答案。但真正的问题是:

这个答案到底适不适合你的系统?

    🚨 比如线上突然出现:

    • CPU 100%    • 数据库连接池耗尽    • Redis 命中率下降    • 接口 RT 从 50ms 变成 2s

    你把问题丢给 AI,它可能给你十个解决方案。但最后还是需要有人判断:到底应该改哪个?

❋ ❋ ❋

六、"能跑"和"真正可用",中间差着一整个软件工程

这可能是我做了十几年开发以后,越来越深的一种感受。能跑的代码,其实很多。真正困难的是:能不能长期跑。

✅ 一个 Demo:能启动 → 能登录 → 能增删改查 → 看起来就已经成功了

⚠️ 但一个真正的生产系统,还要考虑:并发 · 性能 · 稳定性 · 安全 · 数据一致性 · 异常处理 · 监控 · 扩展性 · 容灾 · 成本

这些问题,不是"能不能生成代码"就能解决的。而且系统越大,问题越复杂。

一个小项目,AI 可以帮你从零写出来。但当它变成几十个服务、几百张表、几千万甚至几个亿的数据之后:代码量增加,并不会让系统设计自动变得正确。

代码只是冰山一角,真正的能力藏在水面之下

❋ ❋ ❋

七、所以我反而觉得,AI 会让程序员出现更明显的两极分化

第一类人:

需求 → AI → 代码 → 报错 → 继续问 AI → 继续生成

短期来看,效率可能非常高。一个人真的可以做以前一个小团队才能做的事情。

第二类人:

理解需求 → 设计系统 → 让 AI 生成 → Review → 测试 → 发现问题 → 继续让 AI 修改

这两类人的区别不在于:谁更会用 AI。而在于:谁知道 AI 生成的东西到底对不对。

❋ ❋ ❋

八、这时候,真正的"底层能力"反而可能变得更重要

所以我现在越来越不赞同一种观点:"AI 都能写代码了,还学什么计算机基础?" 恰恰相反。我觉得:AI 越强,底层能力越重要。

但这里的"底层能力",和过去可能有一点区别。

以前的底层能力:数据结构 · 算法 · JVM · 网络 · 操作系统 · 数据库 · 分布式

现在多了一层:系统理解能力

你不一定需要亲手写出一个线程池。但你应该知道线程池解决什么问题。你不一定需要自己实现 Redis。但你应该知道缓存可能带来什么问题。你不一定需要自己写一个 HTTP Server。但你应该知道一次请求到底经历了什么。

AI 可以替你写实现,但很难替你承担最终的判断。

❋ ❋ ❋

九、所以,AI 时代还需要读源码吗?

我的答案还是:需要。

但我不建议再像过去那样:"我要把 Spring 源码全部啃完",然后从第一个类开始,一行一行往下读。这其实没有太大必要。

以后读源码,我觉得反而应该更加"功利"一点:

    ❓ 为什么 Netty 性能这么高?→ 去读。    ❓ Redis 为什么这么快?→ 去读。    ❓ Spring AOP 到底怎么实现?→ 去读。    ❓ 一个 Agent 是怎么工作的?→ 去读。

    带着问题去读,而不是为了证明自己"读过源码"。

❋ ❋ ❋

十、因为真正值得保留的,可能不是"读源码"本身

而是读源码背后的那种能力:面对一个复杂系统,愿意沉下心去理解它。

这件事情,AI 很难完全替代。

✅ AI 可以:搜索 · 总结 · 解释 · 生成 · 重构 · 甚至帮你阅读整个项目

❓ 但最后还是会有一个问题:它说的是真的吗?

你必须有能力判断。而判断从哪里来?来自长期积累的知识,来自大量实践,也来自那些曾经一个人啃过的源码、踩过的坑、排查过的线上事故。

❋ ❋ ❋

十一、我反而觉得,未来程序员最值钱的能力可能变了

以前我们经常讨论:谁写代码最快?以后可能越来越少有人关心这个问题。因为 AI 写得比人快。

未来真正值得比较的是什么?

    💡 谁能提出更好的问题?    💡 谁能设计更合理的系统?    💡 谁能发现 AI 代码里的问题?    💡 谁能判断一个技术方案到底适不适合自己的业务?    💡 谁能在系统出问题的时候找到真正的根因?

以前:想法 → 程序员 → 代码

以后:想法 → 程序员 → AI → 大量代码

代码这一层正在越来越便宜。而:想法、设计、理解、判断、验证——这些东西,反而越来越重要。

❋ ❋ ❋

十二、所以 AI 到底让程序员变强了,还是变弱了?

我觉得两种情况都有。

对于真正懂软件工程的人:

AI 是放大器。以前一天完成一个功能,现在可能一天完成五个。以前一个人只能维护一个项目,现在可能同时推进多个项目。AI 把他的能力放大了。

但对于完全不理解代码的人:

AI 更像一个非常强大的"拐杖"。短期确实可以走得很快。但如果永远不自己走,最终可能连自己为什么摔倒都不知道。

所以我更倾向于认为:AI 会把"能力差距"放大。懂的人,会越来越强。不懂的人,也许可以在短期内看起来很强,但项目越复杂,这个差距越容易暴露出来。

❋ ❋ ❋

十三、代码越来越多,并不等于能力越来越强

这句话可能有点残酷。但我越来越相信:

写了几十万行代码,不等于你拥有了几十万行代码对应的能力。

代码可以由 AI 生成。但系统复杂度不会因此消失。一个人可以在几天之内生成几十万行代码,但他仍然可能不知道:

    ❓ 为什么这么设计?    ❓ 哪里可能出问题?    ❓ 哪个地方是瓶颈?    ❓ 哪个地方不能改?    ❓ 线上为什么会崩?    ❓ 以后怎么扩展?出了问题怎么回滚?

代码生成的速度已经突破了过去的瓶颈。但人的理解能力没有。

━━━━━━━━━

最 后

所以,如果现在再问我:"AI 时代,程序员还应该读源码吗?"

我的答案是:应该。

但不是为了成为一个"源码背诵者"。也不是为了面试的时候能够说:"我读过 Spring、Netty、Redis。" 而是为了训练一种越来越重要的能力:理解复杂系统。

AI 可以帮你写代码,可以帮你读代码,可以帮你解释代码,甚至可以帮你重构代码。但至少现在:它还不能替你承担最终的判断。

未来真正值钱的程序员,可能不是那个:

写代码最快的人。

而是那个:

知道什么时候应该让 AI 写,什么时候不能让 AI 写;知道 AI 给出的代码哪里值得相信,哪里必须怀疑;更知道一个系统为什么应该这样设计,而不是那样设计。

以前:底层能力 = 你能不能自己把代码写出来

现在:底层能力 = 即使代码不是你写的,你仍然能看懂、能判断、能驾驭它

也许这才是 AI 时代,程序员真正应该留下来的东西。

━━━━━━━━━

最后留一个问题

如果现在重新给你三个月时间。你会选择:

A:花三个月认真读一个优秀开源项目的源码。

B:把这三个月全部交给 AI,直接做十个产品?

我现在也没有标准答案。但我越来越觉得:

    AI 可以替我们节省大量"写代码"的时间。但我们不能把省下来的时间,也一起交给 AI。因为那部分时间,可能正是一个程序员真正建立自己能力的时间。

相关学习资料