前端有将来吗?

本文首发于 欧雷流。因为我会时不时对文章进行补充、修正和润色,为了保证所看到的是最新版本,请阅读 原文

最近一段时间,经过各类方式与同行们交流了「前端技术」与「前端工程师」的现状及将来发展的方向性问题,你们在一些方面有所共鸣。前端

下面就来讲说个人一些见解——web

困惑

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

有此困惑的人,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 页面的那一天?


欢迎关注微信公众号以及时阅读最新的技术文章:

Coding as Hobby

相关文章
相关标签/搜索