开发一个软件需要哪些角色

软件开发角色知识概括 软件开发角色知识概括产品经理项目经理运营UI设计师 产品经理 产品经理简介: 产品经理(英文:Product manager,缩写:PM)也称产品企划,是指在公司中针对某一项或是某一类的产品进行规划和管理的人员,主要负责产品发、制造、营销、渠道等工作。产品经理是很难定义的一个角色,如果非要一句话定义,那么产品经理是为终端用户服务,负责产品整个生命周期的人。 产品经理需要考虑目标用户特征、竞争产品产品是否符合公司的业务模式等等诸多因素。一般而言,产品经理管理的是一个或者多个有形产品。但是,产品经理也可 阅读详情

点击↑上方↑蓝色“编了个程”关注我~

4fae41b7e4c66e39362b6fb0549a9ab7.png

这是Yasin的第 58 篇原创文章

337cbda7899c3c7bcc7e85d80e4820e8.png

Y说

今年没回老家过年,留在杭州了。杭州过年这两天也比较冷清,门店基本都关门了,只有商场还有一些店在正常营业。不过楼下的超市每天还开着,还能买到菜,挺好。

这是第一次没回老家过年,给家人打了电话,送了祝福。也和朋友发了点红包,领了点红包,在朋友圈顺手点了点赞。

春晚也看了,还行。

今天又下雪了,如果有机会,我想去断桥看看残雪。

22d127637746a5588cfb7ec50ee9113b.png

正文

这是虎年的第一篇文章,想写一点专业性不那么强的,轻松一点,也受众广一点的。这篇文章是写给刚入行或即将入行,或者对互联网和软件感兴趣的朋友看的,主要是对团队中各个角色有个比较基础的认知。

以前过年回家,亲戚朋友老问我在干什么,我一句话也解释不清楚,就说是”写代码的“、”开发软件的“。但软件开发过程中,其实会涉及到很多角色,写代码的也分为好几种。

其实这要看软件的规模,比如我个人网站那种小规模的软件,一个人其实就可以搞定所有的事情了。既是用户,也是开发者,也是维护者。

但稍微大一点规模的软件,是需要各种各样的角色去一起合作开发出来的。接下来就大概介绍一下,在一个软件开发中,都有哪些角色吧。

用户

用户是对软件产生需求的角色。用户有很多种类型,从大的分类来看,主要分为B端(Business)和C端(Customer)。B端一般是后台管理系统,面向的是企业员工或公司内部人员。C端即个人用户,比如我们平时用的微信、淘宝、抖音等,都是面向C端用户的软件。

C端软件的逻辑比较简单,但用户数量非常大,迭代也很快,所以在性能、稳定性上面会有比较大的挑战。而B端软件的逻辑比较复杂,功能比较多,上下游链路长,需要处理的是软件开发效率、可扩展性。

产品

产品经理,有些公司也叫产品,也有的叫业务分析师(BA)。

产品需要把控好一个产品具有什么样的功能。对于B端软件来说,用户的主要需求一般是在软件开发前就客观存在的,产品经理需要做的就是发掘用户需求,然后用软件实现这个需求,帮助用户提效或者帮助业务发展。

对于C端来说,在功能上往往需要更多的创新,来吸引用户,转化用户,所以C端产品会更看重迭代速度和用户的各种数据,不断尝试、灰度,然后根据用户的行为数据来做出产品上的发展决策。

产品一般产出的是需求说明、需求文档。一些产品同学为了更直观的表达产品意图,还会产出一些流程图、简单的产品界面设计。

设计

设计有很多种类,UI、UX、UE,统称为UED。其实我也不太清楚它们之间具体的区别。一般来说,UI指的是用户界面,在软件设计过程中一般指的是软件的图形界面。而UX和UE都指的是用户体验,会关注用户在整个使用过程中的感受,它包含了用户界面,但不止是用户界面,可能还有操作动线、交互设计方面的东西。

在我了解到的团队,产品一般会不画图或者画一些比较简单的图,再交给设计润色和丰富细节,最终产出完整的设计图给到开发人员。

前端

前后端统一称为RD (Research and Developer)或者Dev

前端指的是用代码把设计图写出来的人,主要负责软件的界面、交互、从后端读写数据等工作。

传统的软件很多都是需要下载下来安装到客户端的,目前手机上的APP也是这种形式。而近年来WEB端开始越来越流行,用户不需要安装软件,只需要在浏览器输入一个网址,就能使用系统中的软件进行工作。比较典型就是知乎、b站,都是从WEB端开始做的。而面向toB的软件,就更广泛地基于浏览器来开发了,这主要是出于开发效率上的考虑,以及用户无感知地更新迭代。

