跟朋友讨论了一下 ChatGPT 大规模取代码农工作的前景。以下是大致的讨论纪要。谁是谁不太重要,用AB代替。这是个没有结论的讨论。
A:所以你觉得 ChatGPT 会导致程序员大规模失业?
B:我觉得这个可能性是真实存在的。
A:但你觉得今天的程序员的职业行为的智能水平 ChatGPT 真能胜任吗?
B:不是这么算的,它不需要取代一整个程序员。它只要能让每个程序员节省10%的工作量,那整体换算下来就可以节省10%的 head count。
A:但你怎么节省10%的工作量呢?咱们不讨论什么遥远的未来,就说今天,你用ChatGPT能替代哪些工作?我承认它可以帮着写写 review 之类,但……
B:不我说的不是那个,那些当然可以,但不是本质问题。我是说真正的程序员的实质工作。
A:但这里的问题在于,你可以让 ChatGPT 写个排序算法什么的,但你也知道我们日常的工作不是这样的,没人在工作中写那种孤立的面试题。你每天的工作总是要和你的业务 context 紧密相关,ChatGPT 哪来这些 context?
B:对,这里我们得做一个基本假设。今天这个版本的 ChatGPT 确实不行,因为你每个 talk session 都是孤立的。但如果我们要真的讨论它的大规模应用,我们肯定不会站在今天这个版本上说话,首先全世界大大小小的软件公司都把内部业务逻辑发给微软就不可能。所以我们得假设每个公司有自己的 on-premise ChatGPT,就像私有云一样。
A:但你这个私有 ChatGPT 又怎么得到业务的 context 信息呢?
B:既然是私有的,你就让它把你的公司的全体代码读一遍呗,反复读,如果有必要全公司的 design docs 也可以给它读……
A:然后它就能跟你顺利沟通了?我还是无法想象这件事,咱们举个具体的例子,比如我今天要给 APP 的 UI 做个更改,你怎么告诉它这件事?这个更改不是只是改改颜色,它要从 API 里读不同的字段,要调用已有的库……
B:你就把你对我说的这些话对它说一遍啊。这里的关键在于,你当然不能假设 ChatGPT 每次都要从头理解起。那当然太困难了,这就是我说的 on-premise 的意思,它既然住在你的公司里,你上面所说的所有这些请求的上下文它都已经了解了才对。就像你今天问 ChatGPT 红烧肉怎么做,你并不需要每次从零解释什么是肉,什么是锅,这是它已经掌握了的背景知识。放在公司里,那你现有的 API 的每个字段的意思就是肉和锅的意思。
A:但你还是要把这个问题解释给它对不对,会不会你解释花的时间比你自己写的时间还长?我的意思是说,我们工作里面对的真实问题一定能拆开然后给它解释清楚吗?
B:但你这个问题对人也是存在的啊,公司里的 L5 要招 L3,还要招 intern,你不是也要给他们解释?
A:你觉得 ChatGPT 的水平真的能顶一个 L3?咱们不说做面试题那种,我们都知道那个华而不实,我是说真实工作。
B:就算顶不了 L3,能不能顶一个 L1?我知道现实中没人招 L1,不存在这种岗,因为不值得费那个劲,但那是因为活人不管再怎么笨也挺贵的。但我现在告诉你这世界上存在一种 L1 员工,不吃不喝不用医保,每个月工资20块钱,你招不招?
A:所以我们的基本分歧是,你相信一个 L5 的工作里有一些是可以拆出去给 L1 做的,并且这个拆分过程本身不太费劲?
B:那我换个方式说,一个 L5 一周的工作需要的智能肯定不是平均分配的对吧,你挑出最容易的那10%可不可以?我们都有经验,你一周里总有10%的时间是会觉得我这是在干啥我这是浪费生命。你把这10%拿出来,你反正本来也会把这些事情交给实习生,你转而交给 ChatGPT……
A:但我交给实习生是因为我可以告诉他,你这个代码要保证可重用,要和公司已有规范相容,要容易维护,代码不是只要能跑通就可以啊。
B:但你说的这些难道不正好是 ChatGPT 的长项?你找十个实习生,你还得告诉他们彼此怎么配合,你还得每天早上 daily sync,你还得叮嘱他们别重复发明轮子。你找十个 ChatGPT 他们自己就协调好了。
A:我还是觉得这里引入的麻烦比能节省的时间更多。
B:那是因为我们是第一代人。当年人们刚开始在工作里引入电脑的时候也很抱怨啊,明明纸文件很好用,现在我还得学打字,学怎么开电脑。这些学习成本对第一代转型期总是最高的。
A:但就算不考虑这些一次性的学习,你还是要每天琢磨怎么把问题拆给 ChatGPT 来做。我觉得我和你的基本分歧在于,我不相信 ChatGPT 的智能已经高到了让我乐意把问题拆给它的程度。
B:不,我们的基本分歧在于,你不同意这世界上绝大多数程序员,不是说硅谷大厂程序员,是占程序员总数绝大比例的中小企业的程序员,那个分布的长尾,他们的日常工作里很大一部分的智能浓度事实上有多低。