前端的未来已然到来

发布于:2024-04-18 ⋅ 阅读:(18) ⋅ 点赞:(0)

随着整个软件行业正逐渐转向以打包、托管与抽象解决方案为主体的新形态,后端与基础设施带来的麻烦正越来越少,而立足堆栈顶部的前端工程师开始成为施展空间最大的时代宠儿。甚至不只是他们,如今无论是前端、后端还是运维开发者,他们在描述自己的工作流程时普遍表示,会尽可能将底层问题交给托管服务商打理。

换句话说,前端开发已经不再是系统生命周期中的辅助性要素。

关于前端未来图景的讨论目前颇为流行。虽然有观点强烈反对 AI 崛起意味着“前端开发既消亡”的判断,但也有人认为 AI 及无代码 / 低代码将增强前端开发者群体、而非直接将其取代。但纵观这种种意见交锋,我发现人们普遍忽略了一个重要问题:随着抽象解决方案不断改善后端与运营层面的工作难度,前端开发者在采购决策中的话语权将持续增长。

从 Baas 到 PartyKit

让我们先从专为前端工程师提供服务的供应商说起,包括如何利用云抽象确立自身市场地位。

初次测试 @partykit_io
我喜欢构建实时应用程序,所以很高兴终于亲自尝试了一回。我是 @threepointone 的忠实粉丝
pic.twitter.com/JX1SR5CX7c
— nader dabit (@dabit3)*2023 年 11 月 30 日

PartyKit 公司 CEO Sunil Pal 受邀参加了 Changelog 前端播客 JS Party。Pai 不仅在 React、JavaScript 和 CSS 领域负有盛名,PartyKit 还专门面向前端工程师群体。Pai 的最新项目凭借对实时同步的显著简化而受到广泛关注——长久以来,这个问题一直困扰着希望允许多位用户同时工作的多人协作类应用开发者们(包括 Figma、Google Docs 还有 Deplit)。

PartyKit 代表着前端崛起的又一个令人信服的案例。PartyKit 不仅证明 JS 领域仍在酝酿创新,也表明了前端买家市场的稳健性。供应商们注意到专门针对前端开发者的平台能够获得成功,因此渴望推出自己的方案来满足需求。JS Party 播客联席主持人 Kevin Ball 表示:

我喜欢 PartyKit 说过的一句话:“它就像是 Vercel 或者 Netlify,只是采取实时构建。”Vercel 和 Netlify 模式都很伟大,它们的亮点就在于能把前端开发者的很多任务承接过来,不但让部署更加轻松易行、而且能够轻松与其他方案对接。而多人协作却长期做不到这一点。

Ball 认为,这些为了消除后端运营管理而诞生的平台在市场上开创了先河。除了前提提到的 Vercel 和 Netlify 之外,还包括 Supabase、谷歌 Firebase、MongoDB Atlas、亚马逊云科技的 Amplify 以及 Appwrite 等 BaaS 公司。另外还有 Zephyr Cloud 之类的厂商,这是一家由微前端容器化技术 Module Federation 的缔造者及维护者建立的云服务商,旨在降低微前端的开发和管理难度。

总之,越来越多的科技大厂和初创公司都开始将前端开发者视为消费力强、规模可观的目标受众。人们也都意识到,自托管运营与基础设施会带来沉重的认知负荷,更不用说数据库、安全性、身份验证和可观察性等带来的巨大挑战。现在,前端开发者可以把这一切都交给服务商负责,不再需要内部处理。

抽象度持续提升

越抽象越好……
— Betty Junod (@BettyJunod)*2019 年 9 月 6 日

随着云托管抽象的兴起,一系列软件开发趋势也由此成形,让前端开发者获得了更具份量的话语权。抽象解决方案简化并扩展对原语的访问,降低了原语管理难度。仍然以 PartyKit 为例,其中包括 Cloudflare 设计的 Durable Objects 持久对象,它们本质上就是具有内存状态的 Cloudflare 工作线程。可以看到,这些原语正逐步让位给托管服务,而由此掀起的趋势正给前端开发带来深远影响。

首先,软件开发行业的抽象化进程正在服务和语言层面有所体现。程序员们花在裸机和低级语言编程上的时间越来越少。尽管 C、Assembly 和 Fortran 等人类可读性较差的语言仍具有一定生命力,而且 Rust 支持者阵容也在不断扩大,但大多数日常开发工作都集中在为堆栈顶部编写高级代码。

