从事程式设计工作12年,最近半年,我开始大量使用AI写程式。
令我吃惊的是,我发现自己的开发能力好像退步了。
所以今天想跟大家分享,工程师在用AI辅助工作时的一些注意事项。
## 时间分配的变化与建议
首先是时间分配的建议。以前工程师上班时,我认为可以分成四种状态:学习、实验、产
出和摸鱼。
这四种状态的比例大约是3比3比3比1。
但现在有了像 chatgpt 和 github copilot 这样的工具后,这比例有时会变成1比1比1比
7,运气不好时可能是2比2比2比4。
也就是说,工程师上班可以摸鱼的时间大幅增加,因为事情很快就做完了。
我的建议是,可以随意调整实验、产出和摸鱼的时间,但学习的时间最好保持不变。
不然会感觉不踏实。久而久之,应该真的会变废物、会失业。
## 抽象第一定律
在程式设计中,有一条称为 抽象第一定律(First Law of Abstraction)的法则。
这条规则指出,在程式设计中,我们经常透过简化来让事物更容易使用。例如,当你建立
一个套件或框架时,使用者无需了解所有细节即可使用它。然而,抽象虽然能减少工作时
间,却无法减少学习时间。
想像一个初学者学习网页开发,他可能很开心地用 Vue 写出一些动态效果,却不太理解
其背后原理。但随着学习的深入,他终究会遇到无法解决的问题,而这时就需要理解 DOM
(文件物件模型)、虚拟 DOM 以及 状态管理 等基础概念。
后端开发也是如此。初学者可能会使用 ORM(物件关联对映) 来轻松与数据库互动。然
而,当遇到效能问题或需要执行复杂查询时,他们仍然需要学习 SQL。
再举一个例子,当刚开始接触后端部署时,有些人可能会使用现成的 Docker 映像档 快
速部署服务。但当需要调整设定时,他们仍然得学习 Nginx、Linux、网络架构,甚至资
料库管理。
在软件开发领域,AI 就像是一个巨大的抽象层。它能大幅减少工作时间,但却无法缩短
学习时间。
如果你完全依赖 AI 而跳过学习过程,短时间内或许能产出许多成果,但长期来看,你的
学习成长可能比过去依赖论坛和 Google 搜寻还要少。
## 询问研究员类型的问题
我的建议是,虽然我们要维持学习阶段的时间,但学习的方向不再是去学用法/语法,而
是去学更深的工程思维、设计哲学。我的建议是多提问研究员类型的问题。举三个例子:
第一,当你碰到一个API、一个套件或框架,有黑箱感觉时,问AI:这个东西底层如何运
作?是用什么方式实作的?能否提供原始码连结?
第二,如果你觉得某个套件、API 的设计怪异,问AI:为何这样设计?
第三,看到某些设计让你不满意时,问AI:这样设计是否有缺点,并指出你认为不好的地
方,问AI有什么想法?
这三种问题通常能获得AI很好的回复,而这类型问题,以前在 Google 或论坛上很难找到
答案,查询也非常耗时。
在AI时代,这些问题可以快速解决。因此,我们的心态要转变成像研究员一样,研究底层
设计思维和哲学,而不是仅仅写出程式码。现在依靠AI可以快速完成程式码,我们应该更
深入地学习。
## 结论
我认为软件工程师/程式开发者的定义已经改变了。
以前的开发者更像是各种套件和工具的使用者,花大量时间在实验和理解这些工具的使用
方式,然后将成果交付。
然而,若现在仍只停留在这个阶段,几年内很快就会被淘汰,这是残酷的现实。
因此,我们应该自诩为研究员,各行各业皆如此。
AI的出现使我们需要思考哪些事情有意义,哪些事是AI不便处理而需人类完成的。
我们应该持续思考并问对问题。研究员类型的问题能帮助我们学习,也是现代工程师应多
发问之处。
我之前举了三种情况:遇到黑箱、怪异情况、不服气时,可以提出有价值的问题作为范例
供大家参考。
身为工程师,你认为还有哪些你常常询问 AI、你觉得很有价值的发问方式?
欢迎大家一起推文交流一下,谢谢。
作者: lchcoding 2025-02-23 12:38:00
想请问-抽象第一定律出处在哪?我转职门外汉
作者:
MoonCode (MoonCode)
2025-02-23 14:10:00蛤
作者:
Obama19 (^_^)
2025-02-23 14:27:00听君一席话如听一席话
对我来说从 可以这样做->为什么这样做 不论是不是用AI 都会经历 但问AI有时候比较快 有时候他是错的
作者:
prag222 (prag)
2025-02-23 14:56:00用过deepseek跟ChatGPT比较没?
作者:
Tix (Sean Chen)
2025-02-23 15:17:00说得很棒,感谢分享!
作者:
hegemon (hegemon)
2025-02-23 15:18:00真的不用浪费时间写这篇文章
作者: hobnob (hobnob) 2025-02-23 16:47:00
总觉得没有十几年经验的那种气势,好人好事代表
作者: c8dog (草莓猪乌梅猪百香狗) 2025-02-23 17:10:00
ㄜ … 该不会最近才知道要用 AI 辅助吧?好的,我有看到开头的“最近半年”了
作者:
StrangeJ (两光男孩....)
2025-02-23 17:24:00我觉得这篇文章没什么大问题 帮补血
作者:
ck960785 (Metal 0-4)
2025-02-23 17:38:00我主管看到这种用ai味太重的文字会直接开骂
作者:
kkes0001 (kkes0308)
2025-02-23 18:52:00真的有点废话
查不到有什么叫 first law of abstraction根据原po说的应该是 the law of leaky abstractions想提醒的是如果问ai难以查到的事 要小心它瞎掰内容给你自己求证还是必要的
作者:
hwChang (聪明是天赋 善良是选择)
2025-02-23 20:44:00除了缩短产出时间,我觉得最大的优点,是它可以有系统地整理出我想要的资讯,以及更深入地讨论问题,对我来说非常有帮助。我是用付费的 ChatGPT
作者: WTS2accuracy (宝钟海贼団の一味) 2025-02-23 21:35:00
看描述真的像10y经验1y技术力的CRUD老人 XD
作者:
pttano (pttano)
2025-02-23 21:50:00哈哈
作者: bryandick (bryandick) 2025-02-24 00:28:00
用时间分配的角度切入非常棒 ,要不要喝个咖啡聊聊天
作者:
jobintan (Robin Artemstein)
2025-02-24 07:57:00说下最近听说过的故事,以前PM要实现某个东西时,得去对SDE低声下气,现在有了AI,就再也不用看SDE的脸色了。
作者:
MoonCode (MoonCode)
2025-02-24 10:42:00楼上这个笑死 立刻开 github 权限给 pk
作者: wade2432 (wade2432) 2025-02-24 11:22:00
不用看脸色是把sde都开除了,全靠ai自己开发吗?不是的话你大概听到一个吹牛大王在说故事
作者: ricky60324 2025-02-24 14:39:00
软工要做pm的事情更简单吧… 要不要做而已
作者: aria0520 (紫) 2025-02-24 23:40:00
常常rd做到最后还是要自兼pm 毕竟骂也是骂rd
作者: pkpk10654 (秋水浮萍) 2025-02-25 10:56:00
我以为PM最难的部分是做人
作者:
rexyeah (ccccccc)
2025-02-25 22:18:00Google速度变短而已吧,之前花1小时Google, 复制贴上,现在1分钟。
作者: aria0520 (紫) 2025-02-26 00:33:00
可以这样说XD 还有泡在stackoverflow上的时间减少了
作者:
yam276 ('_')
2025-02-26 14:22:00这篇也是AI写的吗
作者:
MyNion (Nion Lee)
2025-02-26 15:08:00这篇文没那么糟吧,在座的工程师怎么都那么不友善
作者:
hth9494 (hth9494)
2025-02-26 19:11:00AI对我的帮助就是告诉我Unknown unknown的关键字