从0到1,马蜂窝大交通团队如何构建高效研发流程体系?



“旅游之前,先上马蜂窝” 已经成为许多人习惯性的选择。

2019年5月,马蜂窝完成了新一轮融资,金额达2.5亿美元。这也标志着通过集内容、社区、交易为一体的消费决策场景构建,从攻略社区起家的马蜂窝开始迈入在线旅游行业头部阵营。

决定出门旅游,交通方式是用户首先要考虑的事情,为了帮助用户从行程起点开始,高效完成旅游消费决策的全链路闭环,马蜂窝上线了“大交通”业务,主要提供机票、火车票及租车自驾游等服务,让用户从出行方式开始,享受旅游的乐趣一年多的时间里,马蜂窝大交通研发既要满足业务的需求,提升研发的效能;更要保证服务的质量,降低线上故障率。这支从零组建的团队经历了不小的挑战。

第一阶段  成立初期

填补业务空白是首要目标

在成立初期,团队的首要目标是快速支撑起业务,填补业务空白。

业务从无到有,功能开发需要具有快速迭代和交付的能力。我们采用的是双周迭代模式,挑战性比较强。从初期开始,我们就对项目研发全流程管理就非常重视,尽力使每一个环节都能做到规范、高效、透明。

1. 分类需求,明确迭代周期

初期团队只有十几人,但是每周并行的需求也不少。为了在项目快速上线的同时保证质量,我们按照需求的不同类型和等级梳理了交付的核心时间节点,大致分为3类:• 日常:开发工期较短,1个迭代(双周)内完成。• 项目:开发工期3天以上, 尽量在2个迭代(四周)内完成。

• 线上事件:计划外的突发状况,通常来说紧急程度高,可能会直接影响线上业务,需要及时响应。

图1:需求交付核心时间节点

为了合理安排开发资源,除线上事件外,所有需求每双周进行一次PK,根据项目价值、优先级、资源情况等确认后续2周的需求范围。

日常、项目需求主要流程如下图所示:

图2:项目流程示意

2. 借助TAPD,实现可视化管理

工欲善其事,必先利其器。

为了实现研发流程的高效、透明,团队初期就决定用工具来管理研发项目全周期。经过对比后,我们最终选择了TAPD,主要是因为 TAPD 具有灵活配置、操作简便以及支持移动办公、项目间隔离性强等优势。

在团队初期,我们主要用到的是 TAPD 的 “看板”功能进行需求管理、迭代管理和项目管理。

用看板标签区分以下字段——
• 需求优先级:P0、P1、P2、P3• 需求类型:项目、日常• 需求来源:技术、产品和线上

共创建了4种通用看板——• 待PK项目/日常看板• 日常进度看板• 项目进度看板• 线上问题转需求看板以及针对每个项目的单独看板。

图3: TAPD 看板示例这一阶段的需求流转流程如下图:

图4:成立初期需求流转流程示意

通过使用“看板”功能,待处理的业务需求优先级,拆解后各独立项目的任务清单,研发、测试和上线各环节的进度都一目了然,使研发流程的各个环节实现打通,为团队高效的协作带来了很好的氛围和基础。

第二阶段 快速发展期

保证交付效率和服务质量是关键

在业务快速发展期,开发联调和自测效果不佳,提测质量较差,测试阶段Bug较多,一个项目可能就有100多个Bug,导致项目工期不可控和线上质量不可控。因此缩短线下项目工期、减少测试阶段 Bug 以及线上问题数量、保证服务稳定是我们的核心目标。

这个阶段,我们主要使用了TAPD的“缺陷”功能进行线上问题跟进,以及“测试用例”和“测试计划”提升研发自测效率。

1. 构建线上问题处理闭环

从前,大交通业务线上问题反馈的落地点主要是各种微信群,每天大约有将近10个问题,一出现问题相关人员就要在群里讨论回复,正常的开发节奏总是被打断,值班人员也要随时盯着反馈群。