GitHub 发布的 2023 年 Octoverse 现状报告也体现出这一趋势。根据相关研究,在“2020 万开发者”(指拥有 GitHub 账户的个人)当中,“过去一年间开发者数量增长了 21%”,其中 JavaScript 仍是最受欢迎的语言。RedMonk 公布的语言排名也符合这一发现,自 2015 年以来,JavaScript 每年都稳居最流行编程语言榜首。事实上,在排名前七位的语言中,有六种纯位于堆栈顶部,而且有三种为客户端语言(分别是 JS、CSS 和 TypeScript)。我们从这些调查中可以得出结论,即随着软件领域继续迅速发展,领域内的大部分新人都集中在了前端开发层面。

老实说,身为一名开发者,最让我兴奋的就是能在短短几天内就构建一个项目。
我热爱 Next.js、Vercel 和 Tailwind 堆栈让我能够快速完成开发的感觉,特别是在跟 @replicatehg 和 @OpenAI 配合使用来开发酷炫 AI 应用的时候。

除了开发者使用的编程语言之外,现代软件开发还高度依赖于将繁琐部分和复杂性服务抽象出来。虽然一部分系统管理员仍在以尖锐的言语对这种趋势提出批评,但客观事实表明,将运营部分剥离出来的作法已经越来越普遍。毕竟运营很难、基础设施很贵,安全性与合规性的风险也很高。

API 经济与云原生

前端开发者江湖地位的提升,源自抽象机制的迅速增加,而且这种趋势仍将长期持续。托管服务能够将复杂且耗时的任务(例如用户身份验证)以及高监管要求的服务(例如 POS 系统)留给领域专家,以省时省力的方式提高安全性。如此一来,企业就能专注于处理用例中特有的业务逻辑。特别是在前端工具与生态系统配置层面,这种面向抽象的整体转变也与此前全栈化潮流的失败有关。全栈工程师的出现虽然对企业雇主有利,但却受到开发者群体的严厉谴责,因为指望开发者承担一切必然给他们带来过重的认知负担。正如 Laurie Voss 所说:

如果不能把细节都抽象出去,我们根本无法在堆栈中生存下来。

下面我们重新审视所有 API 经济,深入探讨抽象这个主题。自云计算诞生以来,API 就一直扮演着重要角色。Salesforce 和 eBay 早在 2000 年就开放了其 Web API 的访问权限,之后通过提供 API 来扩大市场份额的理念开始“吞噬整个世界”,在现代软件开发中地位日显,并为前端工程师们带来了巨大助益。Couchbase 联合创始人、目前供职于 Fireproof 公司(一家针对前端开发者的数据库初创企业)的 J Chris Anderson 表示:

API 正被全面集成进前端,这也是前端开发者能获取话语权并掌控采购决策的根本原因。

最近,API 驱动开发也开始在大语言模型(LLM)领域全面开花。开发者无需训练自有模型或在本地进行托管,而可以使用 OpenAI 提供的 ChatGPT、谷歌的 Gemini 或者 Anthropic Claude 等选项轻松创建聊天机器人,使用这些厂商面向开发者提供的直观无缝 API 集成功能。事实上,OpenAI 的定制化 GPT 还提供个性化体验,消除了训练和自托管大模型的复杂挑战。他们还在认真优化开发者体验,提供丰富的技术文档、快速入门指南与 SDK 资源。

除了通过 API 给前端工程师提供的便利之外,技术厂商还为这部分用户提供云原生形式的抽象方案。Begin 公司联合创始人 Brian LeRoux 就对前端开发者群体的前景抱乐观态度,认为该领域更能发挥云优势。从技术提供商的角度来看:

前端工程师是初创公司进军云市场的绝佳切入点。

由于前端开发者在构建动态及交互式网站时必须考虑后端流程,因此会敏锐地意识到无服务器及云托管方案的重要性。事实上,服务器 / 客户端二分模式中仍存在一系列挑战,往往会占用优秀开发者们大量的时间和精力。

抽象问题

当然,对这些高度抽象解决方案的采用同样需要权衡。抽象产品和服务通常以 API 和库的形式交付,也就是将他人编写的代码移植到开发者自己的项目当中。这既是它的核心卖点,也会带来巨大风险。抽象解决方案迫使项目呈现出特定形态,因此往往难以扩展。

大家应该都听过这个经典案例,就是 Twitter 被迫将后端从 Ruby on Rails 重写成 Scala(基于 Java 构建)的形式,原因就是像 Java 这样的低级语言扩展性更好。在涉及繁重的进程与缓存层处理时,像 Java 这样的语言仍然拥有不可替代的价值。然而,像 Twitter 这样的大型应用程序属于极端案例,并非普遍情况。也就是说,这种成长的烦恼并不会阻碍众多开发者继续使用 JavaScript 和 TypeScript。顺带一提,Java 22 还采用了高度简化的语法,因此在提交体验方面甚至胜过不少其他高级语言。

