AI 时代,程序员如何自处?
最近,真的很焦虑。
大语言模型的火爆,已经渐渐形成了一个洪流,显然不像是 AlphaGo 出现的时候那样,短暂出圈一下,就渐渐远离了日常生活。那个时候,还停留在特定应用的层面,没有形成什么足以撼动底层生活的杀手级应用。
现在不一样了,ChatGPT 出圈以来,大语言模型就深入了普通人的生活,对话式的应用虽然没有什么巨大的直接价值,已经很大程度上改变了普通人的工作模式。这里,产生最大影响的就是程序员了。
在 Copilot 试用的阶段,我就用上了,那时候,还只是简单的代码补全,当然,补全的内容也很惊人了。然后我用了 Copilot Chat,发现只要提示得当,AI 能快速写出整段完整的片段,可用性也惊人。
从那时候起,我要求整个团队开始自费使用 Copilot,并且开始探索,招聘一些彻底“放弃治疗”全靠写 Prompt 的外包程序员,虽然最后没能落实。但是,当时我已经深刻感受到了威胁。我朋友在苏州,就是组建了这种 Prompt 工程师团队,到西部给国企做外包,程序员工资低到三四千。如果不做点什么,眼前的未来就会被淘汰。
其实,直到这个时候,我还没意识到,问题有多严重。
我一直坚持认为,AI 能生成代码片段,但是不能生成足够复杂的业务,还是需要人去衔接,才能黏合出来巨大的业务。而普通人未经训练,是无法胜任的,可以用 AI 写个贪吃蛇,但是肯定没法做出 ERP。
到我用上 Cursor 后,我再次震惊了,我发现编程方式被 Cursor 更深地改变了,现在写代码,AI 可以高效分析整个 Code Base,然后基于项目全局来生成代码,也不局限于单个文件内,开发体验像简直就像是全程在 Code Review,而我 Review 的速度,甚至比不上 AI 编写的速度,大脑明显过载了。
这时候我的思路是,软件工程,就是在管理复杂度,复杂的业务,数据结构,模块,只有人有这个抽象能力去管理,AI 生成的代码,如果你放任去加入自己的项目,可能原有的抽象会被破坏,最后变得无法维护。而能干这个工作的,当然只有经受长期训练的程序员能干。但是,其实不是每个程序员都能干好,很高层次的管理软件和工程的复杂度的。但是其实这里已经会淘汰很多年资浅的程序员了,他们可能都来不及经受足够训练,就没有工作岗位了。
这时候,我一个前同事,一语惊醒梦中人。我预设了一个前提,就是复杂度需要人来管理,以及软件维护需要人来后期维护。如果不是人呢?我们人类是有管理复杂度的需要的,因为大脑的负担太重,就无法胜任,所以我们发明了各种抽象分层,去管理复杂度,但是这里预设的前提都是使用人类大脑去管理。那么这个前提如果都错了呢?
就好像早上我在 V2 上看到一个帖子,提及 AlphaGo 对战之后,柯洁为什么沮丧,不是输棋了沮丧,而是几十年经受的训练和研究方法,被击穿了。AI 下的棋,用他的知识体系,就根本看不懂,这是全新的思考方式和棋路。那么工程,软件,的组织方式和代码管理方式,根本不是用我们早就知道的“抽象”方法和组织形式呢?后期也不是人肉去进行管理和维护呢?
“小学生,怎么去揣摩大学生的学习内容呢?”
到这时候,我意识到,程序员这个职业危矣!现在大语言模型,感觉最大的应用场景就在搜索、写作两个方面,而写代码,其实也一种写作,而且比自然语言的写作更简单!因为形式语言语法严格,很容易生成完全正确的结果。所以,如果乐观一点,五到十年内,几乎就能完全取代一般的程序员。
太阳底下没有新鲜事,大部分系统都是一些原子的业务,进行的排列组合。所以,不消多久,AI 就可以完全穷举完人类商业活动中的所有代码,那时候,甚至一句话生成整个系统也不是不行。而这种系统是否应该满足适合于人类维护呢?完全没必要,AI 都写出来了,还怕维护么?
这个时候,不难想象,绝大多数程序员就会下岗吧。
我列了这个题目,不是想去提供一个解决方案或者行为准则,只是我的疑问。因为 5 - 10 年后,我还远远没到退休年龄。大概率就要失业了。
当然,我希望我只是危言耸听了。只有时间能有答案。