前端工程师,后端工程师以及全栈工程师都做什么?各自的薪水状况又如何?
大家好,这一期我们来谈一下,前端工程师,后端工程师和全栈工程师的技术要求和职责范围。
具体来说,不仅仅对于软件开发门外的人来说,对这项工作内容云里雾里,即使对于程序员自身来说,有很多对这三个概念也是模糊不清的。
希望通过这一期的讲解,让大家清楚这三个概念,然后你可以选择自己的主攻方向。
首先我们来说一下前端工程师。
前端工程师的主要职责是处理面向用户的界面。所有涉及到的可视化的内容,以及在这些可视化内容基础上的数据交互,比如说输入输出,这都属于前端工程师的职责。
以网络应用开发为例子的话,前端工程师需要了解HTML,CSS, JavaScript,这算是最靠前的三门技术。
具体到实际的开发当中,又会涉及到很不同的架构。在不同的公司中会有不同的架构应用,这就要求前端工程师需要适用各种各样的开发环境。
这样的开发环境框架,比如说Angular, Reacr, Vue等等。这些框架的好处就是能够很快的帮助用户搭好整个程序的框架, 从而增加程序的扩展性和开发的效率。
对于一些非常庞大的系统来说,可能会用到一些设计模式比如说Redux来管理状态。因为这些状态管理系统是额外的一套系统,如果用不好的话,可能会增加开发的难度,而不是减轻开发的负担。
所以我建议在选择这类开发模式的时候一定要慎重。
像以前,这类状态管理都是放在后端处理的,但是在现在的网络应用开发中,把这一部分都放到前端来了。这样做的目的就是减轻后端的数据吞吐量,提高后端的数据处理效率。
另一部分从后端挪到前端来的就是路径管理部分。在多页应用程序开发中,一般都是后端来返回某个页面,前端显示就行了。
在现在的应用开发中,一般都是单页应用开发,这样路径的处理就在前端进行了。这样做的好处是提高前端应用的处理效率。从而增强用户的体验。
用户界面这一块也有单独的框架,也可以称之为CSS的框架,比如说像bootstrap,primeNG 等等。这些东西作为前端开发工程师来说是应该知道的,至少要知道一种或者几种。因为很多公司都在用这些东西。
基于这些框架,开发出来的界面看上去更专业,而且速度很快。
除了这些界面架构,还要了解CSS里面的一些基础技术,比如Flex Box,Grid Box等等, 最好在用一些界面框架之前先了解这些比较基本的CSS的技术。学好这些基本技术的最大好处, 就是不会被一些界面的框架绑住手脚。
当然了,还有一部分要学好的东西就是前端的编程工具,比如说Visual Studio Code是比较流行的。要了解一些需要的插件, 这样可以让你的开发工作变得容易一些。
代码管理工具部分也是要了解的,这个不管是前端开发,后端开发还是全栈开发都需要掌握的,比如说现在比较流行的是Git版本管理。
前端开发还需要学一些包管理的工具,比如说NPM, YARN,web pack,Babel, Sass等等。
前端工程师还需要了解HTTP协议的基本的操作,比如说get,post,put,delete等等,然后要了解返回值代码代表的意义。
JSON数据结构和应用程序接口的调用也是必须要了解的。因为现在基本上都是restful API,所以以上这些知识是经常被用到的。
对于前端工程师来说,设计界面虽然不是个硬性指标,但是你如果懂的话肯定是个优势的。
一般的公司都会有UI/UX设计师,作为前端工程师呢,你的任务就是如果能看懂他们的工作,然后把他们的工作转成代码,实现出来就可以了。但是有些小公司是没有UI/UX设计师的, 所以前端工程师的任务,也要做界面的设计。
到目前为止,基本上介绍完了前端工程师的工作内容,内容不少吧?嗯,是的。
接下来我们来说一下后端工程师的工作内容。
后端工程师主要是开发服务器端运行的代码,这些代码是不会在客户端跑的。从一定意义上来讲后端的工作就像盖楼房的地基部分和框架部分。前端的工作就像除此之外的那些工作。
后端开发工程师需要学习的语言,可以有很多种,比如说JavaScript,如果你用nodejs的话。也可以是PHP, 也可以是Python, 也可以去asp.net, 也可以是Java。几乎所有的语言都可以在服务端用起来。跟前端开发一样,在后端开发的时候你可能也要用一些框架。比如说nodejs的话, 你可以用express,PHP的话,你可以用laravel, Python的话有django和pyramid。对于所有后端开发的程序语言,都有相应的开发框架, 也有可能你自己定一些开发框架,或者你们公司已经在使用一些自定义的开发框架了。
后端工程还要有很强的数据库的知识,如果你使用关系型数据库也就是结构化数据库的话,对于SQL一定要精通,如果你使用非关系型数据库也称之为非结构化数据库的话,对于JSON以及对应的数据库工具一定要精通。后端工程师需要对数据库的表格或者数据集进行设计。
后端开发工作当然要处理HTTP的请求, 这就需要更加清楚每一种请求状态所代表的意义,以及返回值的定义,还有接收数据的定义。
在接口开发这一部分当中,你可能会用到一些ORM模型, 比如说,asp.net的话有Entity framework,Java的话会用到hibernate。你也可以用直接的sql语句来处理数据库的操作,甚者可以写一下复杂的存储程序。这里尤其需要指出的是, 对于存储程序开发来说, 肯定要对sql语言相当熟悉,只有这样你才能开发出比较高效的存储程序来。
对于非关系型数据库,比如说Mango db可以用好类似mongoose的工具。
后端开发一个很重要的工作内容就是保证数据的安全性。比如有一些对于一些特定的接口,只能有特定的用户来使用, 其他的用户不可以进行访问的。
后端开发还要了解服务器部署的工作内容, 只有了解这些,才可以告诉DevOps工程师如何部署你的服务端程序代码。这里的工作,比如说如何设置nginx, 如何使用docker container,如何使用tomcat, iis等等。
最后来说一下全栈开发的工作内容。
全栈开发工作内容,基本上包含了前面谈到的前端工程师的工作内容和后端工程师的工作内容。全站工程师的另一个重要任务就是把前端和后端的工作合起来。
这个工作不像前端工作或者后端工作那么单纯,全栈工程师需要了解几乎所有的事情,尤其是对于一个项目在使用微服务处理的话,有可能有十几个,20多个,甚至更多的微服务系统,全栈工程师需要对这些都要了如指掌。
但是话又说回来,作为一名全栈工程师,不一定说每天都要对所有的事情亲自去处理。一般来说,具体的工作重点取决于当前的项目状态,全栈工程师可以一部分时间用在前栈开发部分,然后过一段时间可以去做后端的开发,用来平衡前后端开发的工作量和工作进度。
有一点可以肯定的, 全栈工程师几乎可以跟开发工作中的任何环节中的开发工程师进行合作。
从薪水的分布状态来看,一般来说,由于工作内容的复杂性和多样性,前端工程师的工资相对来说要高于后端工程师的工资,但是这个差距并不大。这个跟具体的公司的具体的工作项目是有关系的, 有的公司后端工程师挣的比前端工程师还要多呢。
全栈工程师因为什么都可以做,所以理论和现实上来讲,薪水比前端工程师和后端工程师都要挣得多一点。
但是值得一提的是,很少有人能够做全栈开发。这主要是因为作为人类,我们对工作内容的喜好都有一定的倾向性,换句话说,你不太可能对所有的事情都感兴趣,前端的工作注重的是可视化处理,后端的工作注重的是科学计算,深度数据挖掘,大部分人是只对某一种感兴趣的。
作为一名全栈开发工程师,并不是薪水多一点点那么简单,他的工作内容,要超出很多, 要学的东西,也要超出很多,这个学习过程,对于大部分工程师来说都会崩溃掉的。
好了,这期就先说这些,这里是丁哥开讲,欢迎关注防止失联。