对研发管理的一些思考
团队超过10个人的时候,我们就陆续建立的我们研发管理规范,但是不完善,也一直在学习和思考。
这里的观点部分借鉴了网络观点,更多的是我们自己结合自身情况摸索出来的规范, 也许不成熟,就当是抛砖引玉吧。
为什么要有研发管理规范?
当没有一个合理的管理规范,可能会遇到的问题:
需求的进展不透明,不知道现在到哪里了
需求延期发布成为了家常便饭,不知道什么时候会发布上线
需求发布上线后,心里总是忐忑不安,不知道什么时候会出现问题和故障
需求插入随意、频繁,不计成本
团队沟通成本太高,经常性出现RD、FE、QA、PM信息不一致
不清楚,研发团队的工作量,是正常、超负荷、还是有人不饱和
在互联网初创公司里,需求和有限的资源,永远是矛盾命题,如何在矛盾中寻找平衡,把有限的资源专注于符合公司战略的需求,保持团队的节奏和良好的情绪,这是我们建立规范的背景和目的。
研发规范的10个方面
需求管理
建立需求时,需明确需求背景,期望时间和优先级
项目管理人员综合评估进行排期
研发人员需对任务进行详细的拆解
任务的拆解,有助于项目管理人员评估项目难度,工作量和风险,有助于项目有条不紊的推进, 也有助于研发人员清晰高效准确的完成任务。
以后端开发为例, 需拆解到接口或功能单元,涉及合作方配合的工作要单独列出,以下是示例:
研发人员任务开发在时间上应保持一定的冗余度,避免出现延期情况, 项目管理人员负责每日检查任务细项, 开发人员及时标记项目进度。
流程规范

上述周期安排适用于常规需求。
特别的,如果是紧急需求,会安排走特殊发版流程。
特别的,如果是大型项目,会提前安排提测,至少预留3天的测试时间。
一般的,先进行项目进度跟踪和问题复盘,再进行需求评审
【关于问题复盘】
项目进度情况,是否出现延期,如果延期,项目owner应说明原因
提测和发版是否符合预期,是否出现导致发版时间大幅延长的情况
【关于需求评审】
讲清楚需求背景和细节
评估可行性
确定对接的研发人员
确定是否要进一步进行技术方案评审
产品研发早会
每日三问
每天早上10点, 直接进行投屏过进度, 时间控制在10~15分钟。 以上反馈记录到tower看板
代码管理
将测试和生产的工作流分开,避免产生一堆无效分支和标签严格按照git flow流程进行分支的合并
以下是git flow 流程的图解

[发布生产]: 主要用master 分支
[开发新特性]: 主要从master分支,fork出feature分支,比如feature/add-new-feature(develop -> feature)
[开发结束]: 合并到release分支,各个功能开发快完成时,需要发到预发布前,生成release分支,如release/1.5.5 (feature -> release)
[测试完成] : 提交release分支,提交PR,进行code review . PR会合并到master分支
[PR合并]: PR合并后会将release分支合并到master (release -> master)
[修复线上紧急bug ]: 从master fork出一个hotfix分支,比如hotfix/fix-some-bug,发布测试测试后没有问题,提交PR,进行code review , PR会合并到master分支 (master -> hotfix -> master)
[正式环境发布 ]: 需 在master分支上打tag,tag格式如2.4.9 或 2.4.9.1 , 第4位为hotfix版本号
代码评审
代码评审不设固定时间评审,代码开发完成后进入评审。 评审的关注点如下:
是否满足产品文档需求
是否有逻辑漏洞
日志是否规范
是否有错误捕捉
是否有性能问题,如果有增加查询逻辑或者字段,要考虑是否要加上索引,高并发情况下是否会产生性能问题
注释是否清楚,重要或者复杂逻辑是否有文档说明
代码是否满足可读性要求
代码是否满足扩展性要求
代码是否可以简化
代码里是否有写入不必要的调试信息或者mock数据
变量名称是否规范
过线上错误日志信息,检查是否有需要处理的ERROR级别错误
项目测试规范
开发人员在提交给测试之前,应该先进行自测,后续引入自动化测试平台开放给前后端研发人员使用
开发开发提测之前,需要告知测试人员相关的代码改动和影响范围,影响范围由前后端对接人进行确定
开发人员项目提测最迟在发版前一天交付
测试人员测试完成后,产品经理介入产品验收流程
测试人员需要梳理出核心项目的测试主流程和测试步骤
遗留产品需求由产品经理跟进, 遗留项目bug由测试人员跟进
需要向合作方申请资源(比如app), 测试人员需要提前跟进
项目发版规范
【发版前】
开发人员发版要写发版计划,前后端发版都要写好发版计划
开发人员要明确回滚步骤, 没有回滚计划的发版计划将被驳回
开发人员应在发版计划里标注此次发版的影响范围,方便测试/产品进行验收
视情况, 开发人员发版前发出发版公告,以邮件告知给公司全部同事,如有必要还应通知相关合作方,可以同时在相关工作群同步通知
【发版中】
生产环境的每次重要操作需要有记录,且能追溯
如果有多个项目需要发版,优先发重要紧急的项目
原则上只留相关人员发版,确保第2天有其他同事可以正常处理项目需求
【发版后】
视情况, 开发人员将发版结果,以邮件告知给公司全部同事,如有必要还应通知相关合作方,可以同时在相关工作群同步通知
项目上线时需要完善监控机制,确保发布的重要功能模块能够被监控
开发人员在发版后应该把电脑带回去,方便第一时间处理问题,手机要保持畅通状态,方便出问题联系
对于改动较大的重构,需要在发版后的次日观察会员开通情况,前后端的报错日志
故障处理规范
对于影响会员开通和权益使用的大规模故障5分钟内不能定位故障,应该第一时间回滚,回滚完测试人员介入测试, 开发人员再进行问题定位
客服人员在接到故障反馈后,应第一时间和发版负责人/项目负责人进行联系
技术负责人应完善通讯录,确保出故障时能及时联系到相关负责人
故障复盘制度
出现中级以上故障后,相关责任人需要在故障处理后填写故障复盘报告
团队负责人需要在在1天内组织故障复盘会,深度剖析故障原因,有必要需要对相关人员进行问责和处罚
激励制度
随着业务的发展,我们面临更多的挑战,人员的能力模型也要进行相应的升级, 我们会针对满足能力模型的优秀人员给予相应的激励。
(以上的要求总结起来就是:事不拖,话不多,人不作)
激励包括但不限于:荣誉激励,特殊福利,特殊假期等