所以其实web前端,移动端包括安卓开发,ios开发,还有基于reactive navtive、Flutter等技术的跨平台开发,以及基于小程序的开发,都统称为前端,也有人叫他们”大前端“。但一般术业有专攻,前端技术栈更新很快而且很多,大多数前端都只精通一部分平台的前端开发。

其实在很早很早以前,是没有专门的前端的,后端顺便就把前端写了。不过后面前端技术栈变得越来越复杂,就有了”前后端“分离的说法,慢慢就有了专业做前端的角色。

后端

em,这就是我的工作了。

如果说前端负责的是用户在界面上能看到的代码。那后端负责的就是所有用户”看不见的“代码和逻辑。

前端接收用户的输入和点击行为,然后通过调用后端提供的接口。后端负责逻辑的校验、处理和数据的存储。

比如用户在某电商APP上点击”确认下单“的操作,后端会去校验库存是否不足,拉取商品信息,生成订单和支付单,处理优惠券的计算等等各种逻辑。

前面提到B端的逻辑会比较复杂,链路长。可能后端会有很多个开发团队,彼此之间也可能会有接口的对接,所以沟通能力和统筹能力也很重要。当然了,服务的设计和代码设计也比较重要。

在面向C端的软件,后端也要负责性能问题和数据一致性的问题。因为前端一般算力在用户的电脑上和手机上。目前硬件发展很快,基本上机器资源都是绰绰有余的。但后端是部署在服务器上,要同时处理成千上万甚至上亿的请求,如何承载这么大的并发量,让数据不出错,本身就是一件比较难的事。

测试

测试是产品质量的把关人,简称QA。其实开发人员一般会自测,但为什么还要测试呢?

一方面是术业有专攻,自动化测试、用户界面测试等等,都需要专业的测试去做,效率会更高一些。所以现在诞生了很多叫”测开“的角色,也就是测试开发,会写一些自动化测试的,在测试界也比较吃香。但小公司一般测开比较少,更多的还是人手工在点点点,说好听点叫”回归“,说不好听点叫重复劳动。

另一方面测试的视角和产品理解也不一样,开发人员虽然会自测,但只会按照自己理解的产品逻辑去自测,永远测不到自己认知以外的产品逻辑。但测试人员的视角不同,可以站在更完善的产品链路视角去测,也能测到一些开发人员可能没想到的边界和场景,这样形成交叉检查,就能够保证产品更完善,bug更少。

数据和算法

数据和算法一般是体量稍大的公司才会有。

用户使用过程中会产生大量的数据,这些数据非常有价值,可以用来分析用户行为,进而可以指导产品设计甚至是影响商业决策。

但用户产生的数据,一般都是开发直接存储在各种各样的数据库中,是最原始的数据。需要把这些数据同步到数据仓库,进行进一步加工和使用。

数据简称DA (Data Analytics)或BI (Business Intelligence)

算法会根据用户产生的数据,训练合适的算法模型,最终产出一个适合业务的算法接口。由后端开发去调用这些算法接口,形成比较强大的功能,比如商品推荐、抖音视频推荐、知乎文章推荐等,背后就有数据和算法的支撑。

算法工程师需求量也没有前后端那么大,但人才也比较稀少,尤其是顶级的算法工程师,基本上也是科学家了。算法比较看重学历和学术上的研究成果,但工资也是真的高,有条件的同学可以冲。

项目经理

开发一个软件的过程,其实也是一个复杂的工程项目。

这个过程需要有一个人来把控整个时间节奏、人员安排,保证产品能够如期顺利开发完成,功能按时迭代上线。

这个角色一般叫项目经理,简称PM。

但互联网行业,管理其实是不需要花太多的时间的,所以一般很少有专职的项目经理,甚至没有项目经理。有时候是产品主要负责在推动整个进程。而有时候,是开发。这里就不得不提一下,互联网公司似乎都比较看重开发人员去推动整个项目过程,阿里称它为”主观能动性“,”此时时刻,非我莫属“,字节称它为”追求极致,务实敢为,多元兼容"。所以也就会有技术PM、技术Owner这种角色,一般是比较有经验的开发人员去担任。

在敏捷开发过程中,项目经理也管理迭代,所以也有叫Scrum Master,Iteration Master等。

运维

运维主要负责的是服务器部署、自动化流水线搭建等工作。

在云时代以前,服务器是一台台实体机,运维可能还要负责服务器的上架、巡检、维护等工作,以及一些简单的服务器分配、网络分配等工作。

而软件部署、自动化流水线的搭建,一般是后端开发兼职的。

