在人工智能时代的软件工程反思
2026年6月28日 对于那些不了解的人来说,当我不在写小说时,我的日常工作是作为一名软件工程师,编写代码。如今软件行业在很大程度上依赖于人工智能。因为它研究了数万亿行公开可访问的源代码,因为代码解决了可以测试出对与错的问题,并且代码的结构专门设计成易于计算机理解,所以人工智能在编写代码方面变得非常出色。在程序员开始使用人工智能之前,典型的工作流程看起来是这样的:有人问你给现有程序增加一个功能。你写出该功能的正式定义,描述它应该(和不应该)做什么,用户如何访问它,以及如何测试它是否正常工作。你花时间研究哪些数据结构、算法、代码库和外部服务最适合实现该功能。你编写代码以构建新功能,编写测试以确保它按预期工作,并编写文档告诉用户如何使用该功能,以及告诉其他工程师他们需要知道的维护和调试信息。你创建一个“拉取请求”,请求你所在组织的其他工程师审查并评论你的新代码,最终批准其在产品中的使用。如今,由于人工智能能够持续生成相当好的代码,软件开发者的工作流程看起来是这样的:你写一个提示,要求人工智能创建新功能。你审查人工智能生成的内容,根据需要进行更改或要求人工智能代理为你进行这些更改。你要么将新代码合并到现有代码库中,要么创建一个拉取请求供其他人审查和合并。在旧的工作流程中,创造性过程大多发生在你的脑海中。在新的流程中,你监督着在人工智能内部机制中展开的创造性过程。为了让人工智能开始工作,你在创建一个简洁、深思熟虑且准确的提示上付出了一些努力,但你没有进行通常在自己编写代码时所做的艰难思考。当你从人工智能那里获得代码时,你实际上是在充当编辑,因为虽然人工智能能够编写代码,但它无法像你一样看到项目的全局视角,你需要确保这段新代码不会引起问题。人工智能并不知道它刚添加的代码是否违反了你的产品所受的一些法律要求。它不知道它向外部系统发出的请求是要花十毫秒还是十分钟才能完成。它不知道它的代码的操作是否会与某个新功能发生冲突,而你知道你的队友将在三周后添加那个功能。它不知道它刚编写的函数是否会在与另一个你上个月编写的处理敏感信息的函数交互时引入新的安全问题。资深开发人员知道这些事情,这就是为什么他们需要审核和通常纠正那些看似“只需工作”的人工智能代码。对资深开发人员来说,人工智能是一个称职、高效的初级或中级开发者,在适当的指导下,生成大多数稳健的工作,但缺乏你在过去二十年中积累的制度知识和广泛的系统级知识。现在,让我们退后一步,做个类比。假设你是历史小说作家。你的工作流程看起来如何?可能是这样的:你想象出一个场景,两位政客在1760年的伦敦圣保罗大教堂外争论。你考虑编写这个场景时需要了解的信息,包括衣着、街道氛围和政治局势。你打开几本书,开始记下以下内容等:根据他们的社会经济地位和在社会中的角色,你的角色会穿什么?还有谁和他们在街上?摊贩?马车上的出租车司机?那些看起来怎样?当时是否有扫烟囱的人?妓女和执法人员呢?你的角色争论的主要政治人物是谁,他们此时的立场是什么?最近几周或几个月的哪些历史事件是相关的,它们将如何影响你角色的争论?你回到你的写作,将历史事实编织进你想象中的场景中。小说家与软件开发者在这里有很多相似之处。实际上,小说家在开始写作之前就已经做了大量的历史研究,就像软件开发者从多年的工作中已经知道哪些数据结构和算法,以及哪些类型的缓存和数据库适合他即将编写的新功能一样。这两类工作者共同的特点是对他们创造的材料抱有深刻的参与感。他们完全沉浸于自己的工作中,
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