随着整个软件行业正逐渐转向以打包、托管与抽象解决方案为主体的新形态,后端与基础设施带来的麻烦正越来越少,而立足堆栈顶部的前端工程师开始成为施展空间最大的时代宠儿。甚至不只是他们,如今无论是前端、后端还是运维开发者,他们在描述自己的工作流程时普遍表示,会尽可能将底层问题交给托管服务商打理。 换句话说,前端开发已经不再是系统生命周期中的辅助性要素。 关于前端未来图景的讨论目前颇为流行。虽然有观点强烈反对 AI 崛起意味着“前端开发既消亡”的判断,但也有人认为 AI 及无代码 / 低代码将增强前端开发者群体、而非直接将其取代。但纵观这种种意见交锋,我发现人们普遍忽略了一个重要问题:随着抽象解决方案不断改善后端与运营层面的工作难度,前端开发者在采购决策中的话语权将持续增长。 让我们先从专为前端工程师提供服务的供应商说起,包括如何利用云抽象确立自身市场地位。 初次测试 @partykit_io PartyKit 代表着前端崛起的又一个令人信服的案例。PartyKit 不仅证明 JS 领域仍在酝酿创新,也表明了前端买家市场的稳健性。供应商们注意到专门针对前端开发者的平台能够获得成功,因此渴望推出自己的方案来满足需求。JS Party 播客联席主持人 Kevin Ball 表示:
Ball 认为,这些为了消除后端运营管理而诞生的平台在市场上开创了先河。除了前提提到的 Vercel 和 Netlify 之外,还包括 Supabase、谷歌 Firebase、MongoDB Atlas、亚马逊云科技的 Amplify 以及 Appwrite 等 BaaS 公司。另外还有 Zephyr Cloud 之类的厂商,这是一家由微前端容器化技术 Module Federation 的缔造者及维护者建立的云服务商,旨在降低微前端的开发和管理难度。 总之,越来越多的科技大厂和初创公司都开始将前端开发者视为消费力强、规模可观的目标受众。人们也都意识到,自托管运营与基础设施会带来沉重的认知负荷,更不用说数据库、安全性、身份验证和可观察性等带来的巨大挑战。现在,前端开发者可以把这一切都交给服务商负责,不再需要内部处理。 越抽象越好…… 随着云托管抽象的兴起,一系列软件开发趋势也由此成形,让前端开发者获得了更具份量的话语权。抽象解决方案简化并扩展对原语的访问,降低了原语管理难度。仍然以 PartyKit 为例,其中包括 Cloudflare 设计的 Durable Objects 持久对象,它们本质上就是具有内存状态的 Cloudflare 工作线程。可以看到,这些原语正逐步让位给托管服务,而由此掀起的趋势正给前端开发带来深远影响。 首先,软件开发行业的抽象化进程正在服务和语言层面有所体现。程序员们花在裸机和低级语言编程上的时间越来越少。尽管 C、Assembly 和 Fortran 等人类可读性较差的语言仍具有一定生命力,而且 Rust 支持者阵容也在不断扩大,但大多数日常开发工作都集中在为堆栈顶部编写高级代码。 GitHub 发布的 2023 年 Octoverse 现状报告也体现出这一趋势。根据相关研究,在“2020 万开发者”(指拥有 GitHub 账户的个人)当中,“过去一年间开发者数量增长了 21%”,其中 JavaScript 仍是最受欢迎的语言。RedMonk 公布的语言排名也符合这一发现,自 2015 年以来,JavaScript 每年都稳居最流行编程语言榜首。事实上,在排名前七位的语言中,有六种纯位于堆栈顶部,而且有三种为客户端语言(分别是 JS、CSS 和 TypeScript)。我们从这些调查中可以得出结论,即随着软件领域继续迅速发展,领域内的大部分新人都集中在了前端开发层面。 老实说,身为一名开发者,最让我兴奋的就是能在短短几天内就构建一个项目。 除了开发者使用的编程语言之外,现代软件开发还高度依赖于将繁琐部分和复杂性服务抽象出来。虽然一部分系统管理员仍在以尖锐的言语对这种趋势提出批评,但客观事实表明,将运营部分剥离出来的作法已经越来越普遍。毕竟运营很难、基础设施很贵,安全性与合规性的风险也很高。
当然,对这些高度抽象解决方案的采用同样需要权衡。抽象产品和服务通常以 API 和库的形式交付,也就是将他人编写的代码移植到开发者自己的项目当中。这既是它的核心卖点,也会带来巨大风险。抽象解决方案迫使项目呈现出特定形态,因此往往难以扩展。 大家应该都听过这个经典案例,就是 Twitter 被迫将后端从 Ruby on Rails 重写成 Scala(基于 Java 构建)的形式,原因就是像 Java 这样的低级语言扩展性更好。在涉及繁重的进程与缓存层处理时,像 Java 这样的语言仍然拥有不可替代的价值。然而,像 Twitter 这样的大型应用程序属于极端案例,并非普遍情况。也就是说,这种成长的烦恼并不会阻碍众多开发者继续使用 JavaScript 和 TypeScript。顺带一提,Java 22 还采用了高度简化的语法,因此在提交体验方面甚至胜过不少其他高级语言。 看看这简洁的 @java 22(也可能是 23)语法!😱 除了扩展问题之外,将复杂性抽象出去的服务和产品在托管时往往成本更高。Vercel 通过将 AWS 原语打包在零配置简单构建流程中来简化部署,而用户则为这样的便利性体验付费。这确实导致部分开发者抱怨 Vercel 的使用成本高到离谱,但很多公司还是发现,尽管托管成本愈发夸张,但由于不必聘请工程师来管理基础设施,所以这仍然物有所值。Branch Insurance 联合创始人兼 CTO Joe Emison 就提出了利用云服务配合纯前端初级开发者推动业务运营的案例:
换句话说,通过将运营移交给托管提供商,Branch 的工程部门得以专注于开发 UI 与前端界面。尽管 Branch 的例子有点极端,但软件开发的未来确实正朝着 Emison 描述的方向发展。 下面,咱们再来聊聊众多开发者高度依赖抽象与托管服务之后,可能带来的最糟糕的后果:整个行业都将面临生存威胁。之前行业中就存在类似的刻板印象,认为这种趋势会令前端工程师“无脑化”并最终彻底被业务不过关的初级开发者所充斥。也确实有人在认真分析这种刻板印象,认为前端主导的开发图景意味着软件工程将彻底消亡。沿着这样的思路推进,前端工程师最终将趋同于纯粹依赖低代码与无代码解决方案的非技术类开发者。如果说这波 AI 加低代码 / 无代码真能取代软件工程师群体,那么“技术正日渐衰落”的判断似乎也并非危言耸听。 但我倒不觉得前端驱动软件开发的前景就真有这么悲观。相反,我觉得这正是前端领域迸发出创新能量的新机会。那帮想以前端工程师“无脑化”为前提,在市场上兜售严重溢价的黑盒解决方案的厂商,最终都将惨遭失败。 这也引出了我关于前端工程师话语权的最后一点分析。与任何其他技术转变一样,这波以前端为重点的过渡同样不会是均匀的。结合软件开发的特殊背景,这必然伴随着角色的重新分配以及传统上泾渭分明的前端与后端、客户端与服务器,乃至静态与交互之间界限的逐渐模糊。其实不少资深从业者,长期以来一直在批评前端和后端这样的表述,认为“十多年来这种硬性划分一直脱离实际,但时至今日却仍然存在。”Reddit 用户 n9iels 就此做出回应:
由于前端、后端以及全栈之类的术语无法准确反映当今的系统生命周期,所以终将被新的开发者类型所取代。虽然我估计前端这种说法还会持续一段时间,但就现实世界的实践方式而言,这个领域必然会持续转变。新一代工程师将取代前端开发人员,尝试利用 API 和云服务来构建起高性能的交互式 UI。这批开发人员将跨堆栈进行运营,而不再像之前的全栈工程师那样号称能玩转一切。他们只是在利用一切可以利用的工具,并着眼现实问题开展创新改进。 总而言之,前端的江湖地位日益兴盛,而作为一门学科其仍在探索途中。尽管 AI 技术繁荣与宏观经济萎靡带来了种种不确定性,但厂商们必须意识到,身处堆栈顶部的开发人员的确处于更加有利的位置。行业与市场正变得愈发复杂和成熟,而前端领域的开发人员正在直面这些挑战。在我看来,所谓技术大牛对于无数细节的沉迷并非正确的前进方向,客户端与 UI 体验的全面改进(包括缓存、WebAssembly、水合以及容器化微前端)才是正道。我们之所以看到许多最耀眼的人物和最具开拓性的开发者愿意投身于前端,恰恰是因为前端汇聚了他们最关注的前沿技术。 原文链接: https:///kholterhoff/2024/03/28/the-future-of-frontend-is-already-here/ 声明:本文为 InfoQ 翻译。 李彦宏“程序员将不再存在”言论被周鸿祎驳斥,网友怒怼:先把百度程序员都开除了! |
|