乐趣区

关于前端:前端有未来吗

最近一段时间,通过各种形式与同行们交换了「前端技术」与「前端工程师」的现状及将来倒退的方向性问题,大家在一些方面有所共鸣。

上面就来说说我的一些认识——

困惑

多多少少,有人已经或正在困惑:「前端有将来吗?」

有此困惑的人,TA 可能是——

正在学习 web 前端技术,就是纯正的 HTML、CSS 和 JS,在用这几样做网页。练习的过程中发现,或者说忽然想到:「当初微信小程序风靡,在其与原生客户端利用的夹击下,前端有将来吗?」

一毕业就退出了看似门槛低、工资高的前端工程师行列,进入了一家业务型公司的业务部门。产品经理的需要一直,都曾经排满接下来的一年了。做的货色,竟是些不太须要动脑子的,做得多了根本只是让本人变得更纯熟。这个性能今天上线,那个需要下周五提测,每天都疲于奔命。

下班时总在想:「如果有工夫的话,我肯定要好好学学技术,晋升下本人!」可真难得上班早了或到休息日了,却又想:「平时太辛苦了,还是看看动漫、电影,刷刷抖音、B 站鬼畜,玩玩游戏,解解压、放松下吧!」

周而复始,一年、两年过来了,团队还是那个团队,本人还是那个本人。跟两年前的本人相比,如同只是做需要更快了,因为手法、套路曾经相当娴熟了。这时,不禁感叹道:「前端有将来吗?」

与下面的相似,也是一毕业就在业务部门,工作日每天为业务需要忙得焦头烂额。不同的是,本人是个喜爱折腾的人,有本人的技术现实,就算工作日再忙再累,也违心额定投入一些工夫和精力去做些本人想要做的技术产品,尽管是试验性质的。

为了验证本人的想法并测验本人的技术产品,拿到业务中是最好的形式,它们之间能够相互促进。于是会在做业务的同时推动团队的技术及工具更新,让开发效率晋升下来。这样一来,不仅业务迭代变快了,本人也会有更多的工夫去折腾,几乎双赢啊!

一年过来了,用本人很多业余时间做的组件库、UI 框架、命令行工具给团队及公司带来很多收益,但受环境及本身限度,能做的也根本止步于此。然而,本人还想持续折腾,还想做更多的货色,还想进一步晋升研发效率,无奈道:「前端有将来吗?」

这些人的困惑,演绎一下,无非就两个方面:前端技术有没有将来?前端职业有没有将来?

解惑

回顾过去,HTML 的呈现,只是想让常识得以在世界范畴内共享,而不只是攥在手里和与身边人分享;CSS 也只是为了使文字排版好一些,可能像报刊、书籍一样容易浏览;而 JS 的诞生,扭转了这所有,使 web 产生了改革。

如果说只有 HTML 和 CSS 的「动态 web」的时代叫作「web 1.0」,那么 JS 所拉开帷幕的「动静 web」的时代就是「web 2.0」。在此之前,能够说 web 前端没有交互,也没有「前端工程师」这个职业。

精确地说,拉开「web 2.0」时代帷幕的还有另外一只手——Java。要想让 web 真正变动静,真正有交互,必须是客户端、服务端中间同时抓起,不然数据怎么流动起来?

前端职业的诞生与改革

这带来了商机,扩大了销售和流传渠道,传统企业将交易从线下搬到了线上,把实体转为虚构,并催生了一批服务这些企业的企业,以及服务服务这些企业的企业的企业。因而,以网页为载体所进行的业务越来越多,涵盖各行各业,千奇百怪,使页面的展示与交互越来越简单。

业务逻辑变得复杂,给后端开发也带来了很大的挑战。起初他们还能本人写写 JS 代码,HTML 和 CSS 让设计师或所谓的「页面重构工程师」去写。但在这种状况下曾经自顾不暇了,哪还有空去管前端?!「前端工程师」这个职业应运而生。

缓缓地,「页面重构工程师」退出历史舞台,他们要么转变为「前端工程师」,要么曾经转行。在做 web 利用开发时,前端工程师和后端工程师成为规范搭配。

随着智能手机问世,挪动互联网时代降临,又诞生了为不同智能手机开发客户端利用的职业,如:iOS 工程师、Android 工程师等。可将他们统称为「客户端工程师」。

他们的呈现,对后端工程师没有任何影响,因为他们的工作不存在竞争关系,对前端工程师影响就大了。

为了抢占用户手机里的一点空间,很多具备互联网基因的企业都要领有本人的客户端利用,招入大量客户端工程师。本来面向用户的性能,都改用客户端利用而不是 web 页面,前端工程师的工作根本只剩做做后盾管理系统,前端工程师在公司中被边缘化,并慢慢被裁减。

就是在这一时期,前端工程师开始纷纷去接触 Node.js,想将本人往后端开发方向拓展一些边界,给本人减少点生存空间。能够说这是「前端工程师」这个职业呈现以来的最低谷、最迷茫的期间了。

接着,企业头脑略微沉着了一些,发现每次要做新的性能,都得开发 feature * platform 遍,各种老本太高!就想着能不能有只开发一遍就能在不同客户端中运行,且体验不要太差的形式?这就又催生了混合开发、React Native 等开发模式、工具与框架。

因为新生形式大部分是以前端技术为主,前端工程师迎来了翻身的机会,最终逆袭。客户端工程师在公司中被边缘化,并慢慢被裁减,最初残余几个被并入「大前端团队」。

通过这一来一去,「前端工程师」这个职业如涅槃新生般焕发新春。那段「迷茫期」向后端拓展边界的摸索不是白做的,让本人可能摆正心态、端正思维——不要妄图用 JS 去取代 Java,从企业、从业界的角度讲,你凭什么取代 Java?

