我曾经潜水了一年多的应届生技术交流群,发现大家并不是很清楚后端是什么,他们只听过这些话:
我试图问过他们,为什么想做后端,不想做前端,毕竟前端要学的技术会相对少一些(这里只相对于后端,无任何贬低的意思),并且前端的岗位数量也没有那么不堪。也得到了一些我不太认同的答案:
的确,很少有人告诉你你可以具体从事哪个方向。就像一个卖Java课的自媒体,他只会吹嘘Java多好,后端多好,很少甚至回避给你讲其他方向的行情是怎样的。毕竟赚钱嘛。
注意:这里只理性讨论每个方向具体从事什么工作,我们不讨论哪个方向更好,哪个方向有什么缺点。任何一个方向的从业者都是值得尊重的,更多的还是看你喜欢哪个。
前端更多的是直接为用户提供服务。像我们日常使用的电脑、手机网站,以及App里的很多促销活动页面等,都跟前端有关系。
有些前端需要给用户提供丰富的操作界面,比如某些游戏的活动界面,界面更复杂一些。有些前端可能负责搭建各种管理系统,那这种一般会有现成的UI框架去使用。
现在听起来,还是觉得前端需要有艺术细胞?
像平时的网站开发、小程序开发,基本都属于前端的开发范畴。因为网页开发的灵活性,很多App里也涉及前端的开发,比如淘宝的某些促销页面,抖音的某些复杂页面(如商城),基本都是属于前端开发。
前端一般是单体应用,什么是单体应用呢?其实可以理解为所有的前端组件都运行在同一台设备上。有的同学可能学习过组件化之类的概念,那组件化最后可以打包成一个系统,然后运行在用户的电脑、手机上。系统稳不稳定、卡不卡,那基本取决于用户的设备强不强悍。另外即使开发多线程功能,也是在用户的设备上进行的。除非开发不规范,否则一般不会压垮用户的设备。在这里提单体应用,是为了跟下面后端的技术架构做一些区分。
后端是本专栏讨论的重点。
后端一般是间接服务于用户,负责与各类数据库打交道,用户直接使用前端,前端再通过后端访问数据库,后端再将数据返回给前端,最终呈现给用户。那对于一些简单的小项目,为什么不直接让前端访问数据库呢?比较简单的解释是,前端一般运行在用户的设备上,有的前端代码甚至可以完全展示给用户(比如在一个网站上右键查看源代码),用户很容易获取到数据库的访问密码。另一方面,每个用户都通过前端直接访问数据库的话,数据库的连接数会大大增加,比如一个用户量为1万的网站,同一时刻可能有1万的连接连到数据库,这对数据库来说压力山大,最终拖垮数据库的性能。
随着后端技术栈的发展,后端从单体应用逐步演变为分布式应用。后端的单体应用,一般是指所有功能都在一个项目中,例如大学课堂里的图书管理系统、课程管理系统等。目前仍然有很多项目使用单体架构,比如一些小公司的项目,单体架构成本更低,性能也满足日常使用。后来,单体应用已经不再满足于高并发的场景,分布式技术逐渐诞生。
所谓分布式,可以简单理解为,一个完整的应用被拆分成多个模块,并运行在不同的服务器上,模块之间通过网络进行调用。好处是模块解耦,能抗的访问量更大了。坏处则是增加了系统的复杂度,同时网络的好坏也可能影响整个系统的稳定性。
从现在的技术来看,后端和前端是分开的两个独立个体。一般后端工程师只需要处理后端开发即可,不需要掌握前端技术栈。当然,一些比较老的项目,仍然让后端工程师同时承担前端的开发工作,所谓的全栈(全占)工程师。
客户端分移动客户端和PC客户端,主要负责研发各类App。常见的比如安卓客户端、iOS客户端、Windows客户端。
安卓App一般是用Java开发的(目前也开始使用其他语言),所以Java能开发的不一定是后端,包括一些Windows软件也是Java开发的。
如果你觉得你真的不适合编程,那也可以看看下面这几种选择。当然,这里只做简单介绍,如有兴趣还请自行探索。
互联网产品经理在互联网公司中处于核心位置,需要非常强的沟通能力、协调能力、市场洞察力和商业敏感度。不但要了解消费者,了解市场,还要能跟各种风格迥异的团队,如开发团队和销售团队进行默契的配合。
上面是百度百科对产品经理的解释。我个人的简介是,产品经理一般是发现用户的痛点,亦或者发现潜在的增长点,然后经过各种调研、数据分析等,产出一份需求文档。给需求赋予一个故事,并把故事讲的动听,才会让大家看好你的需求,愿意与你并肩作战。
我们这里举一个真实的例子,简单了解下产品经理的工作:
需求背景:某视频App想增加一个聊天功能,一是想在社交领域分一杯羹,另一个点是希望聊天功能能增加App对用户的黏性,让用户越用越想用,一天不用浑身难受。
预期收益:社交功能渗透+1%,用户留存+2%
需求背景和详情是明确的,就是想加一个聊天功能。这里的需求就是由产品经理提出的。
预期收益是什么呢?一般大厂做需求,不是简单开发完成就可以上线给用户使用的,而是先给小部分用户使用(灰度测试),如果能从这部分用户的使用中得到较好的数据验证,则认为这个功能是有价值的,最终才开放给所有用户使用。
这里我们用白话解释一下上面提到的预期收益:社交功能渗透+1%,因为这个按钮是一键联系作者,所以期望通过这个按钮来引导更多的用户使用聊天功能,比如100个用户看到了按钮,最起码能有一个用户点击,那就基本符合预期。用户留存+2%,一个产品很看重用户的留存,比如你注册了一个App,玩了一会觉得无聊,就卸载掉了,说明App可能留不住用户。如果用户通过社交功能找到了自己的知己,那他每天都想打开App来找作者聊天。
因本专栏更多的是面向还未工作的大学生,很多同学并不了解前端、后端、客户端分别是什么,导致对自己的职业规划并没有太多的认识。最后选择方向时基本就是靠身边的传言来决定。