随着时间长了、业务复杂了、人员多了,这种方式带来了一系列问题:• 反馈渠道分散,问题不聚焦,并容易漏掉问题;• 问题定位难,无效 Bug 多,影响修复效率;• 无法及时监控解决过程,存在同样问题反复出现的风险

针对这些,大交通由测试团队先行,优化并完善了「线上问题反馈和处理机制」,并通过 TAPD 落地,提升问题解决的效率和质量。  

1)标准化反馈流程线上问题反馈的具体流程为:

图5:线上问题反馈流程

内部用户和外部客服人员反馈问题后,由运营、产品统一记录到 TAPD 中, 由值班的技术支持人员过滤问题,复现并确认是否为有效 Bug。如经确认是有效Bug,则直接提交负责的开发人员排查修复并评估影响面,遇重大问题则通知 Team Leader 关注;如初步确认为无效 Bug,与问题反馈人进行核实验证。无论何种类型的 Bug,都会统一录入 TAPD 记录, 直到问题关闭。最终,处理结果将反馈至产品、运营和值班人员。每周,责任技术人员以周报的形式向上级同步线上问题处理情况。

图6:线上问题处理流程

如此一来,问题记录分布在了不同人员身上,专职记录同学不用再全职盯微信群的聊天记录,开发同学也可以根据自己的时间安排来处理问题和在TAPD中回复解决方案,不用即时回复群消息,化同步为异步。

这不仅大大解放了之前专职记录同学的时间,使其投入到更多工作中去释放价值,也有效提升了团队的协同,保证每一条问题都能及时得到记录、处理和反馈,提升问题解决的效率。

2)问题评级,影响范围大的先处理

大交通线上测试团队对可能出现的线上问题进行统一梳理,并将问题类型及其产生的影响进行了相应的评级,不同级别的问题要求解决的时效性不同。一旦发现问题,按照优先级由高到低快速处理,最大程度缩小问题影响的范围,降低业务损失,同时使技术人员在解决线上问题的过程中更加合理地规划时间,提升问题解决效率。

图7:事件等级和解决时效性要求

3)重大故障Review后,创建任务跟进

对于线上故障级别比较高的,问题排除后会紧急进行故障线下 Review, 复现问题发生的时间线,明确问题产生的原因,并制定可执行的 Actions。

之前,在故障线下 Review 结束后,这些 Actions 不能得到有效监督,有时超过5-6天都没有往下落实。

现在,每个 Action 都会通过 TAPD 建立任务,根据不同等级设置 Deadline,分配给专人执行。Team Leader 会定期跟进各行动项的执行,提醒执行人及时处理,有效提升处理效率,避免类似故障再次发生。

4)问题分类,提供改进方向参考数据

之前的问题记录在文档中,格式比较松散,所以回溯问题时,如果想进行数据的统计和分析是很困难的。通过TAPD,问题记录的格式和字段被设置为固定的格式和规范,就可以从不同角度,对问题进行统计和分析。

图8:问题分类

图9:TAPD 缺陷模块使用示例

对于已经解决的问题,通过 TAPD“报表”结合规定时间内发布数据和线上问题数据的综合数据分析,得出相关结论,制定有针对性的改进措施,生成 TAPD“项目报告”同步项目组成员,避免再次发生。

2.研发自测质量提升

软件的质量是在整个研发过程中逐步形成的,离不开 QA 团队,但只靠 QA 团队关注肯定是不够的,开发也要增强自测的意识。另外,为了缩短研发交付周期,对于一些简单的日常和项目需求,我们采用了开发自测+产品验收后直接上线的模式。

“测试左移”、“发现问题漏斗模型”等概念大家可能都听说过,但真正让“测试左移”落地并不容易。特别是开始的时候,测试团队经常碰到经过自开发测后的提测需求,连冒烟用例都不会通过的状况,只能把程序打回。这样既影响交付,还造成了开发和测试同学之间的关系紧张。后来,测试同学把研发自测用例都导入到TAPD用例中,创建研发自测执行计划,研发同学联调后运行自测用例并在TAPD上标注结果,提测时测试同学会首先在TAPD上检查自测用例执行情况,全部通过后再接收测试。