但随着云服务的发展和软件机器规模的不断扩大,运维也需要大量的自动化工作。也就诞生了运维开发(也有的叫开发运维)DevOps这种角色,负责系统架构,服务容器化,自动化开发等。这种角色一般广泛存在于中等规模的公司,他们依赖云服务,但公司内部没有成熟的基建团队,所以需要这么一种角色。而大型企业一般有专门的团队做这件事,业务开发团队是不需要这个角色的。

运营

运营其实也算是一种B端用户,所以很多对于很多B端的团队来说,运营就是我们的“业务方”。

运营通过数据、和各种业务操作来促进公司业务上升。运营也分很多种类,有商家运营、广告运营、用户运营、活动运营等等。

运营有时候也要为产品负责,主要是为产品的结果数据负责,比如用户量、订单量等等。

有时候运营也可以是产品,于是有些团队也有“产运”和“产研”这两种区别。

总结

以上差不多是开发一个软件中主要涉及到的角色了。其实还是要看软件和业务的规模,有时候一个角色需要身兼多职。特别是小公司,需要“多面手”,说白了其实是老板为了降低人力成本。而大公司就需要“术业有专攻”,专业的事情交给专业的人,使整个团队的效率最大化,人人都是螺丝钉。

最后祝大家虎年快乐,虎虎生威,如虎添翼~

9a21364f4377ab91bfca4e74908d921c.png

关于作者

我是Yasin,一个爱写博客的技术人

微信公众号:编了个程(blgcheng)

个人网站:https://yasinshaw.com

欢迎关注这个公众号d1088b59b694299f8b4fc5d04c0047e3.png

a227c4c8ee985d05414f2c3246ec025f.png

往期推荐

Golang之context

业务代码和技术代码

软件开发项目管理中各角色职责介绍 技术评审与迭代优化:组织内部的技术评审会议,对阶段性成果进行严格审查,提出改进意见,促进产品的技术迭代升级,同时关注行业技术发展趋势,适时引入新技术以提升项目竞争力。技术培训与支持:为团队成员提供必要的技术培训,提升团队整体技术水平,同时作为项目的技术接口,对外提供技术支持与答疑服务,有效解决客户在使用过程中的技术问题。技术选型与规范制定:根据项目需求和团队技能,选择合适且先进的前端框架和技术栈,并制定统一的编码规范、组件库和UI样式指南,确保前端工程的标准化和一致性。 阅读详情

相关推荐

MetaGPT技术全解析:另一个AutoGPT,一个可以替代小型软件开发团队的配备齐全的软件开发GPT,产品经理、系统设计、代码实现一条龙

六月底,一位深圳的开发者在GitHub上创建了一个MetaGPT项目,这是一个全新的基于AI Agent的大模型框架,与此前项目不同的是,这个项目专注于软件开发,从需求分析到代码实现等实现了全流程的覆盖。可以基于你的一条原始需求,从需求分析、系统设计、代码实现、代码review等方面提供完整的服务。该项目发布一个月后的今天就在GitHub上达到了1万个star,目前是GitHub趋势榜第一!从演示的视频看,你只需要给这个项目一条简单的原始需求,项目就可以利用GPT-4来完成最终的产品实现。下图是。

强化学习曾小健 1万+

软件开发中的角色分工

软件开发中的角色分工 文章目录软件开发中的角色分工一、项目经理二、产品经理三、UI设计师四、架构师五、开发工程师六、测试工程师七、运维工程师 一、项目经理 对整个项目负责,任务分配,把控进度 二、产品经理 进行需求调,输出需求调文档、产品原型等 三、UI设计师 根据产品原型输出界面效果图 四、架构师 项目整体架构设计、技术选型等 五、开发工程师 代码实现,只要做对的事情就行,不需要把事情做对。 六、测试工程师 编写测试用例,输出测试报告 七、运维工程师 软件环境搭建、项目上线 ...

weixin_42639673的博客 1万+

软件开发项目中角色和职责

开发人员 模块负责人 CMO MC PM 会议纪要人 QA

软件发过程中的各个角色之间的关系

软件发过程中的各个角色之间的关系

m0_62357580的博客 1661

软件开发包括哪些分工?

需要注意的是,对于小规模的软件项目,有些角色可能会由同一个人承担多个角色,而在大型项目中,可能会有更多的专业人员涉及到不同的分工。软件工程师/开发人员:软件工程师负责编写代码,根据需求和设计规格开发软件的各个模块和功能。产品经理/业务分析师:产品经理或业务分析师负责与客户或用户沟通,了解需求和业务目标,并将需求转化为明确的需求规格和用户故事,作为开发的指导依据。他们决定软件的组织方式、模块划分和交互方式,确保软件具有良好的可扩展性和可维护性。他们确保数据的安全性和完整性,以及数据库的高性能和可靠性。

weixin_44943389的博客 7299

