AI usage generates a fragile codebase
638 points • 2 days ago • Article Link

AI 和 LLMs 在软件开发流程中的快速融合,已经显著改变了代码的生成方式,但这种依赖往往以牺牲长期可持续性为代价。 AI 在其上下文窗口内擅长解决局部问题,却在很大程度上忽视了大型 SaaS 应用所需要的更广泛架构要求。这种失衡会催生脆弱的代码库,使其难以承受高可用与高扩展性的严苛挑战。

导致这种脆弱性的主要有四个问题。第一,AI 往往生成"浅层测试",把注意力放在琐碎方法上,而不是关键的用户路径;这些覆盖缺口不会被常见指标捕捉到。第二,AI 经常产出过于复杂的代码:死板地套用 DRY 这类模式,却不顾可读性,结果就是系统对人类而言难以排查与调试。第三,当开发人员越来越依赖自动化时,他们对底层数据结构与算法的理解也会逐步减弱。最后,AI 生成代码的速度极快,反而让开发团队难以维持高质量门槛,进而不断累积技术债,最终把原本稳定的项目变成一团难以理清的 spaghetti code 。

这些做法会在一些可见的信号上逐渐显现,最突出的是生产事故的增多。当代码库由 agents 而不是人类架构师来构建时,系统失效的频率往往会上升。而一旦事故发生,由于人类团队失去了对代码的深入熟悉,他们就更难理解和穿越 AI 生成结果所留下的复杂性,因此修复和缓解会耗时更久。与此同时,系统中还会滋生一些对开发人员并不明显、但对用户却立刻可感的错误,最终拉低整体产品体验。

归根结底,主要由 AI 构建的软件会变成面向机器而非面向人的软件。缺少了人类视角,就难以预判真实用户会如何与产品交互。自动化或许足以支撑那些只靠价格竞争的产品,但高质量的 SaaS 仍需要人类开发者所具备的细腻判断、直觉与用心。面向未来,更有价值的很可能是保留这种人类触感的软件:让系统更具韧性、更易维护,并且真正贴合使用它的人的需求。

624 comments • Comments Link

- AI 的使用把软件开发范式从"手工匠作"的方式,推向了高速、自动化的生产流程,也因此引发了工程师之间的分歧:有人认为这是一种必然的演进;也有人担心未来会出现难以维护、脆弱的代码库。

- 批评者认为,AI 生成的代码往往会不断累积"slop"和技术债务,因为它缺乏真正的理解能力;而支持者则主张,只要配套合适的架构 guardrails 和人工监督,AI 就能成为更快交付与复杂系统治理的有力工具。

- 一个更大的担忧在于,人类技能可能会退化:开发者可能不再学习系统底层是如何运作的,最终形成一代所谓"按钮按手",在 AI 系统故障时既无法调试,也缺乏创新能力。

- 关于"disposable code"(一次性代码)的观点认为,由于 AI 能以较低成本大规模重写代码,极高的可维护性没以前那么关键。但也有人提醒,软件基础设施(如操作系统和运行时)需要当前 AI 模型难以保证的严谨程度。

- AI 在开发中的有效性,很大程度取决于人类用户是否能扮演"manager"或"architect"的角色:关键在于建立反馈回路、设定清晰的约束条件,而不是把 AI 当成"黑箱"方案直接交付。

- 人们对 code quality(代码质量)是客观必需品还是奢侈品看法不一。有人强调,在 AI 尚未普及之前,商业环境里"质量"往往并非首要;但也有人认为,忽视质量会让系统变得脆弱,甚至引发灾难性的故障。

- 许多开发者认为,这个行业正在向"organic software"(有机软件)模式转型:系统会处在持续、自动化的变化中,表现为由 AI agents 不断修补的、零碎的错误频繁出现。

- 也有人认为,真正的瓶颈不再是代码本身,而是人类定义、验证并管理自动化产出结果的能力——这需要一套以 context engineering(上下文工程)为核心、而不是以语法为中心的新技能。

- blacksmith(铁匠)与 factory(工厂)的类比经常被提及:这意味着,手工打造的代码也许会变成小众的高端服务,但未来多数软件将为了效率与速度而"工厂化"生产。

- 一个反复出现的论点是:AI 模型是"force multipliers(力量倍增器)",会放大开发者工作流中已有的质量。若工作流程本身粗糙,配上 AI 只会让混乱加速;但当流程足够严谨时,AI 则能带来前所未有的生产力提升。

把 AI 融入开发并加速转型之后,工程界出现了两极分化,也凸显了在"快速交付功能"与"维持长期系统完整性"之间存在的持续张力。许多从业者发现,AI 让他们能在更高抽象层面工作,把大量重复性的 boilerplate 进行外包;但也有人依然深感不安,担心如果基础专业能力逐渐被削弱,整个行业将既难以应对复杂故障,也无法理解他们所监管的系统。最终,这场讨论落回到一个核心问题:开发者究竟仍是掌控工具与介质的 craftsman(工匠),还是进化成了管理自动化流程(即便有时不可预测)的、基于 token 的生产线 architect(架构师)。无论站在哪一边,人们都趋向形成一致判断:当前的"vibe-coding(凭感觉编码)"时代充满剧烈波动,很可能迫使软件工程标准经历痛苦但必要的重新校准。