虚拟通用服务凭证中心二期项目的研发部门为虚拟交易平台,需求提出部门是大快消事业群的生鲜事业部,项目开始时间是从6月27日至8月28日。整个项目采用了敏捷的开发方式,研发交付效率大幅度提升,可以灵活应对紧急的计划外的业务需求,同时BUG数明显减少,业务方满意度也获得了提升。
项目背景
大闸蟹是京东生鲜标志性产品之一,每年在京东销售规模达数亿元,其中较大的销售收入通过售卖大闸蟹卡券形式完成,故大快消事业群生鲜事业部希望为供应商提供一款集发卡、预约兑换、卡密作废等功能于一体的卡券管理系统。根据不同使用对象开发不同功能模块,使用对象含:京东不同业务线人员(采销,财务,客服),大闸蟹供应商,前台客户等。
实施敏捷效果
实施敏捷后的效果,主要体现在下面几个方面:
1) 研发交付效率提升:在研发过程中,团队收到紧急的计划外的业务需求(例如:支持不关联序列号平台场景,shop端凭证激活和作废等功能),虽然增加了额外的工作量,但团队及时的进行方案设计并上线交付。这在传统开发模式下一般是难以支持的。
2) 研发质量提升:敏捷实施后,测试发现的BUG数明显减少,测试过程中后未发现重大BUG。
3) 业务方满意度提升:由于本项目在开发过程中,对于计划外的业务需求支持比较完美,让业务方满意度大幅度提升。
敏捷实施过程
1) 迭代规划
业务方、产品、研发一起做迭代版本规划,我们把高优先级、已明确的需求先进行了梳理,然后快速启动开发,项目先后进行了如下5个迭代,每个迭代都有明确的迭代目标,迭代完成后,交付的功能上线,解决业务方的紧急需求。
迭代目标贴在看板上,让大家都清楚的知道:
迭代启动第一天时,我们有个小小的启动仪式,大家互相鼓励,团队心在一起,劲往一处使,努力实现我们的目标。
2)看板设计
我们用物理看板进行可视化管理,将项目状态 (进度、风险等)通过物理实体实时展示,让团队所有成员直观地获取当前项目进展信息,这样带来的好处是:
简单,一目了然 ,降低管理成本;
实时状态显示,及时暴露问题;
信息同源使团队理解一致,提升团队凝聚力;
增强团队进取心。
我们的看板也是在不断的持续优化中,看板上的任务条也逐渐从粗放到实现精细化设计:
根据排队理论,如果每个人同时进行的任务太很多,就会因为不断的任务切换而导致成本效率低下,使每个任务完成的平均时间变长。所以我们在看板上对并发需求数/任务数也做了限制。
3)每日站会
每天早上9:30,研发团队会准时在看板前召开站会。站会是大家互相同步工作进度的过程,由开发和测试成员轮流主持。
通过每日站会来达成以下目标:
l 增加团队凝聚力,产生积极的工作氛围;
l 及时暴露风险和问题;
l 促进团队内成员的沟通和协调;
4 )自组织团队的向往
在项目过程中,大家在目标一致的前提下遵循一定的规则。
团队成员是“全方位的积极参与者”:
• 共同参与计划制定和任务安排
• 团队协作贯穿工作始终
• 面对面交流是主要沟通方式
• 关注团队目标,共担责任
我们的工作量估算是采用集体估算的方式进行的。通过集体估算,大家澄清需求,互相承诺,对工作量达成一致。
研发成员对工作是自主认领,而不是被分配的,技术负责人对大家做知识上的赋能,不进行微观上的管理工作。
通过我们的自组织工作方式,大大激发了项目团队成员的主观能动性,希望通过持续的迭代优化能真正实现团队的自组织。
5) 工程实践
我们应用了下面的工程实践:
l 持续集成、频繁集成—我们系统与其他系统(如预约平台)对接推进快速集成测试
l 严把单元测试关,单元测试一定要全面,我们的单元测试覆盖率相对不错,在测试中发现的BUG很少
l 接入sonar进行每日代码质量静态扫描。
l 结对编程,因为成本比较高,我们按一定的频率进行。
l 接口自动化测试的应用
l 严格的代码评审
6)持续改进
我们通过迭代的回顾会来及时总结问题,讨论和制订改进措施,不断的进行优化。
举例,下面是我们一次回顾会的优质产出。
好的地方:
1、敏捷看板的设计形式,有迭代版本线,目标明确;
2、敏捷模式开发人员能一部分进行开发、一部分设计,开发能直接衔接上;
3、敏捷快速迭代,能提前发现问题,并解决;
4、PRD比较粗糙的时候能完成设计、研发、测试;
5、产品、研发、测试、业务都能拧成一股绳推进项目进度和解决项目中遇到的问题;
需改进地方:
1、进一步完善团队对于迭代版本目标的认知沟通,争取达成一致
2、业务和产品侧的需求需要产品控制优先级,将条目和优先级拆到较细粒度;
3、研发侧排期及功能要和版本迭代目标相吻合,否则会对测试的排期有影响;
4、研发侧文档规范代码的遗留问题、技术栈、开发规范不统一,需要进一步优化;
5、测试侧的测试范围(新功能,回归测试)研发的意见仅供参考,测试对PRD及设计评审的参与度要提高;
7)不断的学习
目前订制了每周一进行一次内部分享,提高自身敏捷相关的理论知识,当前已进行三期。
8 )业务方的积极参与
业务方积极参与各个迭代版本的规划,以及回顾会等,及时的和产品、研发、测试沟通,快速的给予反馈,也是本敏捷项目能取得成效的原因之一。(本文于2018年发布)