程序员和老手程序员的对比(程序员内部是怎么分工的)

“程序猿/媛”、“攻城狮”、“码农”、“高薪”、“技术人才”、“996”、“007”、“35岁危机”、“互联网”,“内卷”。。。

程序员在大众的认知上有很多标签,但让大家说清楚这个行业的人到底在做什么,具体怎么来做,很多人就说不清楚了,只是有一个轮廓上的概念和人传人的认识。

上一篇《看懂程序员》中和大家从广义上了解了一下程序员的工作、生活、人设,这次我们从程序员行业内的细分工种让大家更好的认识这个行业。

程序员和老手程序员的对比(程序员内部是怎么分工的)(1)

程序员细分行业

冰山之上

程序员和老手程序员的对比(程序员内部是怎么分工的)(2)

12306官网

现在每天大家都会接触到很多的APP、网站(后文统称为“应用”),用它们购物、游戏和工作。大家看到、用到的这些应用的开发人员可以被统称为前端开发人员,相对应大家看不到的那部分冰山之下的程序员则是后端开发人员。

上篇文章中我们把程序员比作流水线工人,程序员的工作是流水线上的一个环节,再来和大家回顾一下:

1、产品经理提出需求:产品岗位的同事经过调研之后告诉整个流水线上的人,我们要做啥、为啥要做、具体分几步实现,期望啥时候用户可以使用。

2、美工设计:根据产品经理想要的内容进行交互设计,通俗来讲就是大家看到的每一个应用长什么样,滑动之后是什么效果,点击之后会出现什么,都是美工的同事她们说了算。她们会用设计软件(大家最熟悉的PS就是设计软件之一)或者画笔(平板 手写笔)描绘出来应用最后是啥样貌。

3、程序员开发:根据产品经理说的产品每个功能的逻辑和美工交付的交互设计图进行开发(写代码),简单来说就是美工提供的是二维的图画,程序员将二维的图画开发成用户可以使用的三维可交互的功能(一个应用有很多功能,比如抖音有登录的功能、有点赞的功能等等)。

4、测试人员测试:针对程序员开发出来的功能,测试岗位的人员会对产品经理所说的功能逻辑和美工画出来的交互逻辑进行逐条验证看是否符合产品经理和美工的要求。当然高级的测试团队还会对程序员开发的代码进行一些测试验证,看看是否符合程序员所说的要求。期间出现不符合预期的内容,就会由程序员去修改直到符合各方预期。

5、运维上线:运维人员将程序员开发的代码放到服务器(专门用来跑程序员代码的高配置电脑)上,然后进行一系列的初始化、安全、防护配置,大家就可以正常使用这些应用了。

程序员的上游是产品和美工,他们告诉程序员要做什么、怎么做的问题。我们以常见的“登录页面”为例,简单讲讲产品经理交付给下游的交付物。

产品经理的交付物简称为产品原型,产品原型包含下面几部分:

1、功能描述:功能的简要描述。2、前置条件:要操作此功能,需要具备什么角色(普通用户、销售人员、管理员)、权限或状态。3、后置条件:执行完这个用例后,关联的数据会有什么变化,页面怎么跳转。4、界面交互:每个界面都可以拆分成多个元素,如表单、文本、链接、图片等;

程序员和老手程序员的对比(程序员内部是怎么分工的)(3)

登录界面交互

程序员和老手程序员的对比(程序员内部是怎么分工的)(4)

界面元素

5、业务流程:当用户完成输入并提交时,应该做什么校验,不同输入该怎么处理,不同结果(登录成功、失败、未注册等)该返回什么给用户展示。

程序员和老手程序员的对比(程序员内部是怎么分工的)(5)

登录页面业务流程图

程序员和老手程序员的对比(程序员内部是怎么分工的)(6)

文字描述业务流程

6、异常和分支流程:异常流程如网络错误、接口返回异常、服务器内部错误等(后两个均可以理解为系统错误问题)。以上面的登录流程为例,分支流程包括找回密码、密码登录等,分支流程非必须,简单的分支流程可以直接通过主流程体现出来,具体可以视情况按照一定颗粒度进行拆分。7、数据字典:这个用例涉及哪些数据,可以通过数据字典描述,这一步非必须,最终表结构也不一定就是这样,只是给程序员的一个参考。有技术背景的产品,也可以做得更细,以注册功能涉及的用户表为例:

程序员和老手程序员的对比(程序员内部是怎么分工的)(7)

数据字典

产品经理准备好以上的产品文档后,就会叫上美工、程序员、测试坐一起来开会评审一下产品文档。

为什么要评审呢?因为产品文档在美工设计和程序员开发上还有一些细节需要确认,有时也会有些流程因为各种原因不能实现,需要和产品经理沟通看如何修改。经过几轮沟通后,产品原型就会确定下来,这时美工同事就该进行设计工作了。

美工同事会根据界面交互设计出更详细、更美的界面。

根据产品和美工交付的产品原型和页面交互原型,前端开发工程师就可以开始工作了。在此之前,后端开发工程师们已经同步在产品评审会后开始了他们的工作了。

前端开发人员开始用代码实现页面交互内容,也就是大家在应用上经常进行的点击、单击、双击、滑动、输入等操作都是前端开发人员开发出来的,所以大家离程序员最近的一个岗位就是这些前端开发人员。

