# 谈谈前端天花板问题

# 问题

前端到底能干什么,它的天花板到底在哪?对于许多从事前端开发的人来说,这问题一直萦绕在心头。互联网行业这几年飞速发展,加上前端入门门槛低,会HTML、JS、CSS就属于前端范畴,前端人员大量扩展。

从工程角度而言,现在公司层面项目较多使用Vue、React作为View层库,两者的生态都很好,提供了方便的cli脚手架工具以及其他优秀的配套工具,开箱即用。从工程结果看,一两年的开发人员和3-n年资深前端开发人员差距不大,都能很好的完成项目开发以及准时上线,无非是代码组织以及质量可能不同而已。那如何体现前端人员之间的差距,以及该往哪些方向提升自己的能力?

个人认为,应该从两个方向突破这问题:硬实力软实力

# 硬实力

硬实力很好理解,就是一步一步的技术成长。作为技术人员,应该多积累一些项目经验以及技术沉淀。推荐读者可以在团队中多做一些技术分享以及codereview,分享受益最大的一定是分享者。另外github是一个很好的学习分享平台,从中有取之不尽的学习资源。

对技术学习方向有迷茫的同学,可以先了解下Javascript发展史。JS 23年(1995年)发展过程中,前18年不怎么受待见,仅仅是在网页中添加一些互动脚本,完全没有工程化的痕迹。主要原因有以下:

  • 性能不佳,执行速度不够快。经过几次浏览器大战,厂商的JS执行引擎执行速度大大提高,最出名的就是google的V8 JS引擎。

  • 语法特性的缺失,缺少Class等Java面向对象特性。ES6的标准给JS语言带来质的提升,优雅的Class、Decorator等Java语言有的,JS也可以有。

  • 缺少模块化,难以复用。ES6模块化、commonjs模块化解决方案带来代码复用,npm这个超级生态更是给所有前端开发一个福音。

  • 缺少优秀的IDE以及配套调试工具,动态语言容易导致无法预料的bug。ESLint、Stylelint等代码检查工具,以及Chrome Developer Tools调试工具,让前端开发更舒适,减少了bug出错率以及调试效率。

  • 应用场景局限在web浏览器中,无法做到跨端跨平台。随着NodeJS的诞生,JS可以应用更多场景:Web前端、后端(NodeJS)、桌面端(ElectronJS、NW)、移动端(React-Native、Weex、Cordova)、嵌入式( Duktape)、机器学习(Tensorflow.js)。大前端

从现在前端规模看,以上问题都很好的解决了。以前只能在其他语言做的桌面端、移动端、机器学习等内容,现在也在大前端的范畴了。所以现在前端工程建立起来了,前后端分离也更加彻底了。同时这也给前端人员提供了更广大的舞台以及更高的要求:前端除传统的HTML、JS、CSS三驾马车外,还需要了解后端服务知识,比如http协议细节、Nginx服务器知识、数据库知识等。总之,前端开发人员,可以从以上维度挑一些感兴趣的方向进行研究,比如V8引擎的设计、ES6语法糖原理、多端应用的工程化:NodeJS、Electron、ReactNative等。

# 软实力

软实力指团队合作中,作为技术人员与产品、交互、视觉、测试、市场等相关人员的沟通以及协作。

简单理解,就是你可以与任何一个非技术人员讨论相关工作内容。有人会说这是情商,我认为情商只是作为软实力的必备之一。举个例子,有些开发人员总是很烦恼产品或交互在提测快上线时,加新需求或改动需求,然后开始上线前的讨价还价沟通。造成这种局面仅是产品或交互的问题吗?为什么团队在开始阶段就不先确定规则:提测阶段不改需求?前端真的从开始就有好好理解产品需求并适当提供改进意见?交互、视觉、测试等中间职责链有对产品进行思考?一个好的团队知道效率的重要性,有效的沟通会大大增加团队的执行效率。

窥一斑而知全豹,前端人员也是半个产品,半个交互,半个测试,对工程的每个环节有自己的理解和思考。至此,也不能用前端来形容这个角色了。以为软实力就是更好更有效率的把工作完成?no,这只是其中之一,软实力更多的影响你的生活,你的人生,包括你的做事风格,思维方式等。这条路上,我也是个学习者。

# 总结

每个公司都有相应职级对应不同的技术title,就像一个梯子,硬实力逐级向上。一步一个脚印,踏实积累经验,多分享与学习,达到对应职级所具有的硬实力。相比较于硬实力的明线,软实力是个看不见并难以感觉的暗线。但软实力对整个人生影响巨大,每个人的软实力都是独特的。愿你我都是一个不断成长的人。