有时候刷朋友圈并不是一件特别健康的事情。
尤其是当你发现:
有人暑假打了两个比赛。
两个国一。
而你打开自己的电脑:
make[1]: *** Error 1
那一刻确实很难不怀疑自己。
我也经常会想:
别人是不是已经领先太多了?
我现在学这些东西到底有没有用?
AI 发展这么快,以后程序员还剩下什么?
如果几年之后 Agent 已经能自己写完整项目,那我现在辛辛苦苦学操作系统、编译、数据库还有什么意义?
这种焦虑其实持续过很长一段时间。
尤其是现在 AI 的能力越来越强。
很多以前需要程序员花几个小时写的代码,现在模型几十秒就能生成。
甚至调试、写测试、读代码这些事情,AI 也开始越来越擅长。
于是一个很自然的问题出现了:
我为什么还要学这些?
后来我慢慢改变了这个问题。
以前我问:
AI 会不会取代程序员?
现在我更喜欢问:
如果 AI 可以写代码,那什么能力会变得更加重要?
我现在暂时得到的答案是:
理解系统。
AI 可以帮我写一段 RISC-V 指令实现。
但如果我不知道:
立即数是怎么编码的,
符号扩展为什么存在,
PC 为什么这样更新,
jal 和 jalr 有什么区别,
那么即使测试通过,我依然什么都没有学到。
同样。
AI 可以帮我写一个 Redis 排行榜。
可以写一个 Gin Handler。
可以写一个 PyTorch 网络。
甚至可以帮我实现一个简单的操作系统模块。
但如果所有东西对我来说都是黑盒,
那我其实只是一个 AI 的复制粘贴接口。
这不是我希望成为的工程师。
我开始意识到:
未来真正有价值的能力可能不是:
“我一分钟能写多少行代码。”
而是:
我能不能判断这段代码对不对。
我能不能定位一个诡异的性能问题。
我能不能理解一个复杂系统为什么会出现瓶颈。
我能不能设计一个新的系统。
我能不能在没有现成答案的时候继续往下走。
所以最近我开始接受一件事情。
我的成长可能没有别人那么容易被展示出来。
比赛成绩很好展示。
国一很好展示。
奖学金很好展示。
论文很好展示。
但很多东西很难展示。
比如第一次真正理解 ELF。
第一次看懂 .symtab 和 .strtab。
第一次理解函数调用为什么能返回。
第一次自己实现 DiffTest。
第一次看懂一个大型项目的 Makefile。
第一次发现自己可以顺着一个 bug 一层一层追下去。
这些东西不会出现在朋友圈。
但它们确实改变了我理解计算机的方式。
我当然还是会羡慕那些很厉害的人。
看到别人取得成绩,也还是会焦虑。
但我现在不太想因为这种焦虑随便改变方向了。
因为如果每天都追着”现在最厉害的人在做什么”跑,
最后很可能什么都学不深。
现在我更愿意做一件有点慢的事情:
继续写我的 NEMU。
继续学操作系统。
继续学分布式。
继续研究 AI Infra。
继续把那些以前觉得神秘的东西拆开。
也许几年以后再回头看,
真正让我走得更远的,
不是某一个暑假的两个奖。
而是我终于开始真正理解:
计算机到底是怎么工作的。