Web开发全流程解析:从前端到后端

发表时间: 2024-06-15 14:03

这是知乎的一个问题,提问者是一个大二的学生,他说上课的时候老师说从薪资上来说,后端开发比前端开发高,掌握公司核心技术的就是后端开发人员。他问是不是真的这样,然后问自己的工作如何规划。

这里是一篇匿名回答,答主应该是在网易工作过,后来去了阿里巴巴,这个回答很有参考意义,所以整理在这里(原答案中有些大小写错误没有一一纠正)供大家学习讨论。分为两部分:

1、前端工资是否比后端工资低?

我可以负责任的告诉提问者:据我所知,至少在杭州,网易和阿里巴巴的前端和后端价格是相同的批发价。

我说的是业务层,如果你坚持认为开发一个Web 3D引擎前端比开发一个普通的Java前端要贵,或者说开发Hadoop的数据比开发一个普通的前端要贵,那你就太吹毛求疵了。

我们所指的前后端一定是Web开发的前后端,属于Web业务开发。否则,编写中间件、大数据后端、Web 3D引擎、前端框架设计前端等都超出了传统Web开发的范畴。

我是说同一级别,因为个体差异很大,但是一般一个P6/7前端和一个P6/p7后端是一个价格。

由于提问者还在学校,我再多说几句。很多大学老师其实离软件行业很远。我们不排除一些大牌老师和企业保持着密切的合作。比如我浙江大学的翁凯老师,我在网易的时候就经常和他合作(现在不确定),网易云课堂上有很多他的课程。

所以老师对行业的看法,你不能完全相信。在知乎上问是好的;但是知乎上每个人的看法都不一样,现在有人说后端价格高,我再详细给大家解释一下。

1、从一定程度上来说,后端薪资更高的观点也是正确的。为什么呢?如果算一下阿里前端和后端的平均薪资,后端肯定更高。

因为前端的地位这几年提高了。现在你去阿里的话,p7前端和后端(阿里的后端是Java)的价位是一样的,但是之前后端肯定是高一些,而且阿里成立的时候后端就已经有了,很多后端出身的人都进入管理层了。但是都还是挂着p9/p10头衔的后端,前端也才干了10年左右,p10以上的前端其实也就一两个。

严格来说,在 p10 级别,没有前端或后端之分,只是你来自前端还是后端的问题。如果你曾经是技术人员,那么你可以同时做这两种工作。如果你曾经是管理人员,那么这已经不再是技术工作,而是纯粹的管理工作。

因此,您现在不必担心这些问题,因为现在批发价是一样的,因为无论平均值是多少,重要的是您拿到手的东西。

2. 个人差异很大,即使是同级别,也有人拿的多,也有人拿的少。其实我是同级别工程师中薪水最高的。虽然谈薪水是高压线,但每个员工都或多或少地了解自己的情况。

我去阿里的时候开价很高,一个原因是我当时不想离开网易,不到某个价位我是不会离开的,另外一个原因是我想看看自己到底有多大的价值。

这涉及到程序员的一个生存策略:无论你想走还是不走,每年都要花两个月的时间去面试,需要不断评估自己的身价,发现自己的不足,并及时弥补。

很多程序员不知道自己值多少钱,所以要么不敢要工资,要么要价过高。如果你想知道自己值多少钱,测试市场是最好的办法。记住:你的价格是由市场决定的,而不是你的能力。在稳定的市场中,你的能力可以和你的价格成正比。但市场从来都不稳定。看看当年 Android/iOS 有多火爆,再看看现在。人还是那群人,但市场却在变冷。

3、不管是前端还是后端,都只是敲门砖而已。很多年轻人(我其实也挺年轻的)都有些执念,比如打算写一辈子Java,成为Java高手,走上人生巅峰。其实这种想法很好,但不可取。

从技术角度来说,写一辈子 Java 并不能让你成为 Java 高手,你还需要学习 JVM 体系的 Scala、Kotlin,以及更底层的 C/C++,还有和 Java 理念不同的 Go、Erlang。到最后你会发现 Java 只是敲门砖。真正让你成为 Java 高手的,是对于不同语言理念的理解,是对于不同场景下如何发挥 Java 优势的理解,是对于如何规避 Java 劣势的理解,是对于 Java 优缺点的深刻理解。而不是觉得 Java 是最好的语言,写一辈子 Java。

从职业角度,请注意我在上一篇文章中用了“xx”这个词来形容高级工程师。对于高级工程师来说,没有前端和后端之分。前端和后端只是敲门砖,因为我们今天讨论的 Web 业务开发,说实话,在计算机难度中处于最底层。至于有答主提到的鄙视链,其实是中国队鄙视泰国队,鸡同鸭讲。

