敏捷开发在互联网金融产品研发中的应用
Posted 我们的开心
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了敏捷开发在互联网金融产品研发中的应用相关的知识,希望对你有一定的参考价值。
文/郭永华
互联网技术的发展改变了各行各业的格局,给人们的生活带来翻天覆地的变化。互联网技术和各行业的融合,在改变人们生活方式的同时,也极大地激发了个性化的需求,衍生出各种各样的细分市场。互联网和金融的结合也呈现出爆炸式增长的态势,对银行业造成了巨大的冲击。由于互联网时代的产品具有需求变化快、重用户体验、试错性等特点,传统瀑布模式的研发方式已不能适应这种变化,敏捷开发便成为互联网产品研发的首选方式。
敏捷开发强调以人为核心、提倡“增量迭代、及时交付”的思想,坚持“简单、反馈、沟通、勇气”的价值观和小步快跑的开发策略,目的是为了开发出符合现实的软件。所谓的符合现实就是及时响应客户需求,紧跟现实的变化。敏捷开发方法并不是指一种具体的方法,而是一类方法,凡是认同敏捷开发价值观和遵循敏捷开发12条原则的开发方法都可以称为敏捷开发方法。典型的敏捷开发方法有Scrum、XP(极限编程)、FDD(特性驱动开发)、DSDM(动态系统开发方法)、Lean Development(精益开发)等。目前,世界上有超过一半的软件企业在进行敏捷开发,尤其是互联网企业,比如Google、微软、雅虎、腾讯、淘宝、百度、京东、携程等,也有越来越多的软件企业正在或开始考虑转向敏捷开发。
传统的瀑布型开发模型要经过需求、设计、编码、测试、发布等几个阶段,最后才能看到产品,等产品开发出来以后可能已经失去了市场机会或者需求已经变化。而敏捷开发方法能够快速的将产品推向市场,并根据市场反馈及时调整方向和快速响应需求,降低机会成本。
2013年6月,余额宝的推出引爆了互联网金融行业的爆炸式增长,对传统银行业造成了巨大的冲击。面对这些挑战,我行主动出击,积极寻求变革,行党委将互联网金融作为推动业务和经营模式拓展的战略性决策,启动了互联网银行建设,并成立互联网银行项目组。10月初,项目组整体搬至红螺园进行封闭研发。该项目的开发过程是在CMMI过程体系基础上进行深度裁剪和过程自定义的方式得到的。
在互联网银行研发的过程中,为了应对多变的用户需求、增强客户体验、加快开发进度、快速推出产品,项目组借鉴多数互联网企业的产品研发经验,逐步接受和采用了Scrum、XP和KANBAN等敏捷过程的思想和做法进行互联网金融产品的研发。在随后的研发工作中,我们继续坚持敏捷开发过程的应用和改进。
在长时间的学习、摸索和实践中,我们建立起一套集成了SVN、Redmine、Jeckins、Maven和RobotFramework等多个开源工具的开发模式,并在Scrum、XP和KANBAN基础上,建立起自己的开发过程和实践,我们选择两周作为一个迭代周期,采用迭代计划、每日站会、迭代回顾、自动化测试、自动化构建等实践实现产品的持续集成和快速发布。
为了使敏捷开发的过程更好地适应我行互联网金融产品研发的需要,在推动敏捷开发实施的过程中,我们特别加强了如下几个方面的工作:
1领导带头推动
领导在处内积极倡导敏捷思想,主动带头学习和推广敏捷方法。为了推动敏捷开发,领导积极为大家推荐经典权威的敏捷开发书籍,并在每周会议上与大家分享读书的感受和心得体会,要求各个产品组选择适合的实践在组内试用。在领导的带领下,处内逐渐形成积极实施敏捷开发的氛围,大家都积极行动起来,从书籍上学习,在工作中实践,逐步实现了从以前的被动接受任务到主动发现、领取任务,从传统的重文档、重过程到重效果、重反馈的工作方式。
2明确角色转变
互联网金融项目组原来是按照产品分类划分成多个产品小组,包括公共组、支付产品组、数据网贷产品组、移动产品组等。每个小组成员都是按传统项目组的角色进行配置划分的。而在Scrum中,主要有三种角色:产品负责人、敏捷教练和产品团队,在角色和职责划分上相对传统项目组都有明显的不同。开发模式的转变也要求各产品组的角色对应Scrum角色进行转变。为此处内根据敏捷开发的需要对所有人的角色进行梳理和重新定义,产品经理转变为产品负责人,质量保证人员转变为敏捷教练,其他角色转变为产品团队。通过角色的转变,进而加快了思维的转变,为敏捷开发方法的推进起到了良好的推动作用。
3全员学习、定期分享
随着敏捷开发的推进,处内逐渐建立起人人学习敏捷的良好风气。大家争相购买敏捷开发书籍,从互联网上搜索下载电子书籍并共享到配置库一个公共区域,充分利用工作间隙、茶余饭后的时间学习敏捷方法。在每两周一次的“快乐星期五”活动期间,针对不同主题分享工作中的各种经验和知识,针对问题展开讨论。大家还积极参加外部的技术交流活动,把其他公司的人员请进来分享他们在实施敏捷开发中的经验和做法。通过学习和分享,开阔了视野、活跃了思维,在团队内建立起平等、开放、分享的工作氛围。
4选择试点、有效先行
在敏捷开发具体实施中,在共同的敏捷开发价值观和原则下,各个流派都有自己推荐使用的最佳实践,共有几十种之多。由于各产品都是在正常的工作中推行敏捷开发,并未采取运动式的方式推行Scrum的所有实践,而是在保证产品正常的研发进度要求下根据各产品组自己的意愿选择迭代计划、每日站会、看板、迭代回顾等部分实践进行试用,待看到明显效果后再慢慢铺开,逐步将Scrum、XP的其他实践用起来。
敏捷开发在互联网金融产品研发的过程中,通过团队成员在迭代回顾会议上的反馈以及实践总结,很多实践都表现出良好的效果。总体来讲,实现了每两周发布一个版本,客户需求实现周期大约为1个月,产品的周期性发布能快速实现价值,增强了客户的信心。
从具体的敏捷实践方面来讲,效果也很显著,现就迭代计划会议、每日站会、迭代回归会议说明一二。
1迭代计划会议
在迭代计划会议上,通过业务人员对迭代任务的解释说明,团队成员对任务的技术细节及和其他任务的联系有了更深入的认识,对任务的工作量估算变得更准确。工作进展在燃尽图上的趋势变得更平滑。团队和业务人员对任务的认识也更加一致,增强了团队成员之间的相互信任。明确了迭代目标和各自之间的依赖关系,方便了互相之间的协调配合。
2每日站会
每日站会由各个产品组自行决定时间,一般是上午9点,大家聚在看板前面,每个人轮流发言,介绍三个方面的问题:一是昨天做了什么?二是今天我计划做什么?三是遇到了什么障碍?时间上一般不超过15分钟。通过每日站会,让团队成员了解产品的全局情况,自己的工作在全局中的位置和作用,清楚各自工作间的影响和依赖关系,工作目标更加明确、沟通效率更高。
3迭代回顾会议
在每个迭代周期结束以后,Scrum团队聚在一起召开2个小时左右的迭代回顾会议,回顾团队在流程、工具、方法、人员等方面哪些做得较好,哪些有待改进,并找出潜在的改进事项,确定哪些改进事项在下一个迭代周期进行实施,持续改进过程。这激发了团队成员的思维,让团队直接感受到进步和改进的效果,提升了团队的凝聚力和成就感。
我们通过实施敏捷开发,取得了良好的效果,提高了工作效率,改善了客户体验。但是在实施的过程中,也碰到了一些问题,比如业务人员未能和开发团队集中办公、不会拆分用户故事、如何保持每日站会生动有趣等等。我们会在实施敏捷开发的过程中不断发现问题,通过加强协调、引进外脑、自我创造等方式不断解决问题,持续改进,把敏捷开发逐步推向深入。
在一个组织中要实施敏捷开发过程,一般都要经过守、破、立三个发展阶段。守,就是把选择的实践坚持做下去,在做的过程中,不断发现问题,不断的解决问题,把改进推向深入;破,就是在实施敏捷的过程中逐步体会到哪些是适合我们的,哪些是不适合我们的,体会到在什么样的情况下适合选择什么样的实践,找出规律性的东西;立,就是创新出自己的敏捷方法和最佳实践,并能推广给别人使用。目前,我们还处在守的阶段,也就是说我们要把选择的敏捷实践在各个产品团队里面坚持做下来,养成习惯,并在做的过程中根据效果和反馈逐步改进具体做法。在这个阶段,我们还有很长的路要走。
作者简介
郭永华,从2002年开始从事CMM、CMMI的配置管理、质量管理、过程改进的实施和咨询工作。从2007年开始全程参与了中国农业银行软件开发中心CMMI3过程改进项目的过程定义、项目试点、评审认证、重点项目推广和全面推广等各个阶段。2009年加入农行软开,先后在质量管理部、互联网金融研发部从事过程改进和质量管理工作。
轮值总编:李刚
责任编辑:张红阳
校对:闵佳
美编:杨佳卉
技术支持:潘云鹏
我们的开心 · 总编辑部
(e 语)
以上是关于敏捷开发在互联网金融产品研发中的应用的主要内容,如果未能解决你的问题,请参考以下文章