图10:TAPD 测试计划示例

从今年1月份开始,部分重点项目加入了提测时show case、上线前统一开会验收的环节,有效地降低了测试阶段bug个数,现在我们在测试阶段发现的 Bug 相较从前减少了约 35%。

第三阶段 业务扩张期

需要更精细化的管理

经过一段时间的探索,对于未来一段时间内的业务模式和技术方向,我们有了比较清晰的定位,队伍人数也比最开始增长了几倍。

上文提到,之前我们一直是用 TAPD 的“看板”功能进行需求、任务和项目的迭代管理。随着使用的逐渐深入,我们发现 TAPD 看板主要是针对团队轻量级协作。但随着团队的壮大和职责细化,清晰地看到团队里每个成员当前的工作进度也变得很重要,不仅要管理需求也要管理人员,而且管理的方式也需要更加场景化、精细化。

因此,我们将看板的使用方式调整为对团队事务的管理,对整体研发流程和项目质量的管理转为使用“迭代”,团队人员之间的工作安排和进度管理使用“甘特图”,这样不同的项目和团队都可以灵活地根据自己的场景和需求添加字段满足自己的管理需求,比如业务线、需求来源、价值模型、优先级、项目角色、关键时间节点、线上故障级别、人均有效 bug 数、需求变更次数等等。日常和项目需求的状态均有以下几种:

图11:需求状态流转这一阶段需求实施具体流程如下图所示:

图12:需求实施流程

每次需求PK前都会新建两个迭代,双周的日常迭代和四周的项目迭代,PK通过的需求进行相应迭代,项目需求还会拆解成任务,全部任务完成更新状态为已上线。

改用“迭代”后我们的月平均产出项目比“看板”阶段提升了约25%。下图截取了某一个项目迭代,迭代中的需求全部完成后我们就把迭代关闭:

图13:TAPD 项目迭代使用示例改进后使用TAPD“甘特图”在需求PK时可以查看个人名下的需求,Team Leader也可以随时查看下属的任务和任务完成情况。

图14:TAPD 甘特图使用示例

此外,随着跨团队、跨部门的工作越来越多,我们也非常重视对全员项目流程管理意识的培养。

大交通技术团队目前没有专职 PM,所有项目的 PM 均为产品或技术兼职。为了保障所有日常和项目均能如期甚至提前完成、更好地让项目流程落地以及优化项目流程,由两名技术人员兼任 PMO,针对项目流程中的问题对研发和产品同学进行分享和培训,提升研发人员的项目管理能力和产品同学的流程意识。

制定规范的项目流程并落地、每个环节负责人都高质量地交付给下一个环节的负责人,是实现项目持续集成和持续交付的基础。

第四阶段 未来展望

持续探索敏捷+DevOps 的整合之道

大交通团队经过一年多的摸索,在研发质量管理上积累了一定的实践经验,但我们才刚刚启程。
在这个过程中,我们的研发流程和项目质量管理方面的很多理念和方法都借助于 TAPD 实现落地。小结一下我们在不同阶段使用 TAPD 的功能如下图所示:

图15:不同阶段对 TAPD 的使用方式

随着业务系统越来越复杂,对测试人员和质量体系的要求也会越来越高,我们需要持续探索研发效能的统计度量以及敏捷研发和 DevOps 的整合之道,使开发、运维、质量管理实现真正的一体化。相信这个过程也不会缺少与 TAPD 的密切合作。近期,我们的 PMO 团队设计了基于 TAPD  API 的初版PMO系统,目前主要统计产出和延期率,期望给各Team Leader提供一些数据展示和数据分析。比如一个迭代究竟接多少项目需求、多少日常需求才是合理的?我们会计算已完成项目和日常的平均人日,和每个迭代的项目和日常个数以及到期完成情况供各Team Leader作为参考。此系统目前还不完善,我们也在逐步优化中。

图16: 项目数据统计

另外,我们还会将 TAPD 和大交通内部 DevOps 平台打通,实现业务、开发、运维、质保的全流程自动化。

