AI时代的软件工程反思
不为人知的另一面:我既是小说家,也是软件工程师
除了写小说,我的日常工作是软件工程师,和代码打交道。如今的软件行业极度依赖人工智能——AI学习了数万亿行公开源代码,而代码的对错有明确的测试标准,结构又专为计算机理解设计,因此AI写代码的能力已相当出色。
在程序员开始用AI之前,典型的工作流程是这样的:
- 接到需求,要给现有程序新增一个功能
- 撰写正式的功能定义,明确它能做什么、不能做什么,用户如何操作,以及验证功能正常的测试方法
- 调研最合适的数据结构、算法、代码库和外部服务,用于实现这个功能
- 编写功能代码、测试用例(确保功能符合预期),以及文档(指导用户操作,同时让其他工程师了解维护和调试所需的信息)
- 创建「拉取请求」(pull request),请公司内其他工程师评审代码、提出意见,最终批准将代码合并到产品中
现在AI能稳定产出质量不错的代码,软件开发流程变成了这样:
- 写一段提示词,让AI生成新功能
- 评审AI产出的代码,自行修改或让AI按要求调整
- 要么自己把新代码合并到现有代码库,要么创建拉取请求请他人评审合并
过去,创作过程主要在程序员的脑海中完成;现在,程序员则是监督AI内部的创作过程。你需要花心思写出简洁、周全、准确的提示词来启动AI的工作,但不必像自己写代码那样进行深度思考。拿到AI生成的代码后,你的角色更像编辑——AI能写代码,却未必能像你一样把握项目全局,你得确保新代码不会引发问题。
AI不知道自己写的代码是否违反了产品必须遵守的法律规定;不知道调用外部系统的请求需要10毫秒还是10分钟才能完成;不知道这段代码的逻辑会和三周后同事要加的新功能冲突;也不知道它写的函数,和你上个月处理敏感信息的函数交互时,会不会引入新的安全漏洞。
资深开发者却清楚这些,因此他们必须审核甚至修正那些看起来「能用」的AI代码。在资深开发者眼中,AI就像一位能干、高效的初级或中级开发者:只要指令得当,产出的大多是扎实的工作,但缺乏你在二十年职业生涯中积累的行业经验,以及对系统全方位的深度认知。
我们不妨打个比方。假设你是一位历史小说家,你的创作流程大概是这样:
- 想象1760年,两位政治家在伦敦圣保罗大教堂外争论的场景,思考写好这个场景需要了解的细节:服饰、街头氛围、当时的政治局势
- 翻开多本书籍,记录以下内容:
- 根据角色的社会经济地位和身份,他们会穿什么样的衣服?
- 街上还有哪些人?小贩?驾着马车的车夫?他们是什么模样?那个时段扫烟囱的工人会出来吗?还有妓女和执法人员呢?
- 角色争论的核心政治人物是谁?他们当时的立场是什么?
- 近几周或近几个月发生的哪些历史事件与此相关?会如何影响角色的争论?
- 回到写作,把史实融入你用想象构建的场景中
小说家和软件工程师有不少共通之处。实际上,小说家在动笔前会完成大部分历史调研,就像软件工程师凭借多年经验,早已知道哪些数据结构、算法、缓存和数据库适合即将开发的新功能。
两者的共同点是,都对自己创作的内容有深度投入,完全沉浸在工作中,常常忘记时间。无论是写小说还是写代码,我和许多同行都有过这样的经历:看一眼时钟,投入工作,以为只过了十分钟,再看时却发现已经过去了四个小时。
这就是心理学家米哈里·契克森米哈赖(Mihaly Csikszentmihalyi)在1990年的畅销书《心流》(Flow)中描述的「最优体验」状态。作家、程序员、画家、音乐家等所有创意工作者,只要时间和环境允许,都会进入这种状态。很多软件工程师喜欢下班后在家工作,正是因为非工作时间没有会议和其他干扰,能让他们进入心流状态。
现在,我们把历史小说家放到软件工程师的位置上。她接到出版商的电话,说找到了一种方法,能让她每年出版四本书,而不是每两年出一本。出版商雇了一批优秀的高中生和大学生,他们每天能写出五页合格的稿子,成本极低。出版商希望历史小说能保持原作者的水准,至少接近,于是聘请她担任编辑。
小说家的工作变成了编辑学生们的稿子——每个学生都收到了精心设计的写作提示,写出的内容稍作修改就能拼接成连贯的章节。
任何批改过高中生和大学生作业的人都知道,这通常不是什么有成就感的工作。如果你曾一周内批改过一百份作业,就会明白那是多么枯燥乏味的苦差事。
和软件工程师一样,小说家不再深度投入工作。编辑不是创作,你不需要放飞想象力,也不需要全身心投入构思过程,而是要找出问题,修改笨拙的措辞和冗余的描述。心流状态消失了,你成了一个更大流程里的齿轮,这个流程并不重视你的创造力,也不关心你对创作的需求。
更糟糕的是——我自己在连续几个月评审AI生成的代码后深有体会——你的技能会急剧退化。当遇到新问题,比如要实现一个功能,或者修复一个棘手的bug时,想到要花几个小时去解决,你会觉得是种折磨。克劳德(Claude)能在五分钟内定位bug并起草修复方案,我为什么还要费力去啃那些代码?
是啊,为什么要在曾经热爱的事情上耗费精力?现在这件事感觉像个负担,而机器人能替我们完成。
连续几个月使用AI后,至少在编程方面,我明显变得更懒、更迟钝了。(我写小说从不使用AI,因为写作本身就是梳理和澄清自己思路的过程。让机器人替我写,就像花钱请别人替我锻炼,还指望自己能变强壮一样。)
我在工作中也变得更没耐心,尤其是收到同事明显用AI写的邮件时。这些邮件常常让我评审同样由AI撰写的长篇文档,我总会想:「你都懒得自己写,我凭什么要花时间读?」
我确实会用AI回答一些基础问题。比如想了解亚马逊的托管数据库与微软、Digital Ocean的产品对比如何,克劳德的聊天机器人能给出不错的概览,之后我可以再去查阅原始资料获取细节。
但我认为,从长远来看,创意工作者把最具想象力、最能进入心流状态的思考交给机器人,是一个错误。这些AI机器人的所有知识都来自我们——来自我们的代码、白皮书、诗歌、小说、新闻报道、传记,还有成千上万的人凭借多年实战经验写下的Stack Overflow回答。
机器人吞噬了曾经免费的所有数据,现在又把这些知识卖回给我们。现在没人再去Stack Overflow回答问题了,大家都去问克劳德和ChatGPT。像Stack Overflow这样曾经免费、不断积累公开知识的平台正在枯竭,未来AI机器人能用来回答技术问题的「养料」会越来越少。
软件公司解雇了所有初级开发者,因为只要有资深开发者管理,AI机器人的成本更低。但如果没有初级开发者在实践中学习如何解决真正复杂、宏大、深层的问题——那些超出AI能力范围的问题——未来的资深开发者从何而来?五年后谁有资格管理这些机器人?
我说的这些复杂问题,规模大到超出了AI的「上下文窗口」(即AI能处理的问题范围)。你现在无法、也许永远无法让AI完全理解:产品在一百个国家需要遵守的所有法律,产品必须交互的每个相关代码库的细节,构成产品的数百万行代码中嵌入的每条业务规则。而一个由开发者和管理者组成的团队,能够理解并运用这些法律和行业知识。这当然需要投入,成本也很高,但复杂性向来如此。
但如果我们把所有这些工作都交给机器人,谁还会有能力验证机器人产出的结果是否正确?
几年前,我读过一篇文章(现在找不到了[1]),讲美国海军如何说服国会拨款建造一艘他们并不急需的航母。参议员和众议员问:「我们为什么要花钱建这个?」
海军回答:「建造航母的技能是几十年才积累下来的,如果现在不造一艘,十年后我们就会忘了怎么造。」
海军希望那些建造过世界一流航母的资深工程师和工匠,能把技能传授给下一代——这些技能能让美国造出其他国家无法企及的航母。而实现这一点的唯一途径,就是实际去做,让团队走完设计和组装航母的每一步。
国会批准了这个项目,因为尽管我们总抱怨他们效率低下、党派纷争、能力不足,但他们比大多数企业更有远见。他们没有只盯着下一份财报,而是着眼于几十年后的未来。
从大型企业到初创公司,整个软件行业都在把创意工作交给机器人,因为短期收益巨大。既然可以雇四个人,借助克劳德或Codex每年产出十个产品,为什么要雇十个开发者每年只做一个产品?
对管理者和投资者来说,这显然是个胜利,但账单很快就会到期。维护数百万行代码的成本极高,尤其是当没人完全理解这些代码——因为根本没人真正写过它们。修复bug、添加功能、把新技术集成到现有代码中,都是艰巨的工作。这些工作也会交给机器人,长远来看,社会将依赖那些人类既未创造、也不理解的系统。
至于我,曾经是个每天都要腾出不受干扰的时间、深入心流状态的创意开发者,现在软件开发对我来说不再那么有成就感了。我不再完全沉浸在工作中,也不像以前那样能在工作中学习。我回应机器人的代码建议和拉取请求,就像大多数人处理邮件和Slack消息一样——我的工作只是应对,而非创造。
在我的软件工程师生涯接近尾声时,我想到了20世纪中期的工匠们,那些木工和金属匠,他们看着塑料制造业的兴起彻底冲击了自己的工作,却无力也无法恢复。当然,工匠们制作的玩具、工具和乐器,展现出的匠心是工厂生产的塑料产品无法比拟的。但那又如何?对公众来说,「足够好」的塑料玩具就够了。如果六个月后坏了,反正便宜,再买一个就是。
如今,那些数以百万计的塑料产品污染着我们的海洋,太平洋垃圾带的面积已经是法国的三倍[2]。
现在我们的互联网正在走向同样的结局:AI在完成其他有用工作的同时,每天都在制造相当于数百万吨塑料垃圾的数字产物。
虽然编程曾经是一项创意工作,现在却沦为了「看管机器人」的任务,但请记住,在业余时间,你的思想仍是自由的,你可以把精力投入任何喜欢的事情。我仍然尽可能多地写作,每次从心流状态中走出,都感觉从自己内心深处带回了新的东西。那些曾经模糊的想法变得清晰,每一次写作都让我向更高的层次迈进——如果没有写作的练习,那些想法我根本无法表达,甚至根本不会产生。
在选择如何度过时间时,请明智抉择。你的图书馆里有一辈子都读不完的书,你的朋友和家人有着机器人永远无法理解的情感和渴望。当你屏蔽外界的喧嚣,你的大脑依然能够想象、创造,进入心流状态。
去找到它!
[1] 兰德公司(Rand corporation)曾发表论文,讨论海军因技能荒废而失去关键工程能力的问题,《国防新闻》(Defense News)也撰写过相关综述:https://www.defensenews.com/opinion/2024/11/08/the-us-navy-is-at-risk-of-losing-vital-shipbuilding-skills/