之后,前端工程师就行走在「泛客户端」这条路线上,即便是用 Node.js 在后端做点什么,也是为了达到让前端更好的目标,而不是试图去分后端开发畛域的一块蛋糕。

中国互联网倒退的这二十年左右工夫,产品研发流程中所参加的角色,逐步造成了产品经理、设计师、前端工程师、后端工程师、测试工程师、运维工程师等职业。

在一家上轨道的企业中,个别会有业务部门和平台部门,每类部门中都会有本人的产品经理、前端工程师和后端工程师,其余的就看公司了。业务部门就是间接撑持公司赖以生存的商业层面的业务需要的迭代,平台部门则是为业务部门的工作提供基础设施及技术支持。

长期以来,业务逻辑简直都在后端,前端根本只是一些交互逻辑,这让后端开发无论是在基础设施还是思想体系上都更加欠缺。而在近些年,前端的业务逻辑越来越重,并且因为前端工程师的职业门槛低,很多人没受过专业训练,软件设计、建模等能力差,代码的健壮性、可维护性、可扩展性极差,造成了很多工程问题和架构问题。

这十来年,Grunt、Gulp、Webpack、Backbone、Angular、React、Vue 等的呈现,都是为了解决前端开发的工程问题与架构问题。前端这些年始终在「补课」,为了能扛住应接不暇的业务需要,为了能赶上后端的基础设施与思想体系上的成熟度。

业务前端的窘境与前途

业务部门的前端工程师,处在一个难以逃脱的怪圈之中——

大部分人想晋升本身技术水平,却没工夫和精力在工作工夫「光明磊落」地去钻研技术,这在组织里是「政治不正确」的做法,必须要业务为先,要钻研只能本人的非工作工夫去下苦功夫。然而在非工作工夫,因为兽性或其余什么起因,本人又不会去钻研技术,或者不够深刻。

平时工作中在提效方面能做的顶多就是组件库和脚手架之类,一些利用、零碎的架构设计工作,都被平台部门的人做了,间接用他们的货色就能够了。业务部门也根本不会让其上面的前端工程师去做整体架构方面的工作,因为不合乎「价值观」,也就是「投资回报率」的问题。

大部分人在思想上存在一个误区——前端工程师不须要懂业务。认为本人的工作就应该是依据产品需要文档人工把设计图转化为页面,再与后端工程师把数据接口调通,保障本人没 bug 就行。

你看,就连本人都感觉本人在整个性能的迭代过程中充当「将产品需要文档与设计图转化为页面」的工具化角色,也就别怨他人把你当工具使了,可不就一个「有感情的工具人」咋的……如果前端工程师的价值如此,注定是被作为工具,作为资源呼来唤去。

前端工程师的这种行为,被称为「面向页面开发」;只会且终日围着框架、库团团转的,被叫作「面向框架编程」。

「面向页面开发」与「面向框架编程」的前端工程师会逐步失去竞争力,他们的工作终将会被其余职业的人或者非人工形式取代。

为了留住饭碗,业务部门的前端工程师不应该持续这样上来。有两个大体的改变方向:

  1. 如果非常酷爱技术,就是想先大大得晋升并冲破本人的技术水平瓶颈,那么就要去平台部门,这样能力失去很好的锤炼和晋升;
  2. 如果更喜爱本人所做的业务所在的行业,那么就去补充业务畛域常识,本人的技术水平咋样就不要那么关注,只需在大脑中晓得业界内大略有哪些技术和计划,遇到了什么业务场景能解决问题,碰到了就拿来用。

也就是说,前者会建设并不断完善本人在软件开发方面的思想体系,修炼本人的编程哲学,摸索更多的可能性;后者则成为某个业务畛域的专家,使用工具和计划的能力会很强,但技术能力偏弱。

其实整体来看,无论是抉择技术方向还是业务方向,会变得和后端工程师的思维及工作形式差不多了,前端工程师与后端工程师越来越同质化,只是解决的问题域不同。

以十年为跨度,业务部门中开发人员兴许不再以「端」来进行分工,间接「畛域工程师」或「产研工程师」一把搂!

将来十年里能做些什么

总的来说,就是榨取前端技术的剩余价值。以后最迫切的,应该是这两个方向:

  1. 相当成熟、稳固的基础设施,让业务开发可能专一于业务;
  2. 足够弱小、好用的低代码开发平台,给经营、产品赋能。

与此同时,能够摸索 AI、IoT 等畛域,并为下一个「十年」做筹备。

总结

要分明,在人类社会中,技术的存在是为了满足人们的需要,让生存更好;在企业中,技术的存在是为了服务于业务,帮企业赚钱。

前端开发,即「泛客户端」开发的实质是「解决人机交互这个畛域的问题」,从业人员的关注点应该是「如何更好地解决人机交互问题」,而不是具体所采纳的伎俩。要解决的问题是不会变的,但解决问题的伎俩是一直新陈代谢的,这也就是为什么「面向页面开发」与「面向框架编程」的前端工程师终将会被淘汰的起因。

在入行时,就应该想分明本人到底是要往技术方向倒退还是往业务方向,这对本人的职业路线影响很大。如果是往业务方向,那么工作的业务畛域就不能有大的变动,如上一家公司是做在线教育的,下一家就去做电商了;抉择技术方向,也要思考好本人所要深入研究的畛域,搞基建就搞基建,搞智能就搞智能。

前端工程师在「泛客户端」这条路上还能走多久?我认为是不须要人机交互的那一天。

前端技术还能用多久?可能是不须要 web 页面的那一天?


本文其余浏览地址:集体网站|微信公众号

退出移动版