业务开发流程

news/2024/5/7 17:06:03/文章来源:https://blog.csdn.net/chen_yuxi/article/details/127122395

0.摘要

此文主要介绍了业务开发的整体流程、关键节点和需要注意的事项,适用于刚入行的小白,以及对自己过往经验的一个总结整理。持续更新中~~

1.开发的主要流程&名词释义

大概给大家梳理下一个项目从发起到上线的流程。
○ 参与人员:业务(使用我们系统的用户方)、产品经理(PM product manger)、后端开发 (RD research and development engineer) 、测试 (QA quality assurance) 、前端开发(FE front-end engineer)
○ 整体流程是,会从业务方发起,pm通过和业务方沟通、调研、整理后,输出产品需求文档(PRD product requirements documents),输出prd后会经过产品内部评审,再到每周的需求预评审环节;通过后到【需求详细评审】,该节点会需要pm、fe、rd、qa、可能还会需要数据开发、业务方等的参与;需求详细评审通过后,开发人员会需要经过 设计、技术评审、评估排期、开发、自测、联调、提测。提测后,任务会流转到测试同学,开发这个节点需要做的就是配合测试,解bug。最后等到测试环境、灰度环境验证通过后,需要部署上线
在这里插入图片描述

2.重要节点注意事项

● 需求详细评审
非常重要!!!
需求详评的发起者是pm,主要目的是,pm将本次需求背景、重点、细节,准确清晰地传达给参会人,参会人需要站在各自的角度对prd中不明确或有歧义的地方进行讨论,最终达到参会人对本次需求的整体、细节的理解都达成一致,可以进行下一步的工作。
作为RD需要做到的是
参会前:

  1. 根据需求的大小,花10-30min去详细阅读prd,了解本次需求所属的系统,背景&价值,具体的变更点
  2. 如果对需求所属的系统不了解,可以找pm、组内熟悉的同事、mentor去使用、了解这个系统
  3. 对于自己有疑问的点,可以自己记录下来,或者在prd里直接评论

