大家有没有感觉有了 AI 编程能力没变菜,反而变强了

184 天前
 pluvet

一开始也有点担心 AI 会让程序员变笨,代码能力下降,但用了一段时间后,尤其是最近几个月,发现完全不是那么回事。感觉自己的代码能力,反而是不降反增了。

其实挺反直觉的。按理有人帮你写代码,动脑子的地方就少了,能力自然就退化了。但实际是想让 AI 写出 能用 的代码得先把需求描述得清清楚楚。你得精确地告诉它上下文是什么,输入输出是什么,不能有任何歧义,尤其是 3.5 的时代。就逼着你把问题想得更透彻,这种表达能力得到了很好锻炼。以前我容易有个思路就闷头就写,不知不觉现在习惯是先细化列点再写。

而且 AI 生成的代码,你敢直接用吗?反正我不敢。你总得去读去理解它的思路去检查有没有坑。有时候 AI 会用一些你没用过的库,或者一些比较刁钻的写法。这个过程中你就被迫去阅读大量的、不同风格的代码,尤其是写一些系统级的程序。有时候还不得不去看上游代码,修 AI 造的 bug ,看多了感觉阅读代码能力飞升。

另外 AI 的上下文能力是真的捉急。稍微复杂一点的项目是没法把代码全放进去的,更遑论有很多小众外部依赖的情况。比如我最近在搞的 mo 编译器 (moinfra/mo),这东西的编译流程复杂,而且没有用 LLVM ,想让 AI 帮我写个复杂点的 Pass 几乎不可能,因为它完全不知道上下文,只会当成基于 LLVM 写。没办法,只能自己硬着头皮去梳理,把接口、依赖关系梳理清楚,整一个专门的知识库给 AI ,才能让 AI 写点局部的辅助函数。换句话说我需要反复梳理相关的上下文,提取给 AI ,代码阅量++。不过有了 gemnini2.5 感觉这个又变了。

就是 AI 写的代码里有多少 bug 真的无花八门,写点前后端还行,如果是比较冷门的(比如写 ZK ) AI 就会乱编,这种情况它自己基本修复不了这些 bug ,在一个错误的逻辑里反复打转。最后得靠人去 debug ,你去调试 AI 写的代码,往往比调试自己写的代码更费劲,因为它的逻辑可能跟你习惯的完全不一样。这个过程,对你理解代码、定位问题的能力,绝对是高强度的训练。

最有意思是,有些以前没完全搞懂的原理,现在反而因为调试 AI 写的烂代码而搞懂了。就说我那个 mo 编译器里的 LSRA 分配。原理大致知道,但实现细节,特别是 spill code 怎么插,还有多个 interval 的处理一直有点模糊。我让 AI 帮我写了个基础框架,结果 bug 一堆,逻辑硬伤也不少,但大方向的原理是对的。我就对着这个半成品,一点点调,一点点改。在这个过程中,反复琢磨寄存器的分配策略、活跃区间、冲突解决、溢出代码的插入时机和位置……最后,硬是把所有分配细节给彻底搞明白了。这个过程,调试 AI 写的 bug ,反而不断强化了我对底层原理的理解。

现在感觉,写代码的心态也变了。以前很多时间都浪费在查 API 、写各种样板代码、纠结一些语法细节上。这些琐碎的事情,现在大部分可以丢给 AI 。感觉编程这件事情变得更有趣了一点。我能把更多精力放在更宏观的层面,比如算法设计、整体架构的权衡。看代码的速度也快了很多,以前可能要一行一行地看,现在一大段代码扫一眼,基本就能瞟出来它的实现思路和核心逻辑。相比起来,面试还要一个白框手搓代码,筛选的到底是什么人?背诵仙人?

我另一个个人项目,一个大模型客户端 ,几乎全是 AI 开发的,UI 审美比我好多了,大家可以看看自己的组能不能一天内设计出这个水平。这种模式下我基本上不写代码,纯读然后修细节,更专注于功能和架构。对我来说,结论就是这样:AI 没让我变菜,反而让我变强了。

说了这么多其实关键就是,以前是读代码占 6 分,写占 4 分,现在感觉是读占 9 分,写占 1 分。而读代码的重要性一直以来被很多人低估了,读代码真的特别提升理解能力。以前一半时间写初版,一半时间修 bug ,现在基本上除了 C/V 就是修 bug ,也是相当锻炼人。以前一个团队干的活,现在一个人就能搞。遇到别人的大项目也敢去看代码提 PR 了。感觉程序员正在朝更牛逼的工种进化,可能以后反而不会失业?但是分化可能会越来越明显。

10609 次点击
所在节点    程序员
89 条回复
n43635
184 天前
我感觉更多时候会给我提供很多新思路,而不是局限在自己固定思维里硬抠代码,让我觉得还有这种牛逼的方法和骚操作,虽然有些时候是错的,但是也给了很多参考意见
Cooky
184 天前
三个臭皮匠顶一个诸葛亮,一个不靠谱但脾气好的编程助手还是有用的
huguang3320
184 天前
我现在也挺重度依赖 AI ,完成了很多小的功能代码实现,具体怎么组成再由我自己来搭配和修正,效率提高很多,感觉更多是一个好的辅助
reavid
184 天前
如果你能看得懂 AI 写的代码确实会变强的,但有的人连 AI 写的代码都看不懂,就误认为自己变强了。
leofee
184 天前
@MajestySolor 和输入图像验证码一样,为了做标注,人工提高 ai 正确率
yuweiloopy
184 天前
@Hilyson 需要的
cabudad
184 天前
以后淘汰的是不会用 AI 的人
noyidoit
184 天前
所以我很认可 copilot 的命名,因为我真的感觉像是在结对编程
leeggco
184 天前
我感觉是下降了,很多细的东西慢慢会不记得
debuggerx
184 天前
「……强效兴奋剂还有另外一种作用,就是能膨胀人的自信心,感觉自己无所不能,当然这一切都是毒品刺激大脑和中枢神经系统后产生的假象。这种假象非常会欺骗人,让吸食者产生自己并不是在吸毒,而是在使用“良药”……」
4UyQY0ETgHMs77X8
184 天前
面向过程的我可以面向对象了
yidev
184 天前
当然, 有了 ai 我现在什么盲区的都敢动手开始干,感觉自己强的可怕.
10bravoman24
184 天前
感觉不需要上班了
NoOneNoBody
184 天前
学而不思则罔,思而不学则殆
如果把 AI 编程视为一个“学”的过程,就很好理解了,写出来不检查不去理解,单单只为了“完成”,就是“不思”,那菜会变得更菜,经过思考就不同了
1138743695
184 天前
@mumbler 学到了~
sevncy12
183 天前
是有相同的感觉的, 比如方法封装, 抽象类提取, 一些聚合方法都能提供较好的思路并写出来
vipfts
183 天前
羡慕, 我只觉得 AI 夺走了我的工作, 那些工作不认真, 满口浮夸不负责的人会混得越来越好, 成为草台班子的顶梁柱.
kneo
183 天前
只要你肯学,怎么都能学到。
dayudayupao
183 天前
我觉得 grok 好用,他已经帮我完成了完整的 app ,我是做 java 后端的,对桌面端程序开发基础几乎为 0 ,但是靠 grok 完成了第一个商用软件,哈哈哈
DigitaIOcean
183 天前
同感!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1127404

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX