互联网大厂项目研发流程

文章目录

  • 阶段一:
  • 阶段二:
  • 阶段三:
  • 阶段四:
  • 阶段五:
    • 开发人员:
    • 测试人员:
    • 设计师:
  • 阶段六:
  • 阶段七:
  • 总结:


本文章学习自:https://www.bilibili.com/video/BV1cf4y1x7HA

企业真实的研发流程,这个是半路转行的准程序员和在校大学生都比较关心的问题以及小型公司的程序员也会好奇大厂的流程是怎么样的。


如今互联网大厂的开发流程,这些流程虽然好,但也不是一蹴而就的,每个公司的体量不一样流程也不一样。
从最简单的流程来看一看这些环节是如何一步一步演进过来的:

请添加图片描述


阶段一:

请添加图片描述

许多客户只有一个简单的需求场景:比如:用户输入一些数据 根据公式给出分析建议 开发人员直接根据描述完成功能即可;

这套流程弊端很明显:那就是需求不明确,容易陷入到无限的扯皮中;

明确需求是软件开发的大树之根,这点没有做好,后面所作的一切都没有意义的。


阶段二:

请添加图片描述

初创的外包公司和个人接私活常实行这套流程,最后确认好的需求会写在合同中,一切按照合同中的需求项进行开发。
需求变更是开发人员最痛苦的事情,所以该环节会随着流程的完善而不断升级。

弊端:客户的需求一般是只有文字描述,在这种情况下,开发人员只是凭借自己想象进行编码,对需求的理解很容易产生偏差。


阶段三:

请添加图片描述

原型图设计:原型图就是产品的预览模型,用于展示产品的最终效果,可以有效的帮助开发人员理解需求。

​ 小型的外包公司和个人接私活常实行这套流程,外包公司往往有一个设计师进行原型图设计。个人接私活,很多客户也会拿出原型图,然后让开发人员进行实现。

弊端:代码编写完毕后就直接将项目交付了,项目的各个BUG都是在客户使用中发现的,这时候需要开发人员进行多次修改才能将项目完整交付,和客户的沟通成本是非常高的,这种形式的交付往往非常耽误时间。


阶段四:

请添加图片描述

​ 开发人员实现功能后交由专门的测试人员进行系统测试,测试完毕后由产品进行验收,验收无误才能进行交付上线

  • 外包公司:指没有自己产品的公司,主要承接项目进行开发,需求都是从客户那边过来的。
  • 产品公司:就是有自己的产品,会对自己的产品开发,运营,迭代,需求是业务部门和产品部门提出的。

这套流程麻雀虽小,五脏俱全,每项流程都有专门的人员负责:

  • PM:产品经理。负责需求提出、产品设计
  • UE:交互设计师。负责设计页面布局交互
  • UI:视觉设计师。负责产品的具体样式设计
  • RD:开发人员。负责功能实现
  • QA:测试人员。负责产品的质量检测
  • OP:运维人员。负责上线审批、维护产品所需要的硬件状态

各个人员各司其职,当前环节没有问题后才会推进到下一环节,这时候流程的流转和推进要进行工程化管理

弊端:很多环节在没有准备充足的情况下就开始实施了,质量得不到有效的保障,不如:确定需求和原型就进行编码开发,如果在编码过程中发现技术方案不合理,此时变更会浪费大量的时间


阶段五:

接下来的流程演进基本就是各个中大厂的流程了,每个环节各个公司的取舍不太一样

请添加图片描述

​产品需求评审:需求提出后,产品会拉上各个岗位的人进行产品需求评审,产品经理会将需求项写好,并且整理出低保真原型图、产品流程等,让大家能够对产品和需求有个概念,PRD在原型图上进行标注说明,大家根据原型图进行评审,争取弄清楚产品和需求的每个细节,并且提出自己的想法,各抒己见。

请添加图片描述

意见统一后,产品经理确定版本,然后各个岗位进行自己职责内的设计了。

开发人员:

请添加图片描述

