Is AI causing a repeat of frontend’s lost decade?

Is AI causing a repeat of Frontend’s Lost Decade?

AI 是否正在导致“前端失去的十年”重演?

Mauro Bieg on May 23, 2026 Mauro Bieg,2026年5月23日

What AI is doing to the jobs of programmers feels very familiar to a lot of us frontend developers – because it has happened to us before. Let’s first look at the transformation of the frontend and agentic coding through the lens of deskilling, and then look at both changes through the lens of a higher level of abstraction. Finally, we’ll look at previous changes, like the advent of copy-pasta from Stack Overflow, and how the Bauhaus movement reacted to rising industrialization. AI 对程序员工作的影响,让我们许多前端开发者感到非常熟悉——因为这种事我们以前就经历过。首先,我们将通过“去技能化”(deskilling)的视角来审视前端和智能体编程(agentic coding)的变革,然后从更高抽象层级的视角来观察这两者的变化。最后,我们将回顾以往的变革,例如从 Stack Overflow 复制粘贴代码的兴起,以及包豪斯运动(Bauhaus movement)如何应对日益增长的工业化。

Deskilling

去技能化

Just like AI is deskilling programming now, JavaScript frameworks have deskilled frontend development in the last decade. As someone who started with HTML/CSS and a bit of PHP, later did Ruby on Rails, and then was frontend team lead of a major Swiss newspaper (Next.js at the time), I’ve seen the transformation first-hand. And no need to take my word for it! I’m not the first to say so. Alex Russell called it Frontend’s Lost Decade. 正如 AI 现在正在让编程“去技能化”一样,JavaScript 框架在过去十年中也让前端开发经历了同样的过程。作为一名从 HTML/CSS 和少量 PHP 起步,后来转向 Ruby on Rails,并担任过瑞士一家大型报社(当时使用 Next.js)前端团队负责人的开发者,我亲眼见证了这一转变。不必只听我的一面之词!我并不是第一个这么说的人。Alex Russell 将其称为“前端失去的十年”。

What is deskilling? From Wikipedia: Deskilling is the process by which skilled labor within an industry or economy is eliminated by the introduction of technologies operated by semi- or unskilled workers. This results in cost savings […] and reduces barriers to entry, weakening the bargaining power of [workers]. Let’s see how this applies to the frontend, and then to agentic coding. 什么是去技能化?引用维基百科的定义:去技能化是指通过引入由半熟练或非熟练工人操作的技术,从而消除行业或经济体中熟练劳动力的过程。这带来了成本节约……并降低了准入门槛,削弱了[工人]的议价能力。让我们看看这如何应用于前端,以及随后的智能体编程。

The deskilling of the frontend

前端的去技能化

A lot of programmers may not know this, but frontend used to be a highly specialized skill, requiring knowledge of semantic HTML, CSS, the differences of various browsers, accessibility, progressive enhancement, network performance, interface design and user testing – to just name a few. To distinguish what they’re doing from what “frontend” has become, practitioners of this arcane art nowadays often refer to it as the “front of the frontend”. 许多程序员可能不知道,前端曾经是一项高度专业化的技能,需要掌握语义化 HTML、CSS、不同浏览器的差异、无障碍访问、渐进增强、网络性能、界面设计和用户测试等知识——这仅仅是冰山一角。为了将他们所做的工作与如今的“前端”区分开来,这门深奥艺术的从业者现在常将其称为“前端的前端”(front of the frontend)。

The deskilling of the frontend was the introduction of frameworks and other tooling that treats the browser as a mere compilation target – just like any other app runtime (e.g. JVM or iOS). Then you can just load in the monstrosity that is a Shadcn radio button, and don’t need to understand the underlying HTML, any subtleties involving different browsers, page load performance, and accessibility. 前端的去技能化始于框架和其他工具的引入,它们将浏览器仅仅视为一个编译目标——就像任何其他应用运行时(如 JVM 或 iOS)一样。这样,你只需加载像 Shadcn 单选按钮这样庞大的组件,而无需理解底层的 HTML、涉及不同浏览器的细微差别、页面加载性能以及无障碍性。

As the Wikipedia quote above points out, this “results in cost savings” for businesses, since they then can easily put any general programmer to work on the frontend. Often, a “full-stack developer” is unfortunately not somebody who deeply understands the frontend and the backend, but a generalist who just knows enough to wrangle a JavaScript framework to do both. This allows businesses to easily switch programmers around between different projects. The same generalist can even also do native apps with React Native and Electron! To finish the Wikipedia quote: this “reduces barriers to entry” (which is something I’ve always cherished), but it also “weakens the bargaining power of workers”. 正如上面维基百科的引文所指出的,这为企业带来了“成本节约”,因为他们可以轻松地让任何普通程序员从事前端工作。通常,“全栈开发人员”不幸地不再是那些深入理解前端和后端的人,而是一个通才,仅仅掌握了足以利用 JavaScript 框架同时处理两者的知识。这使得企业可以轻松地在不同项目之间调配程序员。同一个通才甚至可以通过 React Native 和 Electron 开发原生应用!引用维基百科的后半部分:这“降低了准入门槛”(这是我一直所珍视的),但也“削弱了工人的议价能力”。

