前几天在公司应领导要求搞得一个分享,也在这里分享下。
产品研发流程
- 需求对接
- 研发过程
- 测试与版本
需求对接与变更
需求来源
- 来自客户的直接需求,日常售后运维收集的
- 参考资料,其他公司的竞品
- 与项目部、售后部门等沟通,需求调研
- 公司产品规划
- 主要原则,不闭门造车,不想当然,参考已有成熟产品或业界规范,或者最新的政策文件
输入输出
- 需求规格说明书,或者简单的说明文档(因为后期肯定有变动,文档要重写)
- 功能脑图、原型图 Axure RP,或者html地址
- 产品预期的目标
- 产品与相关研发人员,进行需求说明评审会议
- 会议前,相关文档提前发给相关人员(UI、开发和测试),供阅读思考
- 会议时,产品经理按需求点逐一讲解,待讲解完一个大的功能点,大家提问讨论,统一对需求的理解
- 一个简单的会议纪要,记录一下大家有矛盾的点
解决方案编写
- 需求会议后,研发人员针对需求编写解决方案
- 解决方案包括功能模块划分、表结构设计、实体类设计等,产出一个解决方案文档,包含对需求的理解,功能实现方式,包括一些业务流程图、架构图、部署图、SQL脚本等(可以使用Visio、亿图图示、PowerDesign等工具进行设计)
- 如果是完全的新项目,可能还需要考虑技术选型,例如使用哪种编程语言、开发框架、数据库等,是否需要集群部署,一般与团队原有知识体系保持一致
- 解决方案,经研发负责人评审后,进行任务分解分配,到具体人员
- 根据现有资源情况,进行大致工期规划,列一个时间表
- 项目进度工期可以使用project等管理,明确任务时间点,人员等
- 需求可以使用JIRA、禅道等工具进行管理,可以将资料作为附件放在记录里
- 注意:一般根据项目情况,要按照1.5倍时间预估,因为总有突发情况,而且前期的估算不一定准确
需求变更处理
- 对于新产品研发,或者客户项目开发,需求变更无法避免
- 主要是新的东西,大家没法一开始就能明确其所有特性,后续可能有一些更好的想法,或者发现现有设计有重大缺陷
- 需求变更,则需要对变更需求进行对接、评审(对现有框架、工期等的影响)、解决方案编写、工期计划的调整
- 对于需求变更处理,要有原则,并不是所有的变更都要立即接受处理
- 对于重大缺陷,或越往后期改动成本越大的,可优先处理
- 对于一些不影响使用的优化或需求,可按列入写一个版本计划
- 所有的需求变更,需要在JIRA或禅道里记录,新增一条记录
研发过程管理
功能开发
- 重点任务,及时跟踪,根据需要加班完成
- 进行阶段性短会,或者周会,每周要有项目进度说明
- 前后端分离,要做好API接口维护,要尽量保证一个稳定环境和数据,供前端调试
- 针对部分疑难问题,短时间无法处理掉的,及时汇报,大家一起解决
- 宜早不宜迟,前中期多干点,留出冗余时间处理突发情况,尽量不要卡着时间点去完成任务
- 及时维护JIRA或禅道里的任务状态,任务完成情况作为一项考核指标
- 不能简单粗暴使用,因为有的关键任务可能要好几天完成,小任务可能半小时完成,所以数量和按时完成率也只是参考
代码审查
- 编码规范,约定大于配置,阿里编程规范、数据库规约等
- 合理的类和变量命名,合理的注释,合理的方法长度
- 代码静态审查 sonar cube
- 人工审查,代码走读
- 审查完成后,整理出现的问题并宣讲,大家一起学习下,避免类似问题
知识库
- 产品相关文档,包括需求文档、设计文档、用户手册等
- 功能模块的文档,开发人员编写和使用,包括功能实现逻辑,在什么位置、有哪些类和表、有哪些接口等,可作为阶段性的工作文档,减少后续维护成本
- 疑难问题的文档,记录遇到的问题,解决过程,解决结果等
- 知识分享文档,产品中用到的关键技术,或者新技术,进行简单的介绍,包括特性、使用方式等
测试与版本
测试要求
- 首先要按层功能自测,自己测试通过,再交由前端联调或测试人员测试
- 保留必要的测试数据,接口测试要保留好输入输出(可以使用postman等工具)
- 对测试人员的测试要持续跟进,对于影响测试的问题优先处理,其他缺陷或优化,后续处理
- 对于多变的阶段,来不及使用JIRA禅道等管理工具时,可以使用腾讯在线文档,使用表格管理
- 对于稳定期,可以使用JIRA禅道等管理工具,对问题追踪
- 测试介入越早越好,最好在需求阶段介入,方便更早的开始编写维护测试用例,测试完成后要有测试报告
- 如果条件允许,一个大的功能模块完成后,可以让测试人员对这个功能先行测试
- 至少两轮完整测试,一轮集成测试,一轮测试问题修改后的回归测试
版本管理
- 代码主线分支管理
- 产品代码管理
- 项目代码管理
- 发布版本管理(程序包、文档、SQL/shell脚本)
- 部署文档(自动化部署脚本,数据库初始化脚本)
经验分享
保持学习
- 学会利用互联网,开源免费的各种资料,源码
- 推荐CSDN、B站、腾讯课堂、开源中国等
- 学习的广度和深度,根据需要针对性学习,学了要用起来,要有总结和记录
- 有计划、有一定强度的持续学习,日积月累
几条工作经验
- 输入参数校验,前端做了,后端也要做,可以借助框架的validate,也可以自己写
- 避免在循环里访问数据库、打开文件等,防止对资源的过度占用
- 数据库操作要谨慎,删除修改操作要谨慎,对数据有备份计划,脚本定时备份
- 要有运维日志,对重要数据的增删改一定要有操作记录
- 程序输出的日志级别,刚上线日志级别可以调低点,要关注磁盘剩余空间,定时压缩,适时清理
- 提升开发效率,每天要完成的任务列个列表,按优先级和紧急程度顺序完成,实在无法按时完成要及时主动的和上级领导沟通
- IT行业加班是常态,几乎所有公司都无法避免,要尽量按时吃饭。当你加班加到身体不舒服的时候,例如头疼、胸闷、胸口痛,赶紧回家休息,如果情况严重,及时去医院或者打120
后期分享计划
- DevOps自动化运维(docker、k8s)
- clickhouse大数据组件
- 分库分表在sass平台的应用
- 产品国产化(使用国产操作系统、应用服务器、数据库等)
- elasticsearch搜索引擎使用
- 微服务如何应对高可用、高并发(redis缓存、SQL优化与索引使用、集群负载均衡、分库分表等)
- 大家可以拟一些主题,后期有时间时做一些工作相关的、产品技术相关的分享会