这是来自知乎的问题,是一个大二学生问的,说老师在讲课时说,从工资来看,后端开发要比前端高,并且说,掌握公司核心技术的都是后端。他问事实是否真的如此,然后问该如何规划自己的工作。
这里整理的是个匿名答案,答主应该是在网易工作过,后来去了阿里。答案很有参考意义,特此整理出来(原回答的大小写有部分错误,未一一修正)一起学习讨论。分两部分:
我可以负责任的告诉题主:据我所知,至少在杭的网易、阿里,前端跟后端是一个批发价。
关于以上,我说的是业务层的。假如你非得说开发Web 3D引擎的前端比一个普通的Java价格贵,或者玩hadoop的数据研发比一个普通前端高这就是属于杠精了。
我们指的前后端,一定是web开发的前后端,属于web业务开发。不然写中间件、大数据的后端,写web 3D引擎、前端框架设计的前端,都属于脱离传统web开发的范畴了。
我指的是同水平的情况下,因为个体的差异十分大,但是普遍一个P6/7的前端跟一个P6/p7的后端是一个价格。
题主因为还是在上学,我再多说几句。很多大学老师,其实离软件行业很远了。我们不排除一些大牛老师跟企业保持着密切的合作。比如我老师浙大翁恺,我之前在网易的时候还经常与我们有合作(现在不清楚了),网易云课堂上有大量他的课。
所以,老师对行业的一些看法并非可以全信,来知乎问问是好的;但是知乎上每个人的观点也不一样,现在就有人说后端价格更高这个观点,我再给你讲得详细一点。
1. 一定程度上上持后端薪资更高的观点也是对的。为什么?如果你算一下阿里前端的平均薪资和后端平均薪资,一定是后端高。
因为前端的地位提高,就这几年的事情。现在你去阿里p7前端跟后端(阿里后端就是java)是一个价格,可是之前一定是后端高,加之后端在阿里创建之初就有了,很多后端出身的人早进入管理层了。但是他们依然是挂着p9/p10的头衔的后端,前端不过是10年前后才发力的,p10以上的前端其实就那么一两个。
严格来讲到了p10这个级别已经没什么前后端这一说了;只不过是前端出身或者后端出身而已。如果是一路走技术路线上来的,前后端啥的都是通吃的。如果走的管理,其实已经不算技术了,那就是纯粹的管理。
所以,你现在根本不用担心这些问题,现在批发价是一样的,因为不管是平均数怎么样,到自己手里的才是王道。
2.个体差异很大,即使同一个级别拿的也有多有少。我其实在同级别的工程师里是属于最高薪那个级别的,虽然讨论薪资是高压线,但是每个员工都或多或少知道自己的情况。
当时去阿里时,我开的价格很高,一个原因是我当时并不想离开网易。如果不到一定价格我是不会走的,还有一个原因是,想探一下自己的价值到底有多高。
这就牵扯到一个程序员生存策略了:每年一定要拿出两个月出去面试——不管你要不要走。需要不断评估自己的价格,和发现自己身上的缺点及时弥补。
很多程序员不知道自己值多少钱,要么不敢要工资、要么狮子大开口。想知道自己值多少,去市场上试水是做好的办法。要记住一点:你的价格是市场决定的,而不是你的能力。你的能力,在稳定市场情况下可以跟价格成正比。但是市场永远不是稳定的。看看当年的安卓/ios多风光,再看看现在,人还是那批人,市场却要凉了。
3.不管是前端还是后端只是个敲门砖。很多年轻(其实我也挺年轻的)的小伙伴们都有一些执念,比如打算写一辈子Java成为Java大牛,走向人生巅峰,其实想法是好的,但是不可取。
我们从技术角度来说,因为写一辈子Java是当不了Java大牛的,你依然需要学习JVM系的Scala、Kotlin,更底层的c/c++,还有Go、Erlang这些拥有Java不同哲学的语言。最后,发现你Java只是你的敲门砖,真正让你成为Java大牛的是你懂的不同语言的哲学,懂得不同场景下发挥出Java的优势,规避Java的劣势,深知Java的优缺点。而不是抱着Java是最好的语言,写一辈子Java。
从职业生涯的角度来说,注意我在前文中用描述高P的工程师的词汇,『xx出身』。对于高P而言,没有前后端。前后端只是敲门砖,因为我们今天讨论的Web业务层面的开发,说实话都是处于计算机难度底端的玩意。之于一些答主说的鄙视链,其实就是中国队鄙视泰国队,菜鸡互啄。
在Web这条线上想走到高P,基本上都是走业务架构这条路,这考验的就是大局观了。你只会一个前端或者一个Java根本不够格。纯粹研究技术上P10的基本上属于蜀道难了——说的清楚点,对于传统的Web开发工程师(前后端)不通过管理走高P基本上只有往架构方向走,这个时候靠的是你全面的能力和良好的大局观,你当初的那些前端技术、后端技术就是个敲门砖。
p10以上还能纯玩技术的我指出几个方向,算法相关岗位(深度学习、计算机视觉等)、数据相关岗位、图形学相关岗位(比如网易开发游戏引擎的大牛等)、大规模系统的底层相关(阿里云)、安全相关。
普通的web开发,即使前端写出花、后端写得上天了,也无法靠纯技术走到高P。请时刻认知到自己处于计算机难度的最底层就行了,因为前后端技术本身没什么高深的,基本上都是工业界实践的结果。你看到很多xx公司从xx实验室、xx高校挖了个深度学习专家、数据科学家,你见过挖了个某教授来做web开发了?
1. 前后端目前在大厂至少是一个批发价。
2. 你作为一个个体能拿多少取决于市场,也取决你的个人能力和谈判能力,更平均薪资无关。
3. 不管是前端还是后端,只是你之后发展的敲门砖,传统web开发没有难度可言,想走高P懂前后端,是最最起码的要求。
最后,题主问到如何规划自己的事业。上文说的很清楚了:前端只是你的敲门砖。下面,谈谈几个靠前端敲门后的大方向:
1. web开发:前端、后端是web开发的两个端,其实同城web开发,在很多国外公司没前后端这个说法,都叫做『软件工程师』或者web developer。其实,要转换一个思想:前后端并不是对立的,而是纯粹的一家人。只是被国内外的一些市场强行分成了前后端,归根到底,是需要前后端都懂得,所以在你保持前端高水平的情况下,精进一些后端技术是必要的,但是要分清主次,前端为主。
2. 数据方向:以后数据就是互联网时代的石油嘛,这个方向也不错。在前端这边就是可视化相关的技术,在阿里这边有大量的数据可视化实践,因为阿里号称自己是数据公司(中石油?)。想做这一行建议搜知乎相关如何入门。提前说下,并不是用echarts渲染个图表就叫可视化了,这行水非常深。在高校有很多这个方向的研究人员,所以搜浙大陈为了解下,反正逼格比web开发高是一定的,以后再精进也还是离不开大数据相关的东西什么hive、hadoop之类的,可视化是整个数据链路最外层,最后走高P还是需要理解整个链路层的。
进一步说,web开发分web前端和web后端,是以web服务的角度来看待的,数据研发这个是在web开发的基础上用数据附能,懂可视化的一定是有前端能力的,懂hadoop的一定java玩的溜,属于web开发的拓展方向。
3. 大前端方向:上文提到,移动端的ios/安卓早就式微了,但是并不代表死了。只是所有公司都意识到,没必要上原生开发了。知道养安卓/ios/web三个团队多浪费钱嘛,就那么点的用户量和难度,创业期直接all in小程序就行了;等做大了再上安卓/ios,而且也不用全上,30%的native+70%hybrid用户根本看不出差异,而且成本和效率不知道强了多少。一些大厂,比如阿里,在大量实践rn和weex;由于公司内部安卓/ios式微,一定程度上,前端把ios和安卓收编了,统称大前端(还有node)。比较出名的,是饿了么和美团,这种收编一定程度上也是政治的需要。像美团这种企业,一定是重后端的。距刘平川说收编完安卓/ios后加上node团队,大前端人数与后端持平。可以想象大前端的leader的话语权了:学一点ios/安卓没坏处。
4. 图形学方向:图形学的集大成者无疑是游戏行业,当然阿里也有自己的游戏业务,前端自然是与图形学有千丝万缕的联系,除了上面提到了可视化,还有相关3d引擎的开发工作。比如,玉伯的团队正在内部孵化antG(未开源),淘宝那边已经有前端3d引擎的开源项目,支付宝内部的蚂蚁森林,就是前端开发的。用的正是canvas/webgl相关的技术。做这一行要求也非常高了,图形学相关的算法,3d引擎的开发,这都需要图形学相关知识。要严格来讲,很难算传统意义上的前端了,更像是图形学在浏览器端的应用,之后发展肯定是需要借鉴传统图形学的方案,所以c/c++少不了,同时,3d/2d在浏览器端吃性能,需要webassembly加持,native语言是更少不了了。
总之,要么在广度上下功夫,要么在深度上下功夫,其目的就是在技术上高出其他人一个维度。
当然,还有从业务方面考虑的,业务 + 技术,可以更好的解决问题,创造价值。