别让快变成错:重构软件工厂理念

工业化工厂彻底改变了全球实体商品的生产方式:产量更大、成本更低、速度空前。如今,软件领域正经历着类似的变革。
大语言模型(LLM)降低了代码编写门槛,提升了个人产出能力,促使企业将软件开发视为一个生产系统。那些沿用了数十年的标准软件开发生命周期和CI/CD实践已无法承受这种新压力。这就需要软件工厂的登场——如同实体工厂,它需要的不仅是速度才能真正发挥作用。
“软件工厂”的概念在过去一年逐渐成形。Luca Rossi的”软件工厂时代”明确指出:AI不仅改变了人们编写代码的速度,更改变了整个软件生产系统。
这个概念可以有多种解读:可以是编码智能体和技能文件的集合;更快的CI/CD流程;更完善的审查系统;或软件交付流程的更多自动化。更好的理解方式是将其视为一套原则,而非单纯的工具类别。软件工厂不能仅仅是提示词、智能体和插件的松散集合。它需要一个平台,定义工作如何在整个系统中流转,以及代码如何生成、审查、测试、追踪、部署,以及在出现问题时如何改进。
否则,你只是在空房间里放置另一台一次性机器,并称之为工厂。
为何此时发生转变?
多种力量同时推动了这一变革。
企业一直需要比工程师能够生产的更多的软件。这就是Excel等工具存在的原因:它们常常填补了许多公司渴望拥有却无法开发的大量软件需求。
AI也降低了创建代码的门槛,这是众人关注的焦点。代码创建如今变得更容易,但并不总是更便宜或更好,正如许多知名公司为高昂的AI账单而忧虑所证明的那样。编写功能性代码的门槛实际上已经崩溃。
更重要的是,单个工程师现在能生成的代码量远超几年前。这改变了瓶颈所在:问题不再是”某人能多快写出这个代码?”甚至在某些情况下,也不再是”有人懂得如何编码吗?”而是”这个代码应该被写出来吗?”
更重要的是,我们能否真正创造出耐用可靠的产品,而不仅仅是积累技术债务?或者我们只是在比以往任何时候更快地抛出更多AI垃圾?危险就在于此。
现代软件工厂的隐患
这一切听起来很棒。毕竟,工厂让生产更快、更一致。
它们让人们能够以更低成本生产更多汽车和产品,使更多人能够负担得起这些产品。撇开环境影响不谈,你可能会认为这是积极的。
但正如工程领域的许多事情一样,总是存在权衡,而这次出现了新的风险。
当你通过机器(无论实体还是数字)提高个人的产出时,也会增加个人或机器可能犯下的错误。现在代码产出的速度已达到工业规模。即使是较小的组织,代码库也可能迅速膨胀到相当于十年前科技巨头公司的规模。
数据已经显示出问题。Faros AI发现,虽然每位开发者的任务吞吐量提升了33.7%,PR合并率上升了16.2%,但事件与PR的比例上升了242.7%,每位开发者发现的错误增加了54%。谷歌的DORA研究发现,更多的AI应用实际上与更差的交付稳定性相关。
作为数据 fractional head,我被请去解决这些问题。仅在去年,我就参与了两个项目,其中AI生成的数据基础设施逐渐开始随时间演变。
在多个工程师试图快速推进和缺乏标准的情况下,这些项目变得混乱无序。代码库通常会经历某种程度的演变,但随着不同风格的混合,LLM开始创造自己的变异。在短短几个月内,代码库就发展出五种不同的风格——这一过程以前需要数年。一层一层地,工程师们逐渐不再完全理解发生了什么。
这种模式与十年前自助式工具发生的情况相呼应:早期的生产力收益掩盖了下游的复杂性。
这就是为什么软件工厂不能只关注速度。
打造有效软件工厂的关键要素
构建软件工厂时,需要考虑几个关键原则。
- 平台优先于工具:许多团队正在逐步将AI整合到他们的编码工作流程中边缘部分——在仓库中添加PR审查智能体或技能文件。但构建真正的软件工厂需要一个平台,而非边缘工具的集合。平台提供统一的基础,工具不是分散在各个角落,而是积极共享数据、相互协作,作为一个单一的整体系统运行——标准、流程和工作内容相互连接。
- 可重运行性和可追溯性:真正的平台需要能够回溯任何运行过程,找出问题所在,并重新运行的能力——这就是一次性智能体无法构成工厂的原因。系统需要支持通过序列ID查找,并精确追踪它如何产生当前输出。这就是为什么状态机比循环更适合AI工作流:它们使重新运行过程和理解每个步骤发生的事情变得容易得多。
- 安全与防护措施:工厂并非安全场所,软件工厂也不例外。随着更多人在这些平台上开发,需要构建更好的防护措施和安全机制。测试和质量控制需要前置到流程前端——在尽可能低的阶段捕获错误可以降低修复成本并限制影响范围。
- 标准化:在企业层面,每个代码库都有其独特风格。在没有标准的情况下,在代码库上叠加代码助手会产生各种风格的混合体。标准化必须从一开始就融入流程。
- 质量控制:在传统的制造模式中,质量控制发生在流水线末端。产品被构建、检查、发现缺陷,然后进行修复。丰田的方法则不同。质量被融入流程本身——当出现问题时,工人被期望停止生产线。目标不是在末端捕获缺陷,而是首先防止它们流向下游。
软件工厂也是如此。质量控制必须融入整个流程,从规范编写开始。这意味着集成能够捕捉明显错误的静态代码分析,并为LLM提供模板,让它们知道代码应遵循的结构。没有这些,最终审查会成为瓶颈——或者团队只是抛出更多AI垃圾。
没有质量的速度不是生产力
提高代码输出速度并不等于真正的生产力,如果下游…
关注微信号:智享开源 ,及时了解更新信息。

公众号:智享开源
还没有任何评论,你来说两句吧!