
面向 AI 编程的时代,还有人在抠技术细节吗?
面向 AI 编程的时代,还有人在抠技术细节吗?
最近有个感觉:身边聊技术细节的人,好像变少了。
以前 Spring 发了新版本,JDK 又改了什么,消息很快就能传到眼前。接着就会有人讨论,这个设计为什么这么改,那个实现到底好在哪里。未必马上用得上,但也愿意凑凑热闹。
现在当然也有更新,只是我周围关于这些东西的讨论,似乎没有以前多了。
想想也能理解,一个不熟悉的配置,一段没写过的代码,问问 AI,通常就有了继续往下做的办法。至于背后为什么这样设计,可以等需要的时候再问。
方便是真的方便,我只是有点好奇:那个“需要的时候”,以后还会经常来吗?
需要先声明的是,这只是我的个人感觉,也许有人正在和 AI 一层层拆解源码,只是没再拿出来聊。以前向同事求助的问题,现在在一个对话窗口里就解决了。公开的讨论少了,不能说明研究的人也少了。
但顺着这个变化想下去,有个问题绕不开:如果不懂一个细节,也不妨碍我把活干完,我还愿不愿意花时间弄懂它?
以前有些技术,是被问题逼着学会的
回头想想,以前肯花时间钻研技术,有多少是出于兴趣,又有多少是因为问题卡在那里,不弄懂就没法往下做?
假设一个配置怎么都不生效,你去找度娘、查文档、翻博客,甚至打断点,顺着调用关系找下去,才发现自己一直弄错了它生效的条件。起初只是想让程序跑起来,绕了一圈,却把原来没打算学的东西也看明白了。
这个过程挺烦,没人愿意为了显得有技术追求,故意多排查两天问题。
不过,对技术的理解,有时就是在解决这些麻烦的过程中慢慢加深的。你试过一个错误的办法,知道它为什么不行,下次碰到相似问题,就会多留个心眼。
如果 AI 直接指出了问题,给出的修改也通过了验证,你就能少走很多弯路。
能省下这些时间当然是好事,但问题解决了,不代表我们也弄懂了它为什么会出问题、又为什么这样改就能解决。我们很容易在代码能跑的时候就停下来,毕竟下一个需求还在等着你。

Anthropic 今年做过一项小实验,让 52 名主要为初级的软件工程师学习一个陌生的 Python 库。AI 组在随后进行的理解测验中,平均成绩低于不用 AI 的那组。但研究也观察到,借助 AI 追问概念、认真理解它给出的解释的人,表现较好 [1]。
这个实验看的是刚学完时的表现,不能据此断言长期使用 AI 会让人退步,也不能说只要多追问就一定学得好。但至少,拿到代码以后,自己究竟懂了多少,还得另说。
以前遇到不会的,可能不得不深入。现在,继续往下看,经常需要自己给一个理由。
产品已经不催你了,报错也没有了,你还想知道为什么吗?
这个理由,恐怕没那么好找。
代码交给 AI,判断力从哪里来?
我们很容易给出一个听起来合理的分工:具体代码交给 AI,人来做判断。
但判断力是怎么来的?
看一眼方案,觉得这里恐怕会有问题,往往需要你对它的运行方式有一些理解。要是自己从来没想过失败会怎样发生,又凭什么知道应该检查哪里?把 AI 的解释再读一遍,也需要判断它是否说得通。
“人负责把关”这句话,说起来很轻松。可如果练习理解和判断的机会越来越少,把关的本事要从哪里补上?
已经有经验的人,可以带着过去的积累使用新工具。刚接触开发的人,则可能一边依赖工具完成工作,一边还在建立自己的认识。这两种处境,不能简单地放在一起讨论。
当然,也没必要因此得出结论,要求每个人回去手写所有东西。记不住参数就查,让 AI 解释看不懂的代码,完全合理。谁也没法弄懂自己用到的全部技术。
我担心的是另一种情况:AI 把问题解决了,自己没太看懂,也就先放着了。过几天再看这段代码,连当时为什么要这么改都说不清。
这会不会影响创新?我不敢直接下结论。
AI 能帮人把原来做不出来的想法变成可运行的东西。一个以前嫌麻烦、觉得不值得试的念头,现在可以花更小的成本验证,说不定就能做出点新东西。
但还有一种创新,起点很小:你看着现有的代码实现,总觉得某一步没必要,某个限制不应该存在。于是试着换个办法。
要产生这种念头,至少得先看进去一点。
比如一个接口慢,先接受加缓存的方案,问题也许就解决了。可如果愿意继续查,还有机会发现其中一次查询根本不用做。两种处理各有适用条件。让我在意的是,在拿到第一个可用方案之后,我们还会不会去找第二种可能。
如果一次次都在这里停下,久而久之,会不会连问题也越来越固定:怎样把它做出来,怎样让它快一点,怎样消掉这个报错?至于原来的设计是否值得保留,反倒很少再问。
AI 可以参与更深入的讨论,可以陪你比较方案,帮你构造反例。只要愿意继续追问,它同样能让研究细节变得容易。

省下来的时间,能留一点给好奇心吗?
所以,接下来还有多少人愿意钻研,恐怕也要看省下来的时间去了哪里。
假如一个需求提前做完,后面立刻排进两个新需求,省下来的时间也就没了。连停下来理解刚刚那段代码,都像是在拖慢进度。
在这样的节奏中,只劝程序员保持好奇心,有点为难人。
我也不想把抠细节说成一种职业道德,按时交付,早点下班,已经很正当。有人喜欢把底层翻明白,有人更关心产品能不能解决问题,各有各的投入。
只是对还想在技术上继续走下去的人来说,我们可能得重新想想,怎样让工作里的学习继续发生。以前被问题卡住,多少会逼着学一点。现在工具替我们解了围,能不能允许自己多花一点时间,把已经解决的问题弄明白?
也不必每次都追到源码最底层,选一个让自己拿不准的地方,看看换个条件会怎样,做个小实验,或者把 AI 的解释和文档对照一下,都可以。
我想把这个问题也留给自己:以后再遇到一份能运行、能交差,却没有完全看懂的代码,能不能先别那么急着结束?
就挑其中一处,问一句:这里为什么要这么写?
至于答案,还是可以问 AI。只是问完以后,试着改掉那一处,看看结果是不是自己想的那样。