在 Web 领域如果想升到高 P,基本要走业务架构路线,这个路线很考验你的大局观。如果你只懂个前端或者 Java,那根本就不够格。如果是纯研究技术的 P10,那基本就是一条难走的路。说得更清楚一点,对于传统的 Web 开发工程师(前后端)来说,如果不通过管理升到高 P,基本要朝架构走。这时候靠的就是你的综合能力和好的大局观,你原来的前后端技术只是垫脚石。

对于P10以上,还能玩技术的,我给大家指几个方向:算法相关的岗位(深度学习,计算机视觉等),数据相关的岗位,图形相关的岗位(比如网易做游戏引擎的专家等),大型系统相关的底层岗位(阿里云),安全相关的岗位。

对于普通的 Web 开发来说,即使你把前端和后端写得漂漂亮亮,你也不可能靠纯技术达到高 P。请时刻意识到自己处于计算机难度的底层,因为前端和后端技术本身并不是很深奥,基本都是工业实践的结果。你看到很多 xx 公司从 xx 实验室、xx 大学挖走深度学习专家、数据科学家,但你见过挖走教授来做 Web 开发吗?

总结:

1.前端和后端目前至少都是大厂批发价。

2、个人能挣多少钱取决于市场、个人能力和谈判能力,和平均工资无关。

3. 不管是前端还是后端,都只是你以后发展的垫脚石而已。传统的 Web 开发一点都不难,如果想更上一层楼,了解前端和后端是最低要求。

2.如何规划自己的职业生涯?

最后提问者问到如何规划自己的职业生涯。从上面可以清楚的看出:前端只是你的敲门砖。接下来我们来说说踏入前端大门之后的几个大方向:

1、Web开发:前端和后端是Web开发的两端。其实在很多外企,同城的Web开发根本不存在前端和后端这种称呼,都叫“软件工程师”或者Web开发者。其实我们需要转变一下观念:前端和后端并不是对立的,纯粹是一家人,只是一些国内外市场强行把它们分成了前端和后端而已。说到底,前端和后端都要懂。所以,你在保持前端高水平的同时,也要提高一些后端技术,但一定要分清主次,前端才是主。

2、数据方向:数据是未来互联网时代的石油,所以这个方向也不错。在前端就是可视化相关的技术,阿里巴巴有很多数据可视化的实践,因为阿里巴巴自称是一家数据公司(中石油?)。如果想做这个,建议大家去知乎搜一下相关的入门资料。提前说一句,可视化不只是用echarts绘制一个图表而已,这个领域很复杂,高校里做这方面的研究者很多,搜一下浙江大学的陈炜,可以多了解一下。反正肯定比web开发高,以后再进一步,还是离不开hive、hadoop这些大数据相关的东西。可视化是整个数据链路的最外层,最后还是要把整个链路层都搞明白,才能往P上去。

另外,Web开发分为Web前端和Web后端,这是从Web服务的角度看的。数据研发是基于Web开发,用数据赋能Web开发,懂可视化的必须具备前端能力,懂Hadoop的必须会Java,是Web开发的一个拓展方向。

3、大前端方向:上面说了,移动端的iOS/Android早就没落了,但并不代表它死了,只是所有公司都意识到了没必要原生开发。你知道维护Android/iOS/web三个团队要多少钱吗。这么小的用户量和难度,初创期直接all in小程序就行;等做大了再去做Android/iOS,也不用all in。30%原生+70%混合,用户完全看不出差别,成本和效率都好很多。一些大公司,比如阿里巴巴,RN、Weex实践的很多;由于公司内部Android/iOS的没落,前端在一定程度上把iOS和Android都收编了,统称大前端(兼node),比较出名的有饿了么、美团。这种收编在一定程度上也是政治需要。 像美团这样的公司,必须把重心放在后端。刘平川说,在整合Android/iOS、增加node团队之后,大前端的人数就和后端持平了。大前端的领头人威力可想而知:学一点iOS/Android总归是没有坏处的。

4、图形:图形的缩影无疑是游戏行业,当然阿里巴巴也有自己的游戏业务。前端自然和图形息息相关,除了上面说的可视化,还有相关3D引擎的开发,比如俞波团队内部正在孵化antG(未开源),淘宝已经有前端3D引擎的开源项目,支付宝里面的蚂蚁森林就是前端开发的,用到了canvas/webgl相关技术。做这一行要求也很高,图形相关算法、3D引擎开发都需要图形相关知识,严格来说很难算传统意义上的前端,更像是图形在浏览器端的应用,未来的开发肯定需要借鉴传统的图形方案,所以C/C++必不可少。同时3D/2D在浏览器端比较耗性能,需要webassembly支持,原生语言更是必不可少。

总之,无论广度还是深度,目标都是在技术上比别人高一个维度。

当然也有商业的考虑,商业+技术才能更好地解决问题、创造价值。