ARTICLE · 1299064
软件开发正在变得越来越像做Research
发布时间:2026-11-03 02:06:43 最近访问:2026-11-03 02:06:46
软件开发正在变得越来越像做Research
随着软件研发自动化程度不断提高,人类正在成为整个研发流程中带宽最低、速度最慢的环节。人类不可能长期逐行理解、审查和批准 AI 生成的每一处代码,因此必然逐步从高频执行环节中被优化出去。这并非简单的工具升级,而是从传统机器学习、深度学习到以 LLM 为基础的通用智能体不断演进的必然趋势。这与 Rich Sutton 在《The Bitter Lesson》中提出的观点高度一致:长期来看,能够利用计算规模化扩展的一般方法,往往胜过依赖人类预先注入知识的专门方法。在这一趋势下,代码正在变得越来越不可读。不是 AI 写得不好,而是代码规模和迭代速度已经超出人类完整理解和 Review 的能力。代码逐渐有点像神经网络的参数:决定系统行为,却不再适合通过逐一检查来理解和证明系统的正确性。当代码无法再被人类完整理解时,软件工程就必须从依赖阅读代码,转向依赖 Specification、Evaluation 和 Evidence。这也是为什么我认为,AI 正在推动软件工程从 Code-centric Engineering 走向 Research-driven Engineering。
一、根因:AI 改变了软件研发的不确定性结构
传统软件工程的基本假设是:人类理解问题、设计方案并编写代码,测试负责验证实现。AI Coding 改变了这个过程。代码生成成本大幅下降,但生成结果并不天然正确。即使需求明确、技术方案成熟,AI 仍然可能生成存在逻辑缺陷、并发问题、安全漏洞或架构隐患的代码。 | | |
|---|
| | |
| | |
| Implementation Uncertainty | | |
传统软件研发主要依赖工程师的专业能力来控制这三种不确定性。AI 时代,前两种不确定性并没有消失,但第三种不确定性变得更加突出:即使问题和方案都已经明确,AI 生成的代码仍然需要独立验证。Routine Development 并不意味着不需要 Research,也不意味着不需要 Eval。它只是探索未知的成本较低,但实现仍然需要验证。软件研发的核心活动正在从单纯的代码生产,转向问题定义、方案探索、实现生成和结果验证。
二、有趣的对照:Research、Machine Learning 与 Software Engineering
科学研究的核心是发现未知、形成可信知识;机器学习的核心是从数据中学习规律,并验证模型的泛化能力;软件工程的核心是构建满足目标的软件系统。三者的目标不同,但在 AI 时代,工作方法正在出现越来越多的交集。1. Research 与 Software Engineering
| |
|---|
| Requirement / Specification |
| |
| |
| |
| |
| |
| |
| |
值得思考的是:软件架构设计是否也应该像科学研究一样,先提出假设,再通过实验验证,而不是仅仅依靠架构师的经验和判断?2. Machine Learning 与 AI Software Engineering
这一组对照可能更加有趣。机器学习长期面对的问题,恰恰是如何在无法完全理解模型内部机制的情况下,判断其表现是否可靠。不能让 Agent 反复利用同一套测试案例修改代码,再用同一套测试证明实现正确。应该区分开发反馈集、方案验证集和独立测试集。测试全部通过,不代表系统真正满足需求。Agent 可能只是针对已知测试做了优化。真正重要的是未见场景下的泛化能力。第三,架构设计也需要 Ablation Study。多 Agent、Planning、Memory、Skill、Reviewer 等组件是否真的提升了系统能力?应该通过对照实验,而不是凭借架构图的复杂程度判断。固定环境、数据、依赖、实验条件和测量指标,才能让不同方案之间具有可比较性。3. 从测试通过到科学证据
Research 和 Machine Learning 则进一步追问:测试通过只是证据的一部分,而不是正确性的最终证明。对于关键系统,还需要结合不变量检查、故障注入、形式化验证和生产环境观测。
三、Research 不取代 Engineering,而是赋能 Engineering
Research 解决的是如何发现未知、探索解决方案、形成新知识。Engineering Workflow 解决的是如何将目标转化为可管理、可执行、可验证、可交付的软件变更。1. Issue → Code → PR → Merge 依然是正确的工程控制流程
Issue → Code → PR → Merge协作可扩展:多个 Agent、工程师和团队可以围绕统一工作单元协作。因此,未来不是抛弃这套流程,而是让 AI 能够自主执行这套流程。2. Research 是按需嵌入的探索能力
Research 并不是替代 Issue 流程,也不是所有开发任务都必须经过一套完整的科研流程。如果问题和优化方案都已经明确,Agent 可以直接按照既有 Skill 完成代码修改、测试和 PR。Hypothesis → Experiment → Evidence → Decision。例如提出索引设计、查询优化或缓存策略等候选假设,通过 Profiling、Benchmark 和对照实验寻找证据,最终选择方案,再回到 Issue → Code → PR → Merge 的工程流程。Research 是解决未知问题的方法论,Issue 流程是组织和控制软件变更的方法论。两者是互补关系。
四、Engineering Knowledge Base:自动化研发真正的基础设施
Issue → Code → PR → Merge 不应该只是一套流程规范,而应该在长期实践中沉淀出一套完整的 Engineering Knowledge Base。因为 Agent 要真正具备自主研发能力,不能每次都从零开始。这些知识不能只依赖每次对话中的上下文,而应该成为可以被持续检索、执行、验证和更新的工程资产。沉淀经过设计和验证的工程方法论,应该像软件一样通过 Git 管理、版本化、Code Review 和测试。记录系统架构、关键技术决策、约束和演进历史,避免 Agent 在每次任务中重复做出相互矛盾的决策。Memory / Historical Knowledge保存历史 Issue、PR、故障、解决方案和项目上下文。Memory 是一种知识能力,不应该被限定为单一存储产品。保存判断研发结果是否合格的标准、测试数据和评估程序,让 Agent 能够独立验证自己的工作。未来软件公司的核心竞争力之一,是它的 Engineering Knowledge Base 能否被 AI Agent 高效理解、调用、执行和持续更新。
五、Research 与 Engineering 如何形成持续进化的循环?
首先,业务或产品目标产生研发任务,经过问题定义和拆解,形成 Issue。然后,Agent 基于 Engineering Knowledge Base 执行标准研发流程。当任务存在未知问题时,触发 Research 和 Experimentation,形成经过验证的技术结论,再回到工程执行。最后,通过 PR、测试、Eval 和 Merge 完成交付,并将新产生的知识沉淀回知识库。Objective → Issue → Engineering Execution → PR → MergeEngineering Knowledge Base 为整个流程提供方法、规范和历史经验。Research & Experimentation 按需解决未知问题。Evaluation 贯穿研发过程,提供独立质量判断。Merge 和生产运行产生新的反馈,推动知识库持续进化。因此,未来的自动化研发不只是 Agent 能够完成某一个 Issue,而是整个组织能够不断积累经验,让下一次研发比上一次更加可靠、高效。
六、未来工程师:从代码生产者转变为问题定义者和系统设计者
如果代码生成越来越自动化,那么未来工程师的核心竞争力是什么?我认为,工程师不会简单消失,但其价值结构会发生根本变化。1. Problem Formulation:定义正确的问题
从模糊的业务目标中识别真正的问题,明确边界、约束、目标和成功标准。2. Specification:表达可验证的意图
能够将业务目标转化为清晰的 Specification、系统不变量和验收条件。3. Experimental Design:设计有效的实验
能够提出技术假设,设计对照实验,选择测试数据和评价指标,识别偏差和过拟合。4. Evaluation:建立独立的判断能力
能够判断系统是否真正满足目标,理解评估结果的局限,并知道何时需要更强的验证手段。5. Systems Thinking:理解系统整体行为
理解系统边界、复杂依赖、故障传播、安全约束和业务后果,而不是只关注局部代码。6. Knowledge Engineering:构建持续进化的工程知识体系
能够把组织经验沉淀为 Skill、Architecture、ADR、Memory、Benchmark 和 Eval,让 AI Agent 能够持续复用和改进这些知识。未来工程师的价值,不再主要取决于一天能够写多少行代码,而是能否定义正确的问题、设计有效的实验、建立可靠的工程体系,并对最终系统的质量和业务结果负责。
Research 赋能 Engineering,Knowledge 驱动 Automation
AI 时代的软件工程,并不是 Research 取代 Engineering,也不是抛弃传统的软件研发流程。Issue → Code → PR → Merge 依然是重要的工程控制流程。真正发生变化的是:这个流程的执行主体、知识基础和质量保障机制。未来,Agent 将逐渐成为主要执行者,而 Engineering Knowledge Base 为 Agent 提供方法论、架构知识、历史经验和质量标准。Research 和 Evaluation 则让 Agent 能够面对未知问题,通过实验和证据形成新的知识。Research 产生新知识,Engineering 将知识转化为可靠的软件,Knowledge Base 将经验沉淀为组织能力,Automation 则让这些能力能够规模化复制。未来的软件工程,不是 Research replacing Engineering,而是 Research empowering Engineering,Knowledge driving Automation。Research 赋能工程,知识驱动自动化。这可能才是 AI 时代软件研发真正的范式转变。