​ 概要设计完成后,就要对细节方面进行完善了,这个细节就是指功能的实现思路,比如一个简单的登录功能,编码时就是看着图开发了,这一块设计得越详细编码时就越轻松,同时测试人员也要对测试进行设计和思考,不然会遗漏功能点。
请添加图片描述

测试人员:

​ 测试要进行测试用例的设计,测试用例可以帮助测试人员理清需求,为后续的测试提供可参考的依据,在测试过程中也可以反应测试的进度。

测试用例:是指需要测试的功能点

请添加图片描述

设计师:

​ 设计师也要进行交互设计和视觉设计,这个环节做出来的高保真原型图,基本就是产品的最终样貌。


阶段六:

请添加图片描述

​ 当开发人员、测试人员、设计师把自己的内容设计完毕后又会凑到一块进行评审,看看互相对功能理解是否一致,产品经理也会看一下大家对需求的理解程度,避免理解产生偏差,这个环节就是对细节进行完善,改动一般不会太大,该环节完成后就是开发人员进行功能的实现,前后端也会进行联调,联调完毕后开发人员会自行测试一番,再交由测试人员进行测试。

​ 弊端:再开发环节前做了充足的准备,但没有在开发环节后做充分的测试验收,产品上线后质量得不到保障。


阶段七:

请添加图片描述

​ 在开发完成后,大厂一般会做代码review,组长和组员会对你的代码进行审查,在业务和技术都会获

得很多建议和意见,对开发人员成长最大的环节

​ 开发人员提交测试申请,将代码交给测试人员发布到测试环境进行测试,因为测试的周期比较长,测

试环境没有问题后就可以将代码分支合并然后由测试人员发布到预发/沙箱环境。

沙箱环境:将系统接入真实的数据,但是系统只能内部访问,用户无法直接访问的,这个环节就是为

了保证上线前不出问题,所以模拟线上真实环境,看看系统能不能真的抗住真实数据,这一轮测试完成

后又可以将代码分支合并一次然后让产品经理验收。

总结:

​ 从需求提出到需求结束还是很不容易的,中途历经多个环节要和多个部门岗位协调各种问题和难点都要面对,每个公司会根据自己的文化和人员配置业务方向以及需求大小做出调整,比如一些小的需求小的改动概要设计和详细设计就不会做了。

流程的最终目的是为了节省时间成本和人力成本,并且提高产品的质量,符合公司实际情况的才是好流程,小公司盲目采用大公司的流程反而会增加沟通成本,大公司明明流程老旧也不进行改进和变动,技术负债就会越来越多。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/450791.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

centos常见错误 Failed to set locale, defaulting to C

错误描述: 当在centos中使用yum命令时,输出错误: [rootlocalhost yum.repos.d]# yum list |grep prceFailed to set locale, defaulting to C 用locale检测,出现如下提示: rootlocalhost yum.repos.d]# localelocale: …

图片上传知识点梳理

在日常项目开发中,图片上传是一个十分常见的场景。而现在的各种UI框架都提供了自己的上传组件,网上第三方的上传组件也多如牛毛。可能你早已习惯了直接使用这些现成的组件,然而对于其具体的实现,却并未深入解析。本文将通过简单的…

解决 java.lang.IllegalArgumentException: Repository interface must not be null on initialization!

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 报错:Caused by: java.lang.IllegalArgumentException: Repository interface must not be null on initialization! Cause…

【狂神说】JVM

文章目录1.JVM的位置2.JVM的体系结构3.类加载器4.双亲委派机制(重要)5.沙箱安全机制(了解)6.native(核心)7.PC寄存器(了解)8.方法区9.栈10.三种JVM11.堆(Heap)12.新生区、老年区13.永…

我们真的需要统一的编程规范?

摘要:仁者见仁智者见智,编码风格的不同,对项目也会有不同的影响,统一的编码规范有益于项目的维护。俗话说,没有规矩不成方圆,在2004年,UNIX创始人之一的Ken Arnold就发表了一篇很幽默文章&#…

百度云重磅发布ABC 3.0 尹世明如何诠释百度云的“新”打法

雷锋网9月4日消息,2018百度云智峰会正式召开,百度总裁张亚勤发表题为《新技术驱动,全面进入Cloud2.0》的演讲并表示,经历了PCClient/Server到MobileCloud 1.0,再到如今的AICloud 2.0过程,新技术推动云计算产…

