软件质量感知的下降:行业趋势分析
软件质量感知的下降:行业趋势分析
软件稳定性的现状
开发者和高级用户之间正形成一种日益增长的共识,即现代软件在稳定性和完善度方面正在经历下降。虽然有些人将其归因于确认偏误,但许多行业从业者认为,极端的架构复杂性与开发激励机制的系统性转变相结合,使得软件在整体上客观地变得更加多虫(buggy)。
缺陷密度增加的主要驱动因素
架构与环境的复杂性
现代软件必须在比前几十年更加碎片化的生态系统中运行。缺陷表面积的增加是由几个技术因素驱动的:
- 扩展的 I/O 与设备碎片化: 应用程序现在必须适应众多的浏览器、屏幕尺寸和硬件配置。
- 依赖项膨胀: 现代应用通常依赖于“纸牌屋”架构,利用多种语言(例如,Java, JavaScript, CSS, HTML, SQL)以及数十个链接的库和外部服务器,而传统软件通常依赖于单一语言和进程。
- 用户规模: 软件现在是为全球数十亿用户构建的,这使得在 2000 年代初期在统计学上无关紧要的边缘情况暴露了出来。
质量保证 (QA) 的侵蚀
许多贡献者指出,系统性地取消专门的测试阶段是导致不稳定的主要原因。
"QA 团队被解雇了/根本就没有被雇佣(将报告和测试的任务转嫁给了开发人员/支持人员/客户)。管理层想要的是功能和销售,而不是易用性(Lovability)和完善度。"
这种转变的特征是“最小可行产品”(MVP)模型,即软件一旦达到“可交付”状态(大约完成 80%)就会发布,并期望剩余 20% 的功能通过更新来修补。这与旧有的“金标准”(Gold Master)发布周期形成对比,后者要求在任何公开分发之前达到极高的质量标准。
激励机制错位与“快速交付”文化
企业激励机制往往奖励交付速度而非长期稳定性,从而创造了一个很少被视为成本的重做循环。
- 速度陷阱: 当 AI 工具允许开发者工作得更快时,管理层通常会用更多的功能来填补节省下来的时间,而不是利用它来稳定代码库。正如一位贡献者所指出的,如果一个原本需要一个季度的项目现在只需要六周,领导层通常会在该季度内塞进两个发布版本,而不是投入时间进行完善。
- 卫生因素: 软件质量通常被视为一种“卫生因素”——它在存在时不会受到奖励,但当它低于某个阈值时,会受到严厉惩罚。这导致管理层倾向于问“我们能混过去吗?”而不是努力追求卓越。
- 重做循环: 在 FAANG 风格的文化中,“整洁代码是‘慢’的”这一迷思依然存在。这导致了更多缺陷的发布,从而触发了重做循环。由于这种重做通常不被计入成本,开发者在绩效评估中显得更忙碌、更有生产力,而整体质量却在下降。
AI 对代码质量的影响
在当前的开发环境中,人工智能被视为一把双刃剑。虽然 AI 工具增加了可以创建的软件和功能的数量,但它们可能会降低输出的质量:
- 自动化测试失败: 有人担心测试现在是由 LLMs 编写的,不再受到人类的审查,这意味着“绿色流水线检查点”不再保证功能正确性。
- “氛围感编程”(Vibe Coding): 用户报告遇到了一些在视觉上看起来很完善但功能上却损坏的网站,这表明了一种审美“氛围”优先于工作逻辑的趋势。
各平台观察到的故障
用户引用了几个近期稳定性下降的高知名度案例:
- 操作系统: 有报告称 Windows 11 更新导致了关键的启动失败或将用户锁定在系统之外。
- 云与生产力套件: Google Drive, Sheets, Gmail, 和 Meet 中的生产故障增加,以及 Azure ML 中的分页失败。
- 遗留软件: 即使是长期稳定的软件,例如 StarCraft 2,据报道在最近的补丁中也引入了破坏游戏的缺陷。
- 移动生态系统: 有报告称 Android 更新中出现了关键故障,例如如果不进行每日重启,就无法拨打电话。