软件的去技能化:从前端框架到 Agentic AI
当前围绕 AI 和编程未来的焦虑并非新现象。对于那些在过去十年中从事前端开发的人来说,向 Agentic AI 的转变感觉像是他们已经经历过的一个周期的重复。从手工编写的 HTML 和 CSS 到重型 JavaScript 框架的主导地位,这一转变反映了当前从手动编码到 AI 生成软件的转变:两者都承诺了效率和易用性,但都引入了手艺活的系统性“去技能化”。
去技能化的机制
去技能化是指通过引入由半熟练或非熟练工人操作的技术,从而消除熟练劳动力的过程。在前端领域,当浏览器不再是语义化标记的目标,而开始被视为 React 或 Next.js 等框架的单纯编译目标时,这种情况就发生了。
此前,前端开发是一门专门的学科,需要对浏览器特性、无障碍访问 (a11y)、渐进式增强和网络性能有深入的了解。组件库和框架的引入使得通用的“全栈”开发者能够在不理解底层 DOM 或 CSS 特异性 (specificity) 细微差别的情况下构建界面。虽然这降低了准入门槛,但也削弱了专业开发者的议价能力,并且在许多情况下,导致了最终用户体验质量的下降。
现在,我们看到这种模式正在全球范围内重复。Agentic AI 正在使编写代码这一行为本身去技能化。手动实现的熟练工作正在被“驾驭” AI 的行为所取代。正如一位观察者所指出的,这是 Stack Overflow “复制粘贴”时代的延伸——目标从理解手册转向寻找一个“勉强能用”的代码片段。
漏洞百出的抽象层之塔
这些转变的支持者认为,他们只是通过更高层次的抽象来提高效率。然而,正如“漏洞百出的抽象层定律” (Law of Leaky Abstractions) 所暗示的,这些层最终会失效,底层复杂性会重新浮现。
前端漏洞
在现代前端开发中,抽象层往往以运行时性能和无障碍访问为代价来换取开发速度。通过依赖重型客户端框架,开发者往往不再思考网站在低端移动设备或慢速网络上的表现。当网站对很大一部分人群变得不可用时,抽象层就会“泄漏”,但开发者不再具备在浏览器层面诊断问题的技能。
AI 漏洞
Agentic coding 或许是所有抽象层中最容易泄漏的,因为它具有非确定性。与编译器不同,LLM 可以为相同的提示词产生不同的结果。这创造了一种独特的危险: “vibe-coded” 应用。这些产品表面上看起来很精致,但缺乏架构完整性。
一位来自社区的深刻案例突显了这种方法的风险:一家初创公司演示了一个由 AI 构建的应用,结果却被投资者告知:“你显然是用 AI 构建的这个,因此任何其他想要这个的人也可以非常快速地让 AI 为他们构建。因此,你在这里试图销售的东西其实并没有什么价值。”
反方观点:偶然复杂性
并非所有人都将这种转变视为一种损失。许多人认为,传统主义者所哀叹的“深厚专业知识”实际上只是对“偶然复杂性” (accidental complexity) 的掌握——即处理浏览器不兼容性和不直观的边缘情况的挫败感,这些是由于糟糕的标准造成的,而不是手艺活的本质。
从这个角度来看,框架和 AI 并不是在摧毁一种手艺,而是在移除“雷区”般的历史包袱。正如一位评论者所指出的,行业的目标是自动化重复性任务。如果 AI 可以处理仪表板或表单的样板代码,它就能让工程师专注于更高层次的系统设计和产品市场契合度 (product-market fit)。
学习 Bauhaus 运动的教训
当工业化在一百年前威胁到传统手工艺人时,Bauhaus 运动提供了一种第三种选择。与其拒绝工厂,或者盲目模仿过去,Bauhaus 寻求将艺术手艺与工业化大规模生产相结合。他们敦促设计师去理解他们所使用的材料——钢、玻璃、混凝土——即使最终产品是由机器制造的。
软件工程师面临着类似的十字路口。手工编写代码的能力等同于工业设计师对材料的知识。虽然 AI 可以单文件生成 3,000 行代码,但理解底层架构的开发者才是唯一能够在 AI 生成的抽象层不可避免地泄漏时修复系统的能力者。
结论:手艺的未来
我们正在进入一个这样一个“技能门槛”比以往任何时候都更低的时代。现在交付一个可运行的雏形比以往任何时候都更容易,但交付一个高质量、可持续的产品比以往任何时候都更难。
行业在短期内可能会继续奖励 “vibe-coding” 和快速原型设计,如此因为业务成功与软件质量之间很少有完美的关联。然而,专业开发者的价值将从生成代码的能力转向策划、验证和架构设计的能力。工具在变,但深入理解的必要性仍然是抵御“AI slop”世界的唯一保障。