聊聊产品研发流程

前言

最近一段时间在忙着开发公司的产品,第一阶段也结束了,今天想跟大家聊聊一个产品的正常的开发流程。正常的流程应该是:前期需求对接;中期研发过程;后期测试与版本。

需求对接

需求来源

  • 来自客户的直接需求,日常售后运维收集的;
  • 参考资料,其他公司的竞品;
  • 与项目部、售后部门等沟通,需求调研;
  • 公司产品规划;
  • 主要原则,不闭门造车,不想当然,参考已有成熟产品或业界规范,或者最新的政策文件;

输入输出

  • 需求规格说明书,或者简单的说明文档;
  • 功能脑图、原型图 Axure RP;
  • 产品预期的目标;
  • 产品与相关研发人员,进行需求说明评审会议;
  • 会议前,相关文档提前发给相关人员(UI、开发和测试),供阅读思考;
  • 会议时,产品经理按需求点逐一讲解,待讲解完一个大的功能点,大家提问讨论,统一对需求的理解;
  • 一个简单的会议纪要,记录一下大家有矛盾的点;

解决方案编写

  • 需求会议后,研发人员针对需求编写解决方案;
  • 解决方案包括功能模块划分、表结构设计等,产出一个解决方案文档,包含对需求的理解,功能实现方式,包括一些业务流程图、架构图、部署图、SQL脚本等;
  • 如果是完全的新项目,可能还需要考虑技术选型,例如使用哪种编程语言、开发框架、数据库等,是否需要集群部署,一般与团队原有知识体系保持一致;
  • 解决方案,经研发负责人评审后,进行任务分解分配,到具体人员;
  • 根据现有资源情况,进行大致工期规划,列一个时间表;
  • 项目进度工期可以使用project等管理,明确任务时间点,人员等;
  • 需求可以使用JIRA、禅道等工具进行管理,可以将资料作为附件放在记录里;
  • 注意:一般根据项目情况,要按照1.5倍时间预估,因为总有突发情况,而且前期的估算不一定准确;

需求变更处理

  • 对于新产品研发,或者客户项目开发,需求变更无法避免;
  • 主要是新的东西,大家没法一开始就能明确其所有特性,后续可能有一些更好的想法,或者发现现有设计有重大缺陷;
  • 需求变更,则需要对变更需求进行对接、评审(对现有框架、工期等的影响)、解决方案编写、工期计划的调整;
  • 对于需求变更处理,要有原则,并不是所有的变更都要立即接受处理;
  • 对于重大缺陷,或越往后期改动成本越大的,可优先处理;
  • 对于一些不影响使用的优化或需求,可按列入写一个版本计划;
  • 所有的需求变更,需要在JIRA或禅道里记录,新增一条记录;

研发过程

功能开发

  • 重点任务,及时跟踪,根据需要加班完成;
  • 进行阶段性短会,或者周会,每周要有项目进度说明;
  • 前后端分离,要做好API接口维护,要尽量保证一个稳定环境和数据,供前端调试;
  • 针对部分疑难问题,短时间无法处理掉的,及时汇报,大家一起解决;
  • 宜早不宜迟,前中期多干点,留出冗余时间处理突发情况,尽量不要卡着时间点去完成任务;
  • 及时维护JIRA或禅道里的任务状态,任务完成情况作为一项考核指标;
  • 不能简单粗暴使用,因为有的关键任务可能要好几天完成,小任务可能半小时完成,所以数量和按时完成率也只是参考;

代码审查

  • 编码规范,约定大于配置,阿里编程规范、数据库规约等;
  • 合理的类和变量命名,合理的注释,合理的方法长度;
  • 代码静态审查 sonar cube;
  • 人工审查,代码走读;
  • 审查完成后,整理出现的问题并宣讲,大家一起学习下,避免类似问题;

知识库

  • 产品相关文档,包括需求文档、设计文档、用户手册等;
  • 功能模块的文档,开发人员编写和使用,包括功能实现逻辑,在什么位置、有哪些类和表、有哪些接口等,可作为阶段性的工作文档,减少后续维护成本;
  • 疑难问题的文档,记录遇到的问题,解决过程,解决结果等;
  • 知识分享文档,产品中用到的关键技术,或者新技术,进行简单的介绍,包括特性、使用方式等;

测试与版本

测试要求

  • 首先要按层功能自测,自己测试通过,再交由前端联调或测试人员测试;
  • 保留必要的测试数据,接口测试要保留好输入输出;
  • 对测试人员的测试要持续跟进,对于影响测试的问题优先处理,其他缺陷或优化,后续处理;
  • 对于多变的阶段,来不及使用JIRA禅道等管理工具时,可以使用腾讯在线文档,使用表格管理;
  • 对于稳定期,可以使用JIRA禅道等管理工具,对问题追踪;
  • 测试介入越早越好,最好在需求阶段介入,方便更早的开始编写维护测试用例,测试完成后要有测试报告;
  • 如果条件允许,一个大的功能模块完成后,可以让测试人员对这个功能先行测试;
  • 至少两轮完整测试,一轮集成测试,一轮测试问题修改后的回归测试;

版本管理

  • 代码主线分支管理;
  • 产品代码管理;
  • 项目代码管理;
  • 发布版本管理(程序包、文档、SQL/shell脚本);
  • 部署文档(自动化部署脚本,数据库初始化脚本);

后记

保持学习

  • 学会利用互联网,开源免费的各种资料,源码;
  • 推荐掘金、B站、腾讯课堂、开源中国等;
  • 学习的广度和深度,根据需要针对性学习,学了要用起来,要有总结和记录;
  • 有计划、有一定强度的持续学习,日积月累;

经验分享

  • 工作中提升开发效率,每天要完成的任务列个列表,按优先级和紧急程度顺序完成,实在无法按时完成要及时主动的和上级领导沟通;
  • IT行业加班是常态,几乎所有公司都无法避免,要尽量按时吃饭。身体是自己的,照顾好自己,每周进行锻炼(例如跑步/打篮球等);
  • 学会理财,人生本就起起落落,没有谁是一帆风顺的,但只有存下来的钱,是你失意时最大的支撑;
  • 管理自己的情绪,而管理情绪最好的方式是,不生闲气、不争对错、不理烂人

猜你喜欢

转载自juejin.im/post/7130155047760953381