这样的更新让 Java 看起来更类似堆栈顶部的语言。这绝对会吸引到更多全栈工程师。*@redmonk
pic.twitter.com/9Qmuos5ltW
— Dr. Kate Holterhoff (@KateHolterhoff)2024 年 2 月 26 日

除了扩展问题之外,将复杂性抽象出去的服务和产品在托管时往往成本更高。Vercel 通过将 AWS 原语打包在零配置简单构建流程中来简化部署,而用户则为这样的便利性体验付费。这确实导致部分开发者抱怨 Vercel 的使用成本高到离谱,但很多公司还是发现,尽管托管成本愈发夸张,但由于不必聘请工程师来管理基础设施,所以这仍然物有所值。Branch Insurance 联合创始人兼 CTO Joe Emison 就提出了利用云服务配合纯前端初级开发者推动业务运营的案例:

由于我们拥有更优质、更强大的云服务可供选择(包括亚马逊云科技、Google Cloud Platform、Azure、Netify、Twilio 以及 Stripe),所以能更多将开发者精力集中在界面设计上。

换句话说,通过将运营移交给托管提供商,Branch 的工程部门得以专注于开发 UI 与前端界面。尽管 Branch 的例子有点极端,但软件开发的未来确实正朝着 Emison 描述的方向发展。

下面,咱们再来聊聊众多开发者高度依赖抽象与托管服务之后,可能带来的最糟糕的后果:整个行业都将面临生存威胁。之前行业中就存在类似的刻板印象,认为这种趋势会令前端工程师“无脑化”并最终彻底被业务不过关的初级开发者所充斥。也确实有人在认真分析这种刻板印象,认为前端主导的开发图景意味着软件工程将彻底消亡。沿着这样的思路推进,前端工程师最终将趋同于纯粹依赖低代码与无代码解决方案的非技术类开发者。如果说这波 AI 加低代码 / 无代码真能取代软件工程师群体,那么“技术正日渐衰落”的判断似乎也并非危言耸听。

但我倒不觉得前端驱动软件开发的前景就真有这么悲观。相反,我觉得这正是前端领域迸发出创新能量的新机会。那帮想以前端工程师“无脑化”为前提,在市场上兜售严重溢价的黑盒解决方案的厂商,最终都将惨遭失败。

前端未死,只是换了新样貌

这也引出了我关于前端工程师话语权的最后一点分析。与任何其他技术转变一样,这波以前端为重点的过渡同样不会是均匀的。结合软件开发的特殊背景,这必然伴随着角色的重新分配以及传统上泾渭分明的前端与后端、客户端与服务器,乃至静态与交互之间界限的逐渐模糊。其实不少资深从业者,长期以来一直在批评前端和后端这样的表述,认为“十多年来这种硬性划分一直脱离实际,但时至今日却仍然存在。”Reddit 用户 n9iels 就此做出回应:

根据个人经验,我发现前端领域正从纯 HTML/CSS/JS 转化为同时包含前端和后端。特别是对完全使用 React 或 Angular(SPA)构建的网站来说,前端与后端之间的界限已经越来越模糊。

由于前端、后端以及全栈之类的术语无法准确反映当今的系统生命周期,所以终将被新的开发者类型所取代。虽然我估计前端这种说法还会持续一段时间,但就现实世界的实践方式而言,这个领域必然会持续转变。新一代工程师将取代前端开发人员,尝试利用 API 和云服务来构建起高性能的交互式 UI。这批开发人员将跨堆栈进行运营,而不再像之前的全栈工程师那样号称能玩转一切。他们只是在利用一切可以利用的工具,并着眼现实问题开展创新改进。

总而言之,前端的江湖地位日益兴盛,而作为一门学科其仍在探索途中。尽管 AI 技术繁荣与宏观经济萎靡带来了种种不确定性,但厂商们必须意识到,身处堆栈顶部的开发人员的确处于更加有利的位置。行业与市场正变得愈发复杂和成熟,而前端领域的开发人员正在直面这些挑战。在我看来,所谓技术大牛对于无数细节的沉迷并非正确的前进方向,客户端与 UI 体验的全面改进(包括缓存、WebAssembly、水合以及容器化微前端)才是正道。我们之所以看到许多最耀眼的人物和最具开拓性的开发者愿意投身于前端,恰恰是因为前端汇聚了他们最关注的前沿技术。