在一个软件开发中,都有哪些角色吧?
发表时间:2023-08-30 11:00:19
文章来源:炫佑科技
浏览次数:233
菏泽炫佑科技
在一个软件开发中,都有哪些角色吧?
本文是写给刚刚进入这个行业或者即将进入这个行业的朋友,或者是对互联网、软件感兴趣的朋友,主要是为了对团队中的各个角色有一个比较基础的了解。
过年回家,亲戚朋友一直问我在做什么,我一个字也解释不清楚,就说我在“写代码”、“开发软件”。 但在软件开发过程中,实际上涉及到很多角色,代码编写者也有好几种类型。
事实上,这取决于软件的规模。 比如像我个人网站这样的小型软件,其实一个人就可以搞定一切。 它既是用户,又是开发者,又是维护者。
但规模稍微大一点的软件,就需要各种角色共同协作来开发。 接下来,我们简单介绍一下软件开发中的角色。
用户
用户是为软件创建需求的角色。 用户有很多种类型。 从大的分类来看,主要分为B端()和C端()。 B端一般是后端管理系统,面向企业员工或者公司内部人员。 C端指的是个人用户,比如我们平时使用的微信、淘宝、抖音等,都是针对C端用户的软件。
C端软件的逻辑比较简单,但是用户数量非常多,迭代也非常快,所以在性能和稳定性方面都会有比较大的挑战。 另一方面,B端软件逻辑更复杂,功能更多,上下游环节长。 需要处理的是软件开发效率和可扩展性。
产品
产品经理,有的公司也叫产品,有的叫业务分析师(BA)。
产品需要控制产品具有什么样的功能。 对于B端软件来说,用户的主要需求一般在软件开发之前就客观存在。 产品经理需要做的就是发现用户需求,然后用软件来实现这个需求,帮助用户提高效率或者帮助业务发展。
对于C端来说,往往需要在功能上有更多的创新来吸引和转化用户,所以C端产品会更加关注用户的迭代速度和各种数据,不断尝试,灰度,然后根据用户的行为数据来做出产品开发决策。
产品一般会产生需求描述和需求文档。 为了更直观地表达产品意图,一些产品同学还会制作一些流程图和简单的产品界面设计。
设计
设计有很多种类型,UI、UX、UE,统称为UED。 其实我也不知道他们之间的具体区别。 一般来说,UI是指用户界面,在软件设计过程中一般指软件的图形界面。 UX和UE都是指用户体验,会关注用户在整个使用过程中的感受。 它包括用户界面,但不仅仅是用户界面,可能还有操作线路、交互设计等东西。
在我认识的团队中,产品一般不会画图或者画一些比较简单的图,然后交给设计去打磨、丰富细节,*后为开发者制作出完整的设计图。
前端
前端和后端统称为RD(和)或Dev
前端是指用代码写设计图的人,主要负责软件界面、交互以及后端数据的读写。
很多传统软件需要在客户端下载安装,手机上的APP也是这种形式。 近年来,WEB终端越来越流行。 用户无需安装软件,只需在浏览器中输入URL即可使用系统中的软件进行工作。 比较典型的是知乎和B站,都是从WEB端起步的。 面向toB的软件基于浏览器开发的更为广泛。 这主要是出于开发效率的考虑以及用户的非感性更新迭代。
所以其实Web前端、移动端包括开发、ios开发、基于等技术的跨平台开发、以及小程序,统称为前端,也有人称之为“大前端”结束”。 但一般技术行业都有专业化,前端技术栈更新快、多。 大多数前端只精通平台一部分的前端开发。
其实很早以前,并没有专门的前端,后端就顺便写了前端。 但后来前端技术栈越来越复杂,出现了“前后端分离”的说法,逐渐有了专业的前端角色。
后端
如果前端负责用户在界面上可以看到的代码。 后端负责所有用户“不可见”的代码和逻辑。
前端接收用户的输入和点击行为,然后调用后端提供的接口。 后端负责逻辑验证、处理和数据存储。
例如,当用户在电商应用中点击“确认订单”操作时,后端会检查库存是否不足、拉取商品信息、生成订单和付款单、处理优惠券计算等逻辑。
前面说过,B端的逻辑会比较复杂,链路也会很长。 后端可能有很多开发团队,彼此之间可能存在接口,所以沟通协调能力也非常重要。 当然,服务设计和代码设计也很重要。
对于C端软件来说,后端还负责性能问题和数据一致性问题。 因为前端计算能力一般都在用户的电脑和手机上。 目前硬件发展很快,基本上机器资源是绰绰有余的。 但后端部署在服务器上,要同时处理数万甚至上亿的请求。 如何承载如此大的并发量并保证数据不出错,本身就是一个比较困难的任务。
测试
测试是产品质量的把关人,简称QA。 事实上,开发人员一般都会测试自己,但为什么要测试呢?
一方面,技术行业有专门化,自动化测试、用户界面测试等,都需要专业的测试,效率会更高。 所以现在有很多角色叫“测试开放”,也就是测试开发,可以写一些自动化测试,他们在测试行业比较受欢迎。 但小公司一般测试和开发较少,更多的是手工完成,好的时候叫“回报”,不好的时候叫重复劳动。
另一方面,测试的角度与产品理解的角度不同。 开发者虽然可以自己测试,但只会按照自己理解的产品逻辑来测试自己,绝不会测试超出自己理解的产品逻辑。 然而,测试人员有不同的观点。 他们可以从更完整的产品链路的角度进行测试,也可以发现一些开发者可能没有想到的边界和场景。 这样,交叉检查可以确保产品更完整,错误更少。 。
数据与算法
数据和算法通常只有大公司才能使用。
用户在使用过程中会产生大量的数据。 这些数据非常有价值,可以用来分析用户行为,进而可以指导产品设计,甚至影响商业决策。
但用户产生的数据一般都是开发出来直接存储在各种数据库中,是*原始的数据。 这些数据需要同步到数据仓库以便进一步处理和使用。
数据简称DA(Data)或BI(BI)
算法会根据用户产生的数据训练出合适的算法模型,*终产生适合业务的算法接口。 后端开发调用这些算法接口,在背后有数据和算法的支持,形成比较强大的功能,比如产品推荐、抖音视频推荐、知乎文章推荐等。
算法工程师的需求没有前端后端那么大,但人才相对稀缺,尤其是顶级算法工程师,基本都是科学家。 算法更看重学历和学术研究成果,但薪资确实很高,有条件的同学可以冲。
专案经理
开发软件的过程实际上是一个复杂的工程项目。
这个过程需要一个人把控整个时间节奏和人员安排,保证产品能够按期顺利开发完成,功能按时迭代上线。
这个角色一般称为项目经理,简称PM。
但在互联网行业,管理不需要花费太多时间,所以一般专职项目经理很少,甚至没有项目经理。 有时产品主要负责驱动整个过程。 有时,这就是发展。 这里不得不提的是,互联网公司似乎很看重开发者推动整个项目进程。 阿里称之为“主观能动性”,“此时此刻,不是别人,正是我”,字节称之为“追求极致,务实勇敢,多元兼容”。 因此,就会出现技术 PM 和技术 Owner 等角色,这些角色通常由更有经验的开发人员担任。
在敏捷开发过程中,项目经理还要管理迭代,所以也有称为Scrum等。
运行维护
运维主要负责服务器部署、自动化管道搭建等工作。
在云时代之前,服务器都是物理机,运维可能还负责服务器的入架、巡检、维护,以及一些简单的服务器分配和网络分配。
软件部署和自动化流水线的搭建一般都是兼职后端开发人员。
但随着云服务的发展和软件机规模的不断扩大,运维也需要大量的自动化工作。 运维开发(也叫开发维护)的角色诞生了,负责系统架构、服务容器化、自动化开发等。这种角色一般存在于依赖云服务的中型企业中自动化软件开发,但有公司没有成熟的基础设施团队,所以需要这样的角色。 大型企业一般都有专门的团队来做这件事,业务开发团队不需要这个角色。
操作
运营其实也是B端用户的一种,所以对于很多B端团队来说,运营就是我们的“业务端”。
运营通过数据和各项业务运营推动公司业务增长。 运营的种类也很多,包括商家运营、广告运营、用户运营、活动运营等等。
有时候运营也是对产品负责的,主要是对产品的结果数据负责,比如用户数、订单数等等。
有时候运营也可以是产品,所以有的团队也有“产运”和“产研”两种区分。
总结
以上几乎就是开发一个软件所涉及到的主要角色。 其实还是要看软件和业务的规模。 有时一个角色需要承担多个角色。 尤其是小公司更需要“全才”。 说白了在一个软件开发中,都有哪些角色吧?,其实是老板想降低人力成本。 而大公司需要“专精技术”,专业的事情交给专业的人来*大化整个团队的效率,每个人都是一颗螺丝钉。
炫佑科技专注互联网开发小程序开发-app开发-软件开发-网站制作等