软件测试面试题:您是否了解以往所工作的企业的软件开发过程?如果了解,请试述一个完整的开发过程需要完成哪些工作?分别由哪些不同的角色来完成这些工作?您在以往的测试工作中都曾经具体从事过哪些工作?

开发过程---需求调(需求人员)、需求分析(需求人员)、概要设计(设计人员)、详细设计(设计人员)、编码(开发人员)测试过程---需求评审、系统测试设计、概要设计评审、集成测试设计、详细设计评审、单元测试设计、测试执行测试工作的整个过程都做过,擅长做测试设计过程决定质量,软件的过程改进正是为了提高软件的质量,将过往的种种经验和教训积累起来。 补充 1.明确测试的目标,增强测试计划的实用性编写软件测试计划得重要目的就是使测试过程能够发现更多的软件缺陷,因此软件测试计划的价值取决于它对帮助管理测试项目,并

一亿并发的博客 216

一个开发周期为6个月的中小型软件开发项目成本预算大致表,不足之处请指点

<br /> <br />从Excel粘贴过来,有些变形,请谅解一下。<br /><br />表格中未包含 管理费用、公司的办公场地费用、税费等,软件开发成本还是很高<br />的,能有效控制开发成本,相当于赚钱了,表格中不足之处请指点留言。<br /> <br />       序号人员安排角色大致成本(元/月)主要职责分工 1xxx项目经理1名<br />1000001.项目沟通交流 02.项目进度掌控 03.核心技术框架制定 04.工作任务划分分配、审核、验收 05.开发平台建设 06.样例程序制作

通用权限管理系统 2027

软件开发的流程控制

  需求分析     概要涉及     详细设计     编写代码     测试维护 MIT教材ALGORITHMS IN C++    PROGRAMMING IN C C++ Primer  C++:HOW TO PROGRAM 项目流程控制  计划阶段-》需求分析阶段-》软件开发阶段-》测试阶段-》完成 一、项目计划阶段 项目计划草案和风险

Leeiee的专栏 3309

软件项目开发流程以及人员职责

实行软件工程项目管理: ▲ 项目经理(负责人):项目经理(负责人)对整个项目负完全责任,是指导、控制、管理和规范某个软件和软/硬件系统建设的人,项目经理(负责人)是最终对客户负责的人。 ▲ 软件项目经理(负责人):软件项目经理(负责人)对一个项目的所有软件活动负完全责任,控制一个项目的所有软件资源,按照软件约定与项目经理(负责人)打交道。 ▲ 软件工程组: 软件工程组是负责一个

gongyuanh的专栏 751

一个完整的软件项目开发流程

一、过程产物及要求 本表主要列出开发阶段需要输出的过程产物,包括产物名称、成果描述、负责人及备注,即谁、在什么时间、应该提供什么内容、提供内容的基本方向和形式是什么。 项目启动阶段 需求阶段 设计阶段 开发阶段 测试阶段 常规文档  二、过程说明

gjc584的专栏 1894

软件开发过程及岗位职责

本文主要讲述如何组织开发软件项目,使之更加快速、有效的完成。并分成以下几个阶段进行详细讲述:项目计划阶段、需求分析阶段、软件设计阶段、软件开发阶段、测试阶段、(发布,维护)、管理软件开发过程、各参与角色的具体职责描述及对人员的要求。最后提供了一些文档标准参考。            本开发过程可以作为中小型(3-7人)软件项目的开发指南,而大型软件项目使用RUP会更好。    总

养有道 557

SDL安全人员角色定义

SDL安全人员角色定义http://www.docin.com/p-819975580.html

软件质量优化 2029

软件开发产品经理是怎么回事

  过年的时候,经常有七大姑八大茄子们问道,你的工作是做什么的?电视上天天报道的黑客什么的,你们在外面可别干什么违法的事啊。每到这时候,我都想直接说,我就是一个修电脑的,可是真要这么说了,七大姑八大茄子们又要带着去各家转,一边转还要一边修电脑,说不定还要手机下载电影小说歌曲,对了,还要贴膜。   为了能够把软件开发这回事说得更清楚,正好是周末,就花时间把内容写一写,让七大姑...

dianpi2993的博客 95

“software development”(软件开发)和“software engineer”(软件工程师)岗位区别

简单来说,软件开发是过程,软件工程师是人。软件开发一个大框架,而软件工程师是在这个框架下工作的核心角色之一。如果你是在求职或对比岗位,建议关注具体的职位描述,因为“软件工程师”的实际职责可能因公司和项目而异。

Dontla的博客 1771
上一篇: Golang之context
下一篇: slice的几种写法
编了个程
博客等级 码龄10年 131粉丝 124原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值