Skip to content

前端工程师的价值在降低 #15

@xwcoder

Description

@xwcoder

先来简单盘点下05年至今(2018年初)前端技术的发展吧。

05-09年

国内正式出现前端工程师职位。

05年左右出现一大批web2.0站点,前端工程师作为独立角色开始出现在开发舞台。

值得一提的是「网站重构」这本书05年在国内的出版,这直接引领了一波重构潮,直到现在还有前端工程师的招聘信息要求“熟练div+css布局”;同时很多公司还区分出了前端工程师和重构工程师的职位,有的甚至至今还保留这种工种区分。

这一时期web标准制定缓慢、语言制定缓慢,浏览器更新缓慢。浏览器提供的能力非常有限,前端工程师的主要工作内容是切页面,在页面上添加交互,然后和各种浏览器兼容问题斗争。各种类库主要在集中解决兼容问题和提供语法糖,尤其是jQuery的出现和流行,极大的提升了前端开发效率,但本质上并没有变化。这段时期评判一个优秀前端工程师的很重要的一条标准是是否深刻理解闭包、作用域、原型链;是否熟悉各种浏览器hack

工程化也开始被提及,主要使用命名空间做组件化,优秀代表是ExtJS和YUI。也开始出现了基于浏览器的富客户端尝试。

这一时期有两件新生事物的出现对接下来前端技术的发展产生了深远影响:

  • 08年chrome诞生
  • 09年Node.js诞生

10-14年

这一时期移动互联网爆发式增长。浏览器更新速度,web标准的制定、落地速度都达到了前所有的程度。web平台的能力不断提升,出现了所谓的App和web之争的讨论。无疑,App还是在移动端占据主角地位。Hybrid开发模式和工具开始出现。

前端部分承担了越来越多的功能,代码量也迅速膨胀,从而加速推动了前端工程化进程 。模块化探索方面出现了AMD、CMD、UMD之争,也衍生出了SeaJs、RequireJS等产物。得益于Node.js,大量单元测试、自动化测试、构建工具出现。Grunt刚刚引领一时潮流,gulp马上取而代之,随后没多久,webpack就席卷而来…

MV*框架开始涌现,jQuery风光不再。得到了Node.js的前端工程师们开始了一波前后端分离的热潮。

这一时期,技术会议中前端领域分享最多的主题就是前端工程化和前后端分离的最佳实践。

这是一个裂变的时期,旧有的体系不断被抛弃,新生事物不断出现。

前端生态开始变得无比繁荣,换言之也无比“脏乱差”。这是一个最好的时代,也是一个最坏的时代。

15-17年

这一时期浏览器更新速度,web标准的制定、落地速度一如既往的快速,更加有节奏。web平台的能力持续增强。前端工程师们也基本甩掉了历史包袱。JS语言也得到了极大完善,最重要的是ES2015的发布。

前端框架方面基本React、Vue、Angular三足鼎立,各自有自己的生态和拥趸。

Electron等基于前端技术站的桌面应用构建方案出现。

React Native发布。至此前端工程师觉得自己可以使用RN侵入“App领地”,同时可以使用Node.js侵入“后端领地”。

所谓的“全栈工程师”、“大前端”被提及。

接下来PWA可能是大家要纷纷实践的一个事情。还有WebAssembly,性能敏感的应用也可以得到很大改善。

看似前端工程师们迎来了最好的时代。

回到正题,之所以说前端工程师的价值在降低,是因为web平台能力的提升对前端工程师的知识体系和学习能力提出了更高的要求,而这些方便前端工程师们又是不占优势的。

目前前端工程化问题已基本解决,JS语言也得到了极大完善,那些之前如数家珍的奇技淫巧变得不再重要。web的能力得到了前所未有的增强,平台属性越来越明显,这时前端工程师的弱点就暴露出来了。

缺少领域知识

知识分两种,一种是知道不知道的,一种是会不会的。比如很流行的考察宏任务/微任务的那个题目,之前你也许不知道,但是告诉你之后立马就能解出来了。比如css3的2D/3D变换,之前也许不知道,但是简单了解下规则,马上就可作出移动、缩放、转动效果,可是要用到matrix进行复杂变化时,这就需要矩阵和三角函数知识了,这就是会不会的范畴了。

如果之前你一直做的是博客站,现在转去做商城网站,这几乎是没有什么迁移成本的。

随着web的能力越来越来强,web可以承载的功能越来越多,领域知识就变得格外重要。同样是使用WebGL做游戏,传统意义上的前端工程师和游戏客户端工程师哪个更容易切入?前端工程师需要补充的知识不光是WebGL(OpenGL ES)本身,还需要计算机图形学等知识,计算机图形学又要求线性代数等数学知识。而游戏客户端工程师只需要了解下JS的语法就可以干活了,而且经验丰富。随着MSE(Media Source Extensions )和TypedArray的落地,我们不仅可以不借助插件在页面上播放视频了,还可以在页面上操作视频流,比如合并分段mp4视频,比如解析ts流或者flv将其转换成fmp4在页面上播放,传统意义上的前端工程师和已经熟悉视频编解码的工程师哪个更容易切入?更容易解决编解码中的问题?

基础知识欠缺

前端工程师很大一部分并不是计算机科班出身,工作后很长时间也并不需要那些基础知识, 所有基础知识有所欠缺非常普遍,造成切入其他领域变得更加困难。

前端工程师要开始面对各种各样的应用场景了,每种场景可能都需要不同的领域知识,只学好JS、CSS、HTML就可以应付一切场景的日子不会再有了。这就对前端工程师的能力提出了更高的要求,其中最重要的就是持续学习、快速学习的能力,并且最好补齐欠缺的基础知识。而且很可能会进行垂直分化,毕竟相对来说领域知识和越底层的知识更新换代的频率更低,保值率更高。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions