# 还有人记得怎么写代码吗？


![](https://leafw-blog-pic.oss-cn-hangzhou.aliyuncs.com/remember-how-to-code-cover.png)

今天在 X 上有个热门的帖子：

> does anyone remember how to code
>
> 还有人记得怎么写代码吗？

这个帖子来自于Nikita Bier，获得了上万次点赞，也引发了大量开发者讨论。

![](https://leafw-blog-pic.oss-cn-hangzhou.aliyuncs.com/screenshot_1793890642.png)

我觉得这句话有意思的地方在于，它用一句玩笑指出了 AI Coding 发展过程中一个真实的矛盾：

我们正在获得前所未有的软件生产能力，同时也可能逐渐失去对软件生产过程的直接掌控。

## 1. AI Coding 正在改变程序员的能力结构

过去，一个程序员的能力很大程度上体现在能否将需求转换成代码。

现在，随着 Coding Agent 的能力提升，越来越多工作可以交给 AI 完成，包括设计数据结构、实现接口、编写测试、排查错误，甚至完成跨模块的重构。

这意味着程序员日常练习的能力正在发生迁移。

以前你可能每天都要手写大量 Java 代码。现在你可能花更多时间描述需求、检查方案、审查 Diff、执行测试。

这里有一个值得警惕的现象：一项技能即使没有完全消失，也会因为使用频率下降而退化。

例如，一个长期依赖 AI 生成 SQL 的开发者，可能仍然理解 SQL 的基本原理，却逐渐失去快速手写复杂查询的熟练度。

但我认为这种技能退化本身还不足以说明 AI Coding 是坏事。我们早就不再要求大多数开发者手写汇编，软件工程也没有因此倒退。

真正需要讨论的是：哪些能力可以交给工具，哪些能力必须由人保留？

## 2. 我更担心的是理解能力的退化

我认为这里存在三个不同层次的能力。

| 能力     | AI 时代的变化            |
| ------ | ------------------- |
| 代码编写能力 | 正在被大量自动化            |
| 代码理解能力 | 仍然重要，但可能受到依赖 AI 的影响 |
| 系统判断能力 | 重要性进一步上升            |

举个例子。

假设你让 Coding Agent 在 Spring Boot 项目里实现一个高并发消息消费模块。

它能够很快生成 Pulsar Consumer、线程池、异常处理以及重试逻辑。

但你仍然需要判断：

- Shared 订阅模式下并发是否合理？
- 消息确认与数据库事务如何协调？
- 重试是否可能造成重复处理？
- 下游数据库出现延迟时会发生什么？
- 发生消费堆积时，系统能否恢复？

AI 可以回答这些问题，甚至给出一套看上去很完整的设计。

但假如开发者已经无法独立判断这些答案是否可靠，那么系统质量就越来越依赖模型的正确率。

这才是我认为最危险的地方。

## 3. 但我也不赞同把手写代码神圣化

这条帖子引起共鸣，很大程度上源于程序员对职业身份变化的不适应。

过去，能够熟练编写复杂代码是一种值得骄傲的专业技能。

现在，一个缺乏多年编程经验的人，也可能通过 AI 快速完成过去需要资深工程师实现的功能。

这种变化很容易让人产生一种感觉：多年积累的技能正在贬值。

但从软件工程的历史来看，抽象层不断提升本来就是常态。

从汇编到高级语言，从手工管理内存到垃圾回收，从直接操作服务器到云平台，每一次进步都减少了开发者需要亲自完成的工作。

因此，我不认为程序员必须坚持手写代码才能保持竞争力。

我甚至认为，如果 AI 能够可靠地完成某项编码工作，坚持人工完成它，未必还有经济意义。

问题在于，当前 AI 的可靠程度还远没有达到可以无条件信任的水平。

## 4. 最值得关注的是未来程序员如何成长

这是我对整个话题最担心的一点。

资深工程师之所以能够判断一个技术方案是否合理，往往来自过去大量亲自实现、调试、踩坑的经验。

如果未来的初级程序员从入行第一天开始，就主要通过 Agent 完成任务，他们将如何积累这些经验？

这可能产生一个长期问题：

当一代程序员不再需要亲自经历复杂系统的构建过程，我们如何培养下一代能够理解复杂系统的人？

当然，AI 也可能成为极好的教学工具，帮助新人理解原本需要多年才能接触的知识。关键取决于工作方式。

如果新人只是不断接受 AI 生成的结果，学习效果可能很差。

如果他们持续验证结果、研究失败原因、理解设计取舍，AI 反而可能加速经验积累。

## 5. 我认为未来会出现两种差距

第一种是人与人之间的差距。

擅长使用 Agent，同时具备扎实工程判断能力的开发者，可能获得远超以往的生产力。

第二种更值得警惕，是开发者所能生产的软件复杂度，与其能够理解的软件复杂度之间的差距。

AI 可以让一个人维护过去需要十个人开发的系统。但如果这个人只能理解其中很小一部分，那么随着系统复杂度不断提高，风险也会累积。

这可能成为 AI 原生软件工程的重要挑战。

### 我的结论

我并不担心未来程序员忘记某些 API 的写法、语言语法，甚至无法在没有 AI 的情况下快速完成一个 CRUD 模块。

我更关心的是，当一个 Agent 提交数千行代码时，开发者是否仍然知道它为什么这么写、哪里可能出错，以及出现问题之后应该如何定位。

未来优秀程序员的核心竞争力，可能越来越体现在能够理解、验证和控制 AI 所生产的复杂系统。

不过我也有一个尚未确定的判断：随着 Coding Agent 进一步发展，今天我们强调的代码审查和人工判断，可能也会在很大程度上自动化。届时，程序员究竟需要理解多少实现细节，仍然是一个开放问题。

所以，我觉得 Nikita Bier 的那句话可以进一步改写成：

> Does anyone still understand the code?
>
> 还有人真正理解这些代码吗？

这可能比“还有人记得怎么写代码吗”更值得讨论。

## 参考资料

- https://x.com/nikitabier/status/2117861636707127422