AI is deskilling programming

AI 正在让编程去技能化

What’s currently happening to programmers more generally seems very similar to what web developers in particular have been going through already. The skilled job of writing code manually is being “eliminated by the introduction of technologies, operated by semi- or unskilled workers.” We still don’t know exactly what skillset the workers wrangling agentic AI will need to have at the end of this transformation, and at what price point we’ll arrive at – for both labour, and for local and remote LLMs. But it is already clear now, that businesses absolutely will use this technology for cost savings and weakening of the bargaining power of workers. 目前在更广泛的程序员群体中发生的事情,似乎与 Web 开发者已经经历的过程非常相似。手动编写代码这一熟练工作,正被“引入由半熟练或非熟练工人操作的技术所取代”。我们尚不清楚在这一转型结束后,操作智能体 AI 的工人需要具备什么样的技能组合,以及我们将达到什么样的价格点——无论是劳动力成本,还是本地和远程大模型的成本。但现在已经很清楚的是,企业绝对会利用这项技术来节省成本并削弱工人的议价能力。

A profound sense of loss

深沉的失落感

Just like artisans and craftsmen that were replaced by assembly line workers more than a century ago, we feel a profound sense of loss. We grieve that a skill, that we spent half a lifetime honing, is not being valued by the market anymore. And we’re saddened that the new process results in lower quality work, and that a lot of people just don’t seem to care. 就像一个多世纪前被流水线工人取代的工匠和手艺人一样,我们感到一种深沉的失落感。我们为自己花费半生磨练的技能不再被市场重视而感到悲哀。我们也为新流程导致工作质量下降,而许多人似乎并不在意这一点而感到难过。

Operating at a higher level of abstraction

在更高的抽象层级上运作

An alternative way to look at “deskilling” is of course to argue that this is just increasing efficiency using automation. And what engineer doesn’t like automating things? It’s a big part of our job after all! In this framing, the new technology introduced simply works on a higher level of abstraction, allowing the person operating it to focus on the bigger picture, without having to bother about unimportant details. But exactly which details are deemed “unimportant” is a very consequential and sometimes subjective decision. And eventually, the details always leak through. 看待“去技能化”的另一种方式是认为这仅仅是通过自动化提高了效率。哪个工程师不喜欢自动化呢?毕竟这是我们工作的重要组成部分!在这种框架下,引入的新技术只是在更高的抽象层级上运作,使操作者能够专注于大局,而不必纠结于不重要的细节。但究竟哪些细节被视为“不重要”,是一个影响深远且有时带有主观性的决定。最终,细节总是会泄露出来。

“Modern” frontend: a tower of leaky abstractions

“现代”前端:泄露抽象的塔楼

It’s common for an abstraction to come at a cost of performance. But since computers are very fast nowadays, we were often willing to trade some runtime performance for increased developer productivity (garbage collection is one example). And for high-powered servers under moderate load, this is a very sensible tradeoff. But mobile phones on slow networks are a different beast. By using a heavy client-side JavaScript framework like React, and a lot of packages from that ecosystem, you’re abstracting over things like accessibility, and performance on lower-end phones, or on slow networks. In effect, you’re choosing not to think about those things, and you’re choosing not to care about them. 抽象通常以牺牲性能为代价。但由于现在的计算机速度非常快,我们通常愿意用一些运行时性能来换取开发效率的提升(垃圾回收就是一个例子)。对于中等负载下的高性能服务器来说,这是一个非常合理的权衡。但在慢速网络下的手机则完全是另一回事。通过使用像 React 这样沉重的客户端 JavaScript 框架以及该生态系统中的大量包,你实际上是在抽象掉无障碍性、低端手机性能或慢速网络下的表现等问题。实际上,你选择了不去思考这些问题,也选择了不去关心它们。

Agentic coding: an undeterministic abstraction

智能体编程:一种非确定性的抽象

By using agentic AI to code a feature or fix a bug, you’re describing the change at a higher level of abstraction, writing fewer words than writing all code by hand. The AI will fill in the details you omitted by looking at its training data and surrounding context – sometimes guessing well, other times not. Whether you find this useful or not depends to a large degree on your opinions on what’s important when coding. But compared to previous abstractions in programming, agentic coding is a very leaky abstraction. It’s not deterministic. 通过使用智能体 AI 来编写功能或修复 Bug,你是在更高的抽象层级上描述变更,所写的文字比手动编写所有代码要少。AI 会通过查看其训练数据和周围上下文来填充你省略的细节——有时猜得很准,有时则不然。你是否觉得这有用,很大程度上取决于你对编程中什么才是重要的看法。但与编程中以往的抽象相比,智能体编程是一个非常“泄露”的抽象。它不是确定性的。