2016 年 5 月 29 日
为什么市场上优秀的前端这么少?
原因其实很简单,就是因为FE这个职位,就是一个充满矛盾的职位,这个职位的存在就是一个大BUG啊!
- 入门及其容易,精通极其困难。
- 一个智商正常的高中毕业生,一个星期,绝对能写出基本的HTML页面,附上CSS,还有简单的JS。让他学C?一个星期可能还学不到指针呢,指针要多久能跨过去还不知道呢。
- 但是,只要你的资质不差,努力肯学,那么随着你的项目经验丰富和自己的钻研,RD(C、Java,甚至PHP)升级到高级工程师到资深工程师不难。但是前端,看看现在市场上的资深工程师有几个,北极厂里面能到T7、T8的,其他厂类似等级前端工程师有多少就知道了,JS的作为一个从函数式编程过来的语言,很多比较低级的工程师因为理解不了他的思想导致很容易装撞上天花板,然后再也迈不过去了。
- 锦上可以添花,雪中不能送炭
- 现在因为大家对移动端重视,对交互要求高,看了国外的好东西多了,审美也上来了,所以才觉得前端重要,交互重要。
- 但是客观说,一个网站/APP,没有好的前端,就是交互不好、页面不美观,就当作一个丑人吧。但是没有后端,功能实现不好,性能上不去,那就是缺胳膊少腿的残疾人了。
- 所以很多用人的CEO、CTO、HR喊缺前端的时候,心里想的是这个锦上缺朵花,但是绝对不会给你炭的地位。
- 充满BUG的开发环境
- 是的,计算机的一个重大的特点就是兼容性的问题。这个任何开发都不否认。
- 但是能够不兼容到JS、CSS这个级别的,还有几个语言?虽然说连C这样的都有兼容性问题,C89下跑的好好的程序,到了C99下面可能就会有问题,或者说你用的Sun的Java实现写的程序到MS的Java实现下面就有问题,但是那都是很细节,很特定的兼容性问题了啊。
- 像JS这样,连最重要的事件处理就两大派系,DOM结构两大派系,CSS一堆混乱的情况,真心没见过更乱的啊。就好象说你用的JDK里面的Date对象默认给你处理的是玛雅历法,你是不是想掀桌子骂人?
- 所以JS的面试、开发中,很大一块被人津津乐道的就是各种兼容性的问题,比如让你自己写一个AJAX实现你怎么处理不同浏览器的兼容性问题啊,冒泡和捕捉怎么处理啊等等。
- 不过感谢IE6,要不然全中国的2/3的FE都少失业了。
- 职能/责任不对称
- 在一个成熟的公司、项目里面,前端只负责显示、交互,和简单的现实逻辑,后端负责业务逻辑、数据存储。
- 对应的,前端出点问题,比如按钮位置不对了,点击后的事件不对了,傻子都能看出来,但是后端的问题,除非真的是逻辑写错了,而且是很直白的错误,否则很难一眼看出来,洒家曾经客串过一次RD,写的一个BUG上线稳定运行30后才发现。
- 但是出问题了,因为所有人,包括QA第一接触的就是前端界面,所以很自然的就把bug扔给前端,前端吭哧吭哧看半天,发现有60%都是后端的问题再扔过去——做过业务的FE同学肯定有过这样的经历吧。
- 所以洒家自己做leader的时候很多同学都抱怨过这些类似的问题,不是自己的问题但是第一个被指责的却是自己。很不爽,或者说,很委屈。
- 职业技能树乱点
- 一般公司里面,FE和RD都是放在技术体系下面,最终汇报对象都是CTO,但是FE在很多地方,技能树是瞎点出来了!
- 如果你看FE的面试题目,会发现和RD没啥区别,语言的特性、性能的分析、基本算法等等,除了把语言换掉基本没事情区别。
- 但是实际工作中,一个好的FE,要跟PM、UI/UE/UX、RD、QA打交道,需要你理解产品的思想,懂艺术设计,发现bug的时候还要跟踪到后端确定是谁的bug等等,人家RD的技能数是一颗茁壮成长的苍天大树,FE的技能书就是一个歪歪扭扭枝枝杈杈但是还要你长高长粗的怪树。
- 最明显的,需求评审会上,RD只关注这个功能我能不能实现,FE还要关注这个按钮能不能这么画,这个设计会不会有浏览器兼容问题,这个交互是不是合理——虽然这是别人的工作但是一旦有问题第一个被骂的都是FE啊。
- 职业发展线路不明
- 其实这点从整个互联网行业都有,你做医生、教师这些职业,看看周围的人,就知道,如果你做得好,或者不好,或者平庸,你到40、50、60的时候是什么样子。但是IT从业人员,尤其是互联网从业人员,看不到这个未来,所以才有那么多类似能不能写程序到30岁这样的问题。
- 在这个前提下,FE更悲催的是,RD可以看见自己的技术路线是,初级工程师、高级工程师、资深工程师、Team/Tech Leader、Tech Manager,直道CTO,当然半道该行的不算啊。
- 在FE看来,一直升到资深工程师还是可以的,但是后面除非很大的公司,有专门的前端Team,否则再升Leader和Manager的时候,FE处于一个很不利的地位。我们确实也看到因为FE的技能树乱点,所以很多FE也会在合适的时候走PM、UI、甚至创业的路线但是很难看见FE做到CTO(除非加入创业公司直接做CTO)。
随手画了这么一张图,只要你勤奋、努力,RD是可能随着时间累计自己的经验然后提高自己的等级的,但是FE可以看到,在蓝色点之前,很快的就能学到80%的技能,但是后面的20%需要非常长的时间去突破,甚至有人因为不理解FE的很多编程思想,几年都一直突破不过去。
加上其他的原因,比如这几年FE的技术发展确实太快了,每天都在层出不穷的概念、名词,要分辨哪些是真金白银的技术,那些是大公司的工程师为了升职加薪搞出来概念,然后再学习吸取这些技术,对FE的要求也无形中提供很多了。
所以,一个充满了BUG的职位,怎么可能那么容易招到合适的人才呢?