今天是2023年3月6日,已经干了6年前端了。没怎么正经想过这个问题,准备认认真真的回答下,给后面的想入坑同学避坑。
先上结论不建议。
首先是地位低。
没错,前端在整个需求研发链中的地位是最低的。
一般来说一个需求的从立项到上线的流程大概是这样的(只是初略说下)产品组提出需求 交互视觉设计交互和视觉稿。前后端参与开发开发完成后交付测试测试完成业务方进行验收,验收通过上线。
在整个流程中,前端是既向前,也向后(累)。
咋们大前端面对产品视觉交互来说(设计),就是相当于一个乙方。要去完成各种交互设计和视觉设计,这其中如果实现难度大复杂一点的效果话,只有认了加班加点去搞,没什么话语权的,就是技术大佬出面也只能降降级或者拉长工时。想要设计产品,更改交互和视觉那是不可能的,因为前端的一个重要的工作内容就是去完成需求。所以就是个乙方没什么地位。
向后就是面相后端,也是个乙方。简单来说前端要把后端抽象的数据和信息具象化,后端设计数据结构不会管你页面怎么设计的,他们会考虑数据的聚合性关联性等等,方便对数据进行增删查改。后端吐出什么样的数据结构前端也只有认命,如果你觉的返回的数据结构不合理,想要后端去改。那基本不可能了,就是你的前端大佬出面也解决不了,后端的架构设计不可能因为你一个小前端觉得数据操作起来难受就去更改,不好处理的话,就自己想办法,堆屎山代码去处理吧(这个真没办法,懂的都懂)。
面向测试还是个乙方,测试由于要对产品质量负责,对线上bug负责,在日常研发中话语权是很重的。做前端面对各种各样的机型浏览器环境,是很难把一些bug从根上处理干净,例如低端机型的js动画卡顿,基本无解。如果碰到个上纲上线的测试,那基本上天天就难受吧,测试不下班你也走不了,测试下班前提的bug,你也要加班加点的修完才能下班。不然第二天测试为了不担风险,会直接向上汇报,到时候会更难受。
综上看是不是前端地位很低?面向什么群体都是乙方,只有加班的份,易背锅。
除非整个系统挂了,其他一些线上问题,只要想让前端背个锅,都能让你背。举个例子,曾经做过一个功能页,展示用户优惠的价格,因为这个是关键信息。不能做字段防御,例如后端未下发就不展示这个dom,这样的话跟总价计算不准。但是有一天后端就是出问题了, 未下发字段,前端显示的是节省了undefined元,导致用户投诉。
所以问题来了,前端有问题吗?
可以让你有,理由就是页面鲁棒性不够,这个字段缺失的情况下,前端可以根据总价和结算价格计算出来,完全可以避免掉这个问题,承担部分责任。
因为前端直面用户,所以后端出的任何问题,哪怕是交互设计不合理的问题,只要别人愿意,都能让你背一部分锅。除非你巧舌如簧舌战群儒,但是天天扯皮撕逼是不是也很累? 晋升难
前端晋升面试有个经典问题,面试官会问,你说你做的这些功能,我找别人做不是一样也能做出来码?你做的这些和外包有什么区别呢?如果你bulabula回答了一堆例如性能还原度鲁棒性强等等之后,还是可以问,如果找别人做,没你说的这些,但是功能上不一样可以用吗?所以你说的这些价值上如何能体现出来。
这就是前端晋升的一个大问题,只是日常做需求,把代码写的精益求精,性能很快鲁棒性强并没有什么用,只是做需求,没法衡量价值。想要晋升就要会搞事情,搞事情就是造轮子,搞个新的工具库、脚手架、npm包、新的组件库、新的规范,引入新的框架等等,总之如果不搞事情,只是本本分分做业务基本不会晋升了。
而日常工作中排需求时长不会因为你要搞事情,就给你多几天开发时间,想搞事情就只有加班和周末。
而后端就不一样了,他们在日常研发中对代码的重构抽象就可以作为晋升的理由,而且说出来十分的好看,例如优化了表的设计减少了数据冗余度,降低数据调用层级等等,这些做好统计都能直观的反映出来节约了多少成本。
想想一下前后端都提名了一个人,只能晋升一个。后端说他在日常研发中重构抽象代码,为公司节省了xxxx元的成本。而前端说我在日常研发中也重构抽象了代码,让页面打开快了200毫秒。你是老板你会提谁? 可替代性强
大部分前端没有一个是不可替代,前端做的大部分工作就是把后端的接口数据和视觉界面连接起来,变成可交互的。所以就这个事情来说10年的前端能做,刚毕业的新人一样能做,无非就是做的快慢好坏而已。新人做的慢?没关系加班搞一搞一样能和10年的前端一样一周做完,无非就是新人加班多而已。新人做的bug多?没关系多加班修bug就好了,加班多还显的团队氛围好,有活力。等修完bug最终上线,老板和用户能看的出来这个页面是新人做的还是10年老前端做的吗?所以只要互联网不强制8小时的话,哪怕你经验再丰富,与新人相比没有任何的优势。
做些技术难度大的会被不可替代吗?一样的。我曾经遇到过一个很厉害的同事,一个用canvas做的大数据下的场景选择组件,用了大量的线性代数做矩阵计算,后来这个同事走了,没人能维护的了,那么猜猜后来怎么样了?用这个组件的页面先不做大的迭代维护了,然后又找人另起炉灶做了个新的,后来的人数学不行,玩不转线性代数,全拿三角函数替代计算,做完后总体来看跟老的比差多了,数据量一大就会卡。但是没关系,有些局部功能比老的好就行了,比如支持了高清绘图和可缩放功能,这个做完之后虽然与之前的比更烂了,但是这个项目让三个人获得了晋升。
所以如果你觉的深耕前端技术增强自己的不可替代性的话,建议你别走这条路了。后面的人面对维护不了的东西,更愿意重起炉灶,做完了还能弄个晋升的理由。不要觉得某个功能只有你能做别人做不了,什么样的前端功能都能做的出来,只要市面上有,打开开发者模式研究研究就知道个大概了,再不行就全用图片一帧帧的糊出来,就是体验不好,但是功能一样用。
国内没有哪家公司是靠前端技术壁垒占有市场的,你要是能开个淘宝宝京东东,价格都是他们的一半,哪怕页面没有css,体验糟糕至极,用户照样会去在你上面下单。
说了这么多,反正是不建议入坑前端了,还想入坑的同学建议多考虑下。