最后,感谢 TAPD 这款工具及官方团队给予我们的支持,希望在未来更加深度的合作中,马蜂窝和 TAPD 都能为更多团队的研发效率和项目质量提供更多更好的经验。

Image placeholder
Bancle
未设置
  10人点赞

没有讨论,发表一下自己的看法吧

推荐文章
Kafka 集群在马蜂窝大数据平台的优化与应用扩展

马蜂窝技术原创文章,更多干货请订阅公众号:mfwtechKafka是当下热门的消息队列中间件,它可以实时地处理海量数据,具备高吞吐、低延时等特性及可靠的消息异步传递机制,可以很好地解决不同系统间数据的

如何构建“小数据”驱动的泛场景智能应用体系?

张真百信银行首席技术架构师&AILab负责人目前负责基于自然语言的动态银行研究与落地,关注AI技术与金融,办公,生活场景的深度融入;开源软件UAVStack创始人,面向智能运维提供解决方案,AIOps

用户从0到5亿,中国移动 OneLink 架构演进之路

导语本文根据范良泽老师在2019年10月31日【第十一届中国系统架构师大会(SACC)】现场演讲内容整理而成。范良泽(中移物联网有限公司系统架构专家)2008年毕业于上海交通大学,曾供职于华为、Ope

DTCC2019:陌陌直播推荐的0到1

作为社交+直播行业的领军者,陌陌直播依托于开放式社交平台所承担的职责不同于社交和短视频推荐,需要在内容分发、社交匹配和营收目标上进行综合考虑。如何进行多目标分发的问题抽象和预估建模,以及针对业务的独特

面向DevOps的企业自动化运维体系如何构建?

随着软件交付速度的加快,过去那种研发、测试、部署和运维各自为政的模式,已经无法满足用户需求。越来越多的企业希望通过更高效、更敏捷的方式,快速交付和部署相关应用。所以,DevOps顺势而生!那么,什么是

敏捷开发流程之Scrum:3个角色、5个会议、12原则

本文主要从Scrum的定义和目的、敏捷宣言、Scrum中的人员角色、Scrum开发流程、敏捷的12原则等几方面帮助大家理解Scrum敏捷开发的全过程。一、Scrum的定义和目的Scrum是一个用于开发

吕理伟:研发质量效率体系建设助力企业发展

导语:本文根据吕理伟老师在2019年10月31日【第十一届中国系统架构师大会(SACC)】现场演讲内容整理而成。  海风教育工程卓越中心原高级总监吕理伟嘉宾介绍:13+年工作经验,2006年重点大学计

如何构建批流一体数据融合平台的一致性语义保证?

一、批流一体架构 批和流是数据融合的两种应用形态 下图来自Flink官网。传统的数据融合通常基于批模式。在批的模式下,我们会通过一些周期性运行的ETLJOB,将数据从关系型数据库、文件存储向下游的目标

等保2.0全面实施 新华三支招如何构建新形势下的态势感知

近年来态势感知的热度非常高,不少安全厂商也纷纷推出了态势感知(平台)。在今年五月份,我国正式推出了等保2.0,并已于12月1日正式实施。在等保2.0的安全框架中也明确提出了要具备态势感知的能力,要

微服务架构中如何构建一个数据报告服务?

场景描述在微服务架构中,每个微服务负责自己的数据库,微服务A是不允许直接连接微服务B的数据库进行操作的。现在有2个微服务,一个是订单服务,一个是用户服务。有一个数据报告的需求:生成一份包含用户信息的订

怎么从0搭建react项目

怎么从0搭建react项目一、浏览器中通过标签直接引入React框架有两个核心的包,分别是react以及react-dom,如何想直接在浏览器中使用React,那么把这两个包直接引入就可以了。 如

到2025年,SDN市场将达到1000亿美元

虽然NFV不断发展,但软件定义网络(SDN)也在服务提供商的网络中蓬勃发展。根据GlobalMarketInsights的报告显示,到2025年,SDN市场将从去年的80多亿美元增加的1000亿美元。

