前端已死是2023年最火的论调。结合各大公司开始裁员,前端程序员求职石沉大海,更是让这个论调在各大论坛疯狂传播。最终这似乎已经成了一个“定论”,大家都说:前端工程师没有前途了。去年,我也一直被这个论调影响,但是如今,我想从各个角度出发,重新聊一聊这个问题。
市场
从市场的角度来说,一个行业的产生,必然是有对应的需求产生了。比如说,自行车。从我们爸妈那个年代,自行车就已经是非常流行的交通工具。如今,自行车市场规模确实没有主流的交通工具大,但是我们也会发现,自行车作为了其他的角色、身份,仍然出现在市场中。比如高端的运动自行车,小孩的代步车。我们可以说,作为主流交通工具的自行车已经死了。但是他的需求仍然没有消失,只是形态产生了变化。
那前端工程师面对的需求是什么呢?我曾经在大厂工作过,现在也在一家小公司,作为公司唯一一名前端。
从大厂的角度来看,前端工程师解决的问题是介于产品易用性问题和软件工程问题之间的角色。从易用性来说,PD这个角色需要规划好产品的功能,UX需要对这个功能产出一份合适的交互方案。最后轮到了前端工程师,需要解决的是这个方案如何和已有的系统耦合,面对的问题和任何工程师的问题都是一样的。
来到小公司之后,我发现,前端的重要性并没有变弱,反而更强了。在大厂,很多人围绕一个产品提出方案,因为大厂的人员配置总是完善的。但是在没有配套那么完善的情况下,前端工程师的角色反而变得重要。举一个具体的例子:列表。从前我司使用一个采购的产品,在列表筛选完后进入详情页,再退出来的时候因为路由跳转,列表已经被重置了。作为一个工程师,很容易想到:我们可以做缓存,做keepalive,来解决这个问题。但是从用户的角度上来说,这个问题很严重,因为非常影响效率。
再举一个例子,我们有一个定时任务的需求,其中涉及时区问题——比如在每周一早上8点定时运行任务,但是在什么时区的8点呢?后端配置了UTC+0的时区。后来我反复想,如果这么做出来,用户肯定要喷的,因为他需要不停地换算这个时区。虽然这个后端可能很健壮,很高性能,但是它不一定好用。所以我提了两个方案,一是我们固定+8时区,一是我查询了文档,提出了可配置时区的办法。
这是一个很小的例子。但是,回到市场这个问题上。前端这个角色的出现,仍然是为了满足一个需求:好用。但是市场的需求也从简单的antd curd工程师,进化到了需要更加有深厚功力的工程师的阶段。在我来这之前,后端工程师也写了一部分代码。但是充斥了满屏幕的TS错误,没有任何的effect等特性。作为一个前端工程师,最基础的优势就是,我们对自己使用的工具是熟悉的,对语言的特性,框架的特性是熟悉的。最重要的优势是:我们对产品的易用性,以及美观程度,是有追求的。
老板的核心问题还是:我有一个问题要解决,谁能帮我解决?从大厂来看,前端已经处于需求的末端,缺乏了很多的思考空间;来到小公司之后,我反而更加对这个问题感受更深。
另外,前端工程师也不要给自己划一个界限。因为我们是工程师,再是前端工程师。提升一下自己的横向拓展能力。其实Java、Golang,后端这一套技术,不会比前端复杂更多,有空的时候也可以学习一下后端使用的技术。有了这些基础,前端工程师也可以去驱动后端,去做一些对产品好用的改变。
作为工程师
Part 1 举了一些例子。就是为了说明一个点:前端工程师的需求没死,但是低端重复的劳动必然会被替代。这个规律不仅在程序员这个行业,而是在任何的行业都生效。况且,程序的意义就是为了取消重复的劳动,因此也具有自我革命的性质在里面。总会有人说:程序员开源搞死了自己。其实程序的目标就是为了“搞死”任何人,把人类在重复劳动中解放。
所以,在AI技术那么发达的今天,我们也不要纠结于低级重复的问题,比如Type和Interface有什么区别?比如JS的继承有几种写法?这些知识不会,在新时代太正常了,因为这些可以背出来的问题已经被GPT替代了。有了AI帮我们解决低级问题,我们就可以着手去解决高级问题。我们也可以去快速学习新的语言,新的框架,不断扩宽自己的视野。
举一些例子,比如我们可以快速学习怎么搭建一个数据库,然后把用户行为信息做一个统计看板,给老板看看。生产力快速发展的今天,我们可以不用再着眼于一些小的技术上问题,而是可以作为一个主体,对实际的问题的完整链路进行处理。最近看掘金,在前端领域还有很多人沉迷于做一套中后台框架,尝试在一个成熟的领域进行重复劳动。对于这种情况,对于新手来说,练练就好了,不要投入太多生命在里面。
职业发展
前端这个岗位应该取消,或者说80%都应该取消。这是我在大厂得出的一个结论。回到我们生产一个产品的逻辑上,我们前后端分离,更像是一个时代的无奈之举。因为前端太不成熟,所以需要一批人专门去做前端。但是我们从今天的角度来看,JS的发展已经非常成熟了,有了多进程、有了其他语言的各种特性、有了wasm。前端工程师的能力已经和服务端工程师一样了。而目前最大的成本,就是沟通成本。
或许未来,我们可以看到一个这样的团队结构:
- 基础服务工程师:负责高性能数据库和基础服务运维,提供业务需要的SQL。
- 产品开发工程师:面对产品需求开发,使用基础服务工程师和前端服务工程师提供的组件、框架等。主要面对产品需求生产业务逻辑。
- 前端服务工程师:负责前端性能优化方案、高性能组件产出。
因此,前端未来的分化,一是面对浏览器这个平台,积累高性能、高可用、长期积累的解决方案;二是融合到产品研发的角色,主要开展前后端一体的业务逻辑开发。在大厂工作的时候,其实已经是这样的形式了:正式员工负责寻找、维护整体架构和最佳实践,外包进行重复的业务逻辑实现。但是这样始终会有沟通成本,或许不久的将来我们就可以见到这个职责被彻底分离的一天。
最后,洋洋洒洒写了一堆,没有什么逻辑和规划的文章。主要是聊聊当前“前端已死”这个问题。结论就是:如死。在市场的退潮和世界的变革下,我们更需要积极进化,不然被淘汰就是历史的必然。大家也不用那么悲观,需求存在,前端就会存在。但是市场会变,积极改变自己,适应这个世界就是唯一的办法。
祝大家2024年顺利~