这些年互联网发展飞快,电商、共享经济、短视频、直播带货、小游戏等等一个又一个的风口,改变了人们的生活,也让程序员成为了高薪职业代名词,吸引了很多非专业伙伴入行。对于正在入门的朋友来说,培训机构和招聘网站上五花八门的职位信息确实让人眼花缭乱,我们通过这些信息结合网站和应用系统的结构来梳理一下程序员们到底是做什么事情,有哪些专业分工。
当然程序员不只是做网站或者APP,只是这些是目前IT行业应用最广泛的最容易让大众理解的,对于整个计算机行业而言,还有更多更专业更底层的研究和技术工作。
某招聘网站技术职位截图
某培训机构广告
一般来说,完成一个网站APP的建设是需要几个团队协作完成的,包括项目管理、产品设计、技术开发、测试运维等团队,程序员往往特指技术开发这一部分工作。而软件系统的架构,在网站APP这个场景来说一般可以这样理解它的结构层:客户端-服务层-数据库。开发网站APP的工作也是由多人或者团队协作完成的。
前端工程师
顾名思义,前端就是靠近用户使用者(客户端)的那一侧,也就是你打开电脑手机网站后看到的页面,或者打开手机APP、微信小程序后操作的界面。早期是没有严格意义上的前端工程师,很多时候是由UI(User Interface用户界面)和后端一起完成的,后来2C时代对于用户体验的要求越来越高,这一块的技术也发生了很大变化,出现了各种更高效强大的开发框架,对专注于这方面的人才需求也就越来越多。目前前端主流还是基于javascript脚本语言的开发框架,比如vue、AngularJS、React等。
总的来说,前端工程师主要负责构建页面、渲染效果、实现人机交互操作。大多数情况下,前端对计算机专业基础知识要求相对不那么高,但是要有一定的程序设计思想和互联网的技术知识,最好对审美和交互有一定见解。
后端工程师
有前就有后,躲在页面后面的就交给后端工程师了,也叫服务端工程师,这也是传统意义上的程序员。为啥说躲在后面呢,因为除了页面能看到的文字图片视频等元素,软件干了啥事情用户是看不到的。实际上我们在界面做的每一次操作,都是由看不见的后端进行处理的。比如在淘宝买个东西,看到的是琳琅满目的商品和价格,但是商品的管理、订单购买、完成支付很大部分工作都是后端完成的。
程序员使用的开发语言很多,比如C++、JAVA、Python等等,一般一个程序员可能会侧重某一门语言,所以后端有时也称为java工程师、Python工程师等。
DBA(数据库管理员)
互联网时代就是数据时代,大部分网站APP都需要数据库的支撑,比如用户信息、商品信息、订单信息等,都是要通过数据库进行存储和读取。
一般具备一定规模的团队才会需要专门的DBA岗位,主要负责对数据库结构的设计评审,指导程序员如何正确高效的操作数据,在数据库遇到问题时进行分析解决。
主要的关系型数据库有mySql、Oracle等等。对关系型数据库进行读写的脚本语言就称为SQL。
数据工程师
对于企业级或者大流量的软件系统来说,如何让越来越多的数据除了满足业务外产生更多的商业价值,就是数据工程师的活了。通过对大数据的采集、清洗、分析、治理、挖掘,并对这些数据加以利用、管理、维护和服务的工作。这个岗位也是目前培训转行比较热门的方向。对计算机专业知识有一般基础,对数据信息比较敏感有兴趣的伙伴可以考虑学习。
架构师
在招聘网站经常可以看到,有个职位的薪资明显比其他技术岗的工资高很多,这就是架构师。既然拿的工资比别人高,肯定是干别人搞不了的活。架构师对整个软件系统的技术架构负责,也对最终的可用性稳定性性能指标负责。架构师决定使用什么技术、框架,设计整体结构关系,解决技术疑难杂症。
系统架构图(来源百度)
移动端工程师
移动客户端(包括手机、平板等)由于受手机操作系统和生态链影响,开发其APP应用的客户端部分是要基于特定的协议规范,所以使用的工具和开发技术可能侧重点不同,相通的是开发语言并没有特殊。比如基于安卓操作的安卓工程师,基于苹果系统的iOS工程师。在APP火的时候这类岗位是很吃香的,但由于开发成本和时效、流量问题,这类岗位需求有所下降。
全栈工程师
咦,现在招聘越来越多出现了全栈工程师的岗位,但是全栈并不是一种技术工作,那么他是做什么呢,看下某公司的岗位描述:
全栈就是全能的意思,也就是说,上面技术岗位能做的活你都要会,其他不在通常技术范围内的活你也要去做。一般来说,初创公司或者资源紧张的团队会希望全栈工程师,毕竟这样会节省很多成本啊。