参会时:

  1. 尽可能的做到专注,跟上pm的讲解节奏
  2. 在听的时候需要多思考,这个变更是合理的么,有没有其他方式?pm想达到什么效果,当前这个方式可以达到么?
  3. 需要站在技术的角度去思考,每一个变更涉及的数据,来源是什么?db/es/接口?需要怎么存储?数据是怎么流转的?如果依赖其他方,接口是否是现成的,如果不是,什么时候能给到。
  4. 对于会前记录的有疑问的地方,或者在听的过程中有疑问时,一定要表达出来,需要和pm确认清楚
  5. 迭代/改版的需求,pm可能会写上一句,“和旧系统逻辑保持一致”,这种时候一定要指出来,让pm在prd里详细表述出来,具体是哪些逻辑需要和旧系统保持一致。
    会后:
  6. 需要把会议上有疑问的点/PM的todo项和PM确定好落实时间,尽可能让PM在群里发出todo&ddl
    ● 设计
    最开始的小白阶段,可能拿到需求就开始会着手想怎么去写。但是好的做法是,在前期设计阶段花上足够的时间,可以避免后期出现设计遗漏等问题。先谋而后定~
    设计阶段需要注意的点
  7. 梳理清楚数据的整体流转,数据从哪里来,到哪里去,涉及到哪几方,推荐使用时序图来实现(https://plantuml.com/zh/sequence-diagram)
  8. 根据需求设计model,考虑是需要创建新的model,还是在原有的model里进行修改,修改需要考虑到兼容性
  9. 是否设计到db/es变更,如果有,画出e-r图,给出表的设计
  10. 重要/复杂的逻辑,可以画出流程图
  11. 缓存的设计
  12. 接口的设计(http、rpc)原有接口上修改,需要考虑兼容性
    ● 技术评审
    原则上开发周期大于5pd的都需要有技术评审环节,我们rd是做为主r,发起方,主要是给pm、fe、qa同步我们针对需求的整体设计&细节的设计,参与方可以评估我们的设计是不是都覆盖到了本次的需求。组内的前辈(mentor/leader)也会参与,可能会在评审时提出意见
    需要注意的点
  13. 可以提前熟悉技术设计文档,尝试练几遍,做到表达清楚
  14. 之前需求详评审没有确认清楚的点(技术向),主要是接口的使用等,可以在会议上提出
  15. 参与方提出的问题,可以直接在文档里进行评论作为记录,会后在群里给出todo&ddl
    ● 评估排期
    在开完需求详评后,会需要各个参与方评估工期(做这个事情需要多久,人/天),排期(从啥时候开始到结束)。新手熟悉阶段,一般是mentor会帮忙评估排期,但是到需要自己独立负责时,就需要自己评估,工期和排期也相当重要,即使pm催的紧,也不应该着急地给出不够准确合理的排期,不然坑的就是自己以及合作方(血泪史)、
  16. 工期和排期的依据就是你的设计文档,前两步做好了,这步就会比较轻松
  17. 推荐在设计文档里对需求进行细粒度的拆分,每个小的feature给出对应的工期。可以按照一个接口0.5pd~1pd来。
  18. 如果有其他部门的依赖,或者有前端的参与,需要算上和其他方的联调时间,简单计算方式是接口数量/2or3
  19. 根据手上正在进行的需求&需求的优先级来评估介入时间。
    ● 开发&自测
    一般如果前期设计&技术评审做的足够充分,开发和自测阶段不会有什么大的问题,但是如果开发过程中发现一些和前期预期不一致的点或者有阻塞点,不能如期交付的,一定要第一时间同步给mentor&pm,有风险一定要抛出来,有风险一定要抛出来,抛出来!(重要的事情说三遍)
    自测需要测试给出冒烟case。
    ● 测试用例评审
    主r是qa,qa会根据prd输出测试用例,测试用例评审主要是参与方一起评估测试用例的正确性,站在各方的角度考虑现有的case覆盖的场景是否足够。
    参会时如果有你觉得很重要的点,但是qa没有提到的,特别是一些兼容性问题,涉及到老逻辑回归的,需要提出来,以及接口是否需要压测等等
    ● 提测
    提测前需要给出提测文档,这个问qa要就好了~
    (此处应该有一个提测文档模版)
    ● 部署上线
    上线前给出上线单,涉及到参与方比较多的,可以拉会确认评估是否有问题
    上线策略需要选择灰度单台,灰度15-30min,灰度时需要登陆机器看下日志有无异常
    并且查看监控是否有接口异常增多,耗时增加等

3.其他问题

● 需求并行
○ 尽量不要需求并行,在接需求初期就和pm、mentor同步好自己手头的工作。真滴没得办法了,就按照需求上线的时间、重要程度进行排序。需要注意点的是自己也需要和cpu的工作原理一样,外部看是并行,实际在某一个时间分片只能是串行的,做到先把一件事情处理好(结束)再去处理下一件。
● 产品需求变更
○ 需求详细评审过后,在你开发、自测、联调、测试阶段,pm都有可能变更需求,这个时候需要敏锐的察觉到,并且和mentor商量/自己评估工作量,考虑是否需要增加工期,修改排期,确认需要后,在群里同步(不要私下口头达成协议)排期的变更并说明原因,需要让pm将变更的内容标准到prd中,同时同步fe/qa同学,方便版本一致和有迹可循(@郭嗣彧补充~)
● 养成文档化的好习惯
○ 做到心中有数,也方便以后查看
● 沟通方面
○ 金字塔原理,结论先行,分点陈述
○ 尽量减少一对一(线上/线下)的沟通,有问题都在群里进行反馈,留下沟通的记录,之后出问题了可以有记录可以查询,避免被甩锅
○ 线上会议结束后,整理好会议结论&todo,发到群里@ 相关人员
● cr(code recview)
○ cr对于个人成长/业务质量来说都非常的有必要,特别是对于还在成长期的校招同学。可以通过cr发现:设计上的缺陷:你的设计和需求实际要求是否有偏差;实现上的缺陷:是否有显而易见的异常可能性,是否有更加优雅、更加面向未来的写法等等。会对需求的交付质量是进一步的保证,对个人成长也有很大的帮助。
○ 提cr的时机:最佳做法是在提测前就提cr,保证设计上没有大的问题
○ 心态上:千万不要觉得cr是在给你挑刺,而是一次非常宝贵的学习机会,是你的前辈在花时间帮助你来提高。
○ 行动上:
■ cr前:在提cr前,先自己认认真真地检查一遍,保证没有一些基础的错误,包括拼写、注释、npe等,
■ cr中:对于mentor提出的问题不太明白的地方,可以一起沟通讨论。
■ cr后:推荐单独起一个文档,记录下cr时需要修改的点,方便回顾。

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

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

相关文章

redis之为什么那么快

写在前面 在面试中关于redis经常被问到一个问题就是redis为什么快,本文就一起从其底层的数据结构实现来分析下,为什么快,哪些快,哪些慢,哪些操作会导致慢等,下面我们就开始吧! 1:为…

【无标题】近几年攻防演练攻击队典型突破的例子

蓝队经典攻击实例 实战攻防演练中红队网络的部署情况各有特点,蓝队也会根据攻 击目标的不同而采取不同的攻击策略和手段。下面几个案例展示的就 是针对红队网络的不同薄弱点采取的不同的典型攻击策略与方法手 段。 正面突破:跨网段控制工控设备 某企业…

C#面向对象程序设计课程实验一:实验名称:C#语言基础、程序流程控制

C#面向对象程序设计课程实验一:实验名称:C#语言基础、程序流程控制实验内容:C#语言基础、程序流程控制一、 实验目的二、实验环境三、实验内容四、实验总结实验内容:C#语言基础、程序流程控制 一、 实验目的 (1)练习 C#变量声明和…

simulink-自定义模块GUI回调函数

目录 一、创建simulink模块 二、自定义GUI步骤 2.1 设计组件界面信息 2.2 GUI控件介绍 2.2.1 Parameter参数配置组件 2.2.2 Container参数配置组件 2.2.3 Display参数配置组件 2.2.4 Action参数配置组件 2.3 控件回调函数使用方法 三、设置Help信息 四、获取配置控件参数 4.…

ubuntu 搭建RKNN-Toolkit环境

1. github下载官方的RKNN-Toolkit项目包 地址:https://github.com/rockchip-linux/rknn-toolkit 然后还需要下载rknn-toolkit包,GitHub下方有链接: 各种版本的官方下载: https://github.com/rockchip-linux/rknn-toolkit/relea…

实现有效控制项目进度,需要做好这些工作

制定出切合的项目计划是执行的重要基础,计划制定的过程同时也是计划逐步细化的过程, 进度计划的贯彻是计划实施的第一步,也是最关键的一步。 一、实现有效控制项目进度,需要做好以下工作: 项目计划,决定…

JavaScript · 9:数据类型转换 隐式转换

总览 1.数据转换为string类型 2.数据转换为Number数字类型 3.数据转换为boolean类型 一、将数据转换为string类型 1.方法 最常用的是“加号拼接字符串”,也就是 隐式转换 ,其中用于拼接的字符串内容可以为空 二、将数据转换为number数值类型 1.方…

Vue 响应式实现原理深入浅出

前言 vue 是一个易上手的框架,许多便捷功能都在其内部做了集成,其中最有区别性的功能就是其潜藏于底层的响应式系统。组件状态都是响应式的 JavaScript 对象。当更改它们时,视图会随即更新,这让状态管理更加简单直观。那么&#…

既要又要的正则匹配规则

目录 1 背景 2 浅谈 3 分析 3.1 如何识别成整体块? 3.1.1 正则匹配整体块 3.1.2 “ - ”开头“ - ”结尾 3.1.3 模糊匹配不行,采取精准匹配 3.2 如何作为整体块显示? 3.3 光标不可以中间插入 4 效果展示 5 参考代码 1 背景 在上面…

BorderDet:Border Feature for Dense ObjectDetection

原文链接: 概述 密集物体检测依赖于滑动窗口,在图像的规则网格上预测物体,使用点的特征图来生成预测边界框,但由于边界信息不明确导致无法进行准确定位。本文提出了“Border-Align”的操作来从边界点中提取特征来增强点特征。基于…

Jmeter初始学习

Jmeter是一款优秀的开源性能工具,官网文档地址:http://jmeter.apache.org/usermanual/index.html 一、优点 1.开源工具,可扩展性非常好; 2.高可扩展性,用户可自定义调式相关模块代码; 3.精心简单的GUI设…

iOS App更换图标Logo(本地更换)

1.各大购物平台在节假日都是更换App Icon图标 通常有两种方式:1.每换一个新的图标,需要重新上一次AppStore; 2.在项目里预留好未来需要更换的图标,用api触发(或者本地时间判断自动更换) 两种方法各有利弊,第一种 弊&…

「喜迎华诞」手把手教你用微信小程序给头像带上小旗帜

文章目录一、文章前言二、实现原理三、开发步骤四、完整代码五、国庆临近,祝祖国永远繁荣昌盛!一、文章前言 2022年是新中国成立73周年,在这个举国欢庆的日子里,让我们给头像上加上小红旗,迎国庆换新颜,一起…

视频倒放怎么制作?快来学会这几个简单的方法

众所周知,如果我们想要让视频更具有观赏性的话,少不了用视频倒放功能来制作视频。不过还是有很多小伙伴不知道视频倒放怎么制作? 下面我就来手把手教你们视频倒放的制作方法,你们快来看看吧! 方法一:提词全…

Monaco Editor教程(五): 实现同时多文件编辑,tab切换

背景 上一篇我们讲解了如何设置编辑器的值,获取编辑器的值,以及监听编辑器的内容修改。这些功能对于基础的单文件修改,一次只修改一个文件的业务场景比较友好。但如果是复杂的场景,比如WEB IDE,同时打开一个项目的多个…

聊聊SQL注入

明天是国庆1001,祝大家国庆节快乐!!!这个月还有属于程序员的节日:1024SQL注入问题概述:首先SQL注入是一个非常危险的操作,很可能被一些不怀好意的人钻空导致我们系统出现异常等状况,比如数据库遭到破坏或被入侵。原因:使用JDBC的Statement语句添加SQL语句由于我们的JD…

直播电商开发,源码无加密

随着直播电商的流行,很多企业开始使用商场电商直播系统,该企业使用电商直播系统的优势具体体现在哪里?下面由零七科技小编为您总结企业电商直播系统的优点。 使用电商直播系统的优点: 1、全面展示商品风格和效果。 与在线平台的…

【Django-rest-framework框架】第04回 视图集

目录1. 两个视图基类1.1 GenericAPIview属性和方法1.2 基于APIView写5个接口1.3 基于GenericAPIview写5个接口2. 5个视图扩展类3. 9个视图子类4. 视图集5. 源码分析ViewSetMixin6. 总结7 继承关系画出来,有哪些常用属性或方法写出来 1. 两个视图基类 1.1 GenericAPIview属性和…

【redis】7.1 分布式架构概述(章节介绍)

分布式架构概述 请求业务比较长(耗时业务),需要分布式系统。 1. 本章节内容 分布式缓存中间件Redis分布式会话与单点登录分布式搜索引擎Elasticsearch分布式文件系统分布式消息队列分布式锁数据库读写分离与分库分表数据库表全局唯一主键i…

迭代器并不全是指针,list的迭代器与vector和string的有什么不一样,让博主告诉你其底层原理!

链表的模拟实现 文章目录链表的模拟实现一、list的基本架构🤖_list_node基本构架--双向带头循环链表二、list的迭代器--重点🐱‍👤list迭代器的基本架构构造函数--node*封装operator*()--得到值operator!()--跟另一个迭代器进行比较operator(…