毕马威报告:钉钉活跃用户数超过2到10名之和

4月17日,毕马威、阿里研究院联合举办的“智能经济主题报告发布会”在北京召开。会上毕马威、阿里研究院联合发布了《百年跃变:浮现中的智能化组织》报告。报告中显示,钉钉在智能移动办公领域的活跃用户数排名第

研发总监谈:异地研发中心的建设的若干要点(上)

和楼主说好要写一点技术管理方向的文章,从开始说到正式接受主题为《异地研发中心建设模式》的约稿有数月之久,原计划1~2周内写完,结果光思考“应该要写什么”就花了一个月。一方面是拖延癌的原因,另一方面也是

96秒100亿!如何抗住双11高并发流量?

今年双11全民购物狂欢节进入第十一个年头,1分36秒,交易额冲到100 亿 !比2018年快了近30 秒,比2017年快了近1分半!这个速度再次刷新天猫双11成交总额破100亿的纪录。那么如何抗住双1

中新生态城的交通状况,是嘛时候成的“津门第一”?

今天大早,刚来完一套煎饼果子的小张打算开车去滨海新区拜访客户作为天津的市辖区滨海新区早在2005年就被写入“十一五”规划成为国家重点支持开发的国家级新区在快速稳健的发展中,整个新区一片方兴未艾的繁荣景

英特尔数据中心“全家福”助燃上海交通大学“π2.0”超算系统

前不久,英特尔推出了一系列以数据为中心的产品组合,包括第二代英特尔至强可扩展处理器、英特尔傲腾数据中心内存和存储解决方案、软件以及平台技术等,以帮助用户从数据中挖掘更多价值。笔者得知,上海交通大学“π

微服务?数据库?它们之间到底是啥关系?

过去几年来,“微服务架构”这个术语持续火热,它描述了一种将软件应用程序设计为可独立部署的服务套件的特定方式。尽管这种架构风格没有确切的定义,但围绕业务能力,自动化部署,网点智能以及语言和数据的分散控制

avue和vue是什么关系?

Avue.js是基于现有的element-ui库进行的二次封装,简化一些繁琐的操作,核心理念为数据驱动视图,主要的组件库针对table表格和form表单场景,同时衍生出更多企业常用的组件,达到高复用,

微博广告策略工程架构体系演进

概述 1.广告样式与场景 上图是微博广告目前商业场景流,“一屏四大流”。“一屏”指打开微博的Fashion,“四大流”指占据微博商业化的主体,包括关系信息流、热门流、评论流和热搜流。右图为广告投放的

云数据库反脆弱性运维体系

摘要:本文主要分享如何构建反脆弱性的云数据库服务体系与实践,实现分布式云数据库服务的高可用方案,同时采取措施保护分布式云数据库整体服务,实现跨机房分布式自动切换方案,并在实践过程中,实施分享SQL自动

美团大规模微服务通信框架及治理体系OCTO核心组件开源

微服务通信框架及治理平台OCTO作为美团基础架构设施的重要组成部分,目前已广泛应用于公司技术线,稳定承载上万应用、日均支撑千亿级的调用。业务基于OCTO提供的标准化技术方案,能够轻松实现服务注册/发现

【CSS全解01】CSS基础-体系化学CSS

大纲 基础部分学习占比:HTML1%`CSS19%Javascript80%`(`基础部分?%框架?%`项目?%) CSS历史 AcidTestforbrowser CSS是艺术(非逻辑,用测试经验来

如何高效地学习技术

我们相信努力学习一定会有收获,但是方法不当,既让人身心疲惫,也没有切实的回报。高中时代,我的同桌是个漂亮女同学。她的物理成绩很差,虽然她非常勤奋的学习,但成绩总是不理想。为了巩固纯洁的同学关系,我亲密

如何利用科技提高效率,降低成本

以前,企业用数据库来存储客户信息,这些信息必须谨慎保存,并且需要实时手动更新。今天,有许多自动化CRM工具在被设计时考虑了各个行业不同的需求。过去,无论企业规模大小,都必须向客户开具纸质发票,并等待数