前端开发人员也有细分,比如开发浏览器里面的应用的,我们一般称为“Web前端开发工程师”、“前端开发工程师”、“前端开发”、“前端”。由于苹果手机和Android手机在技术上是完全不同的两套,所以移动端的开发又细分为“IOS开发工程师”、“Android开发工程”。还有开发在电脑桌面上打开的软件应用的工程师一般称为“客户端开发工程”。

程序员和老手程序员的对比(程序员内部是怎么分工的)(8)

前端细分岗位

经过前端开发人员的努力,一个个可以进行交互的页面就展示在大家的眼前了。但只有前端工程师,大家的应用只是能进行操作,如果想让应用中的信息是和自己相关的,能自由自在地进行搜索呀,记录下来呀,那就需要后端工程师出场了。

冰山之下

百度百科对于后端开发工程师的解释是:隶属于软件研发工程师,是从事软件开发相关工作人员,其主要职责是平台设计、接口设计和功能实现

还是以前面登录的例子来解释一下后端开发工程师都是干什么的。

程序员和老手程序员的对比(程序员内部是怎么分工的)(9)

登录页面业务流程图

上图是登录页面的业务流程图,其中有三个需要后端开发工程师配合才能完成整个功能。

1、获取验证码;

2、验证验证码是否正确;

3、点击登录判断是否已注册;

前面咱们说了前端开发工程师只能把可以交互的页面呈现给用户,那么验证码是咋发到你的手机上的?又是怎样验证你输入的验证码和短信发给你的是一致的呢?点击登录后咋判断你的手机号是否注册过呢?

前端程序通过网络去询问后端程序,后端程序做了这些判断后告诉前端程序的

程序员和老手程序员的对比(程序员内部是怎么分工的)(10)

登录流程

第一步:当你在页面上输入手机号后,点击获取验证码时。前端程序会通过网络发起一个请求去询问后端程序“你可以发一个验证码给XXX了”,后端程序收到这个请求后就会随机生成一个验证码,然后一边是将验证码存到数据库(存放数据的仓库)里面,另外会将验证码发送到XXX号码的手机上。

第二步:此时将手机上收到的验证码输入到页面上的输入框里面,然后点击登录按钮:此时前端程序就会将页面上输入的手机号、验证码再次发给后端程序,后端程序拿到手机号和验证码就会去数据库里面查找这个手机号发送的验证码是什么,与输入的验证码进行比对,如果比对成功则证明输入的正确,就可以进行下一步了。如果不成功就会告诉前端程序,刚才的验证码输入错误了,可以给用户提示一下。

第三步:如果验证码比对成功,后端程序就会去数据库存储注册用户的地方去查询这个手机号有没有注册过。如果已经注册了那就告诉前端程序,已注册用户,可以登录。如果比对不成功就告诉前端程序,手机号没有注册,需要去注册一下。前端程序根据后端程序的回复就会有两种不同的展示,一种是直接登录成功,跳转到了另一个页面。另一种就是未注册跳转到注册页面让你填个人信息进行注册。

例子中后端的每一步判断都是发生在毫秒甚至更小的时间单位级别的。

由例子就可以看出来前端程序提供的是交互,后端程序提供的是控制。当然后端不仅仅能提供控制,还能提供数据,当你登录成功后,会看到你的个人信息以及页面上的大量信息(如淘宝的商品列表、抖音的视频等等)。

为了能让用户使用软件的时候更快,保证程序不会崩溃,后端开发工程师又细分了很多细分工种。

应用后端工程师:专门和前端程序通信,告诉前端程序判断结果、提供数据给前端程序进行展示。

系统架构师:负责整个后端程序的设计,保证后端程序稳定、高效地给前端程序返回数据。

DBA(数据库管理员):负责数据库的高效运行,让应用后端工程师可以快速存储数据和读取数据。

数据工程师:随着互联网的兴起,用户产生的数据量越来越大,就有细分除了专门的数据工程师,他们负责将后端程序中大量的数据进行处理、分类、存储等,然后再提供给应用后端工程师使用。

运维工程师:整天与网络、服务器打交道,负责将程序员写出来的代码放在服务器上,并保证程序可以平稳、安全地运行。

近几年AI工程师、人工智能工程师、算法工程师、图像识别工程师等也比较火,这些也都是一个后端细分的开发岗位。比如算法工程师可以简单地理解为在数据工程师的基础上对数据进行进一步的分析、通过各种数据模型进行数据建模后分析,来进一步找到数据的规律,然后给应用后端工程师使用。

为什么后端工程师细分出来这么多细分岗位?还最终都给应用工程师提供支撑,为什么应用工程师不直接处理数据自己使用呢,还简单?

这是因为没有人能样样精通,任何一个工种的细分目的都是为了让专业的人做专业的事。当一件事件随着发展逐渐变复杂的时候,也就代表这件事可以拆分、细化去处理了。细分工种后,每个岗位工程师的关注点就更聚焦在自己的领域,可以更深入地研究领域内的事情。

程序员和老手程序员的对比(程序员内部是怎么分工的)(11)

后端细分岗位

总结

程序员和老手程序员的对比(程序员内部是怎么分工的)(12)

程序员细分行业

本文只是简单介绍了一下占比比较大的互联网公司的程序员们的工作区分,在这个行业还有很多其他开发方向的程序员。通过本文希望大家可以更了解这个群体,认识到“神秘”背后的普通人。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页