EcmaScript对象克隆之谜

先谈谈深拷贝 如何在js中获得一个克隆对象,可以说是喜闻乐见的话题了。相信大家都了解引用类型与基本类型,也都知道有种叫做深拷贝的东西,传说深拷贝可以获得一个克隆对象!那么像我这样的萌新自然就去学习了一波,我们能…

开发人员眼中最好的代码编辑器是谁?

摘要:对开发人员来讲,开发工具就好比战场上的“兵器”,不同领域的开发人员他们所使用的“兵器”也不完全相同,本文从友好性、功能性、扩展等多方面总结了最受开发人员欢迎的“兵器”。你最爱的那个在这里吗? 如果我们把…

关于RESTful一些注意事项,接口开发规范

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 最近在研究restful,公司开发要使用,所以自己就去网上找了好些资料,并整理了一套公司开发的接口规范。…

【老杜】MySQL—day01

文章目录day01课堂笔记1、数据库概述及数据准备1.1、什么是数据库1.2、什么是数据库管理系统1.3、SQL概述1.4、安装MySQL数据库管理系统。1.4、MySQL数据库的完美卸载!1.5、MySQL的服务1.6、用命令来启动和关闭mysql服务1.7、登录mysql数据库2、MySQL常用命令&#…

【转载】DRuid 大数据分析之查询

转载自http://yangyangmyself.iteye.com/blog/23217591、Druid 查询概述上一节完成数据导入后,接下来讲讲Druid如何查询及统计分析导入的数据。Druid的查询是使用REST风格的HTTP请求查询服务节点(Broker、Historical、Realtime),这…

记录 Parameter with that position [1] did not exist; nested exception is java.lang.IllegalArgumentExce

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 报错如题: Parameter with that position [1] did not exist; nested exception is java.lang.IllegalArgumentException: Pa…

[转]简单的动态修改RDLC报表页边距和列宽的方法

本文转自:http://star704983.blog.163.com/blog/static/136661264201161604413204/ 1.修改页边距 XmlDocument XMLDoc new XmlDocument();XMLDoc.Load(System.Windows.Forms.Application.StartupPath "\Report_try-2.rdlc");XmlNamespaceManager xmn n…

函数式编程语言天生就慢吗?

摘要:近期,函数式编程得到了越来越多的关注,Lisp不仅重获青春还涌现出了一批新函数式编程语言。因此开发者们对函数式编程语言的运行快慢各抒己见,展开激烈讨论。本文将和大家一起讨论,函数式编程语言真的就慢吗&#…

【老杜】MySQL—day02

文章目录day02课堂笔记1、把查询结果去除重复记录【distinct】10、连接查询10.1、什么是连接查询?10.2、连接查询的分类?10.3、当两张表进行连接查询时,没有任何条件的限制会发生什么现象?10.4、怎么避免笛卡尔积现象?…

vue根据数组对象中某个唯一标识去重

由于在vue中,会自动在数组和对象中加入_obser__观察者模式的一些属性,所以直接用数组的filter去重(下面这种),indexOf不能准确识别 var arr [1, 2, 2, 3, 4, 5, 5, 6, 7, 7]; var arr2 arr.filter(function(x, index…

Springsecurity之AuthenticationProvider

2019独角兽企业重金招聘Python工程师标准>>> 注意:AuthenticationProvider与Authentication紧密联系,关于Authentication,看我的这篇博客。 先上一张图,如下图1 图1 AuthenticationProvider的类图 AuthenticationProvi…

Postman使用入门

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 Postman测试管理的单位是测试集(Collections),测试集内可以创建文件夹(Folder)和具体的请求(Requests…

编程需要知道多少数学知识?

摘要:许多人认为在开始学习编程之前必须对数学很在行或者数学分数很高。但一个人为了编程的话,需要学习多少数学呢? 实际上不需要很多 。这篇文章中我会深入探讨编程中所需要的数学知识。 下面是我在reddit的子论坛 r/learnprogramming 看到的…