/联系我们/客服中心

集团内刊 ISSUE

TERRITORY 光耀东方版图

ISSUE

集团内刊

微批的敏捷开发

2016.11.29

文章所在栏目: 光耀东方学院 作者:文/动批网 H5研发部 杨长星

随着科技的不断发展,互联网逐步走入了千家万户。越来越多的人融入其中,享受了各种便捷与方便。所谓的“懒文化”随之流行起来,足不出户就可以满足各种需求,衣食住行等各种行业都在发展网络力量。电商网站作为互联网中的一个分类得到了很大的空间。所谓电商网站就是企业、机构或者个人在互联网上建立的一个站点,是企业、机构或者个人开展电商的基础设施和信息平台,是实施电商的交互窗口,是从事电商的一种手段。


动批网作为电商网站成员之一,于2014年8月30日正式上线,随之动批网体验广场正式营业。动批网一直致力于打造全国首个流行时尚服装专业批发平台,为服装批发行业提供电商服务。其经营理念:“线上电子商务批发交易+线下实体店批发”O2O新模式,实现“专业平台+移动应用+体验广场”功能,颠覆传统电商概念。其目标:为服装批发商与采购商提供便捷,高效,安全的电子化与信息化的交易平台。


作为参与开发动批网的团队中的一员,自从加入动批网这个大家庭应经参与开发了微批微信版、动批网PC版、动批网APP以及批发圈APP四个项目的交互开发。开发过程中接触了以前没有体验过的敏捷开发流程。经过一年多的参与其中,有了一些理解与大家分享一下:


敏捷的价值观


敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。紧跟时代步伐的今天,“效率”已经是工作中的重中之重,快速、高效地迭代式开发显然适用于目前我们的开发团队。


敏捷的价值观:沟通、简单、反馈、勇气,此外,还扩展了第五个价值观:谦逊。


◆沟通 建模不但能够促进你团队内部的开发人员之间沟通、还能够促进你的团队和你的project stakeholder之间的沟通。


◆简单 画一两张图表来代替几十甚至几百行的代码,通过这种方法,建模成为简化软件和软件(开发)过程的关键。这一点对开发人员而言非常重要——它简单,容易发现出新的想法,随着你(对软件)的理解的加深,也能够很容易的改进。


◆反馈 Kent Beck在Extreme Programming Explained中有句话讲得非常好:“乐观是编程的职业病,反馈则是其处方。”通过图表来交流你的想法,你可以快速获得反馈,并能够按照建议行事。


◆勇气 勇气非常重要,当你的决策证明是不合适的时候,你就需要做出重大的决策,放弃或重构(refactor)你的工作,修正你的方向。


◆谦逊 最优秀的开发人员都拥有谦逊的美德,他们总能认识到自己并不是无所不知的。事实上,无论是开发人员还是客户,甚至所有的 project stakeholder,都有他们自己的专业领域,都能够为项目做出贡献。一个有效的做法是假设参与项目的每一个人都有相同的价值,都应该被尊重。


Scrum开发流程


敏捷开发,它是一种指导思想或开发方式,但是它没有明确告诉我们到底采用什么样的流程进行开发,而Scrum和XP就是敏捷开发的具体方式了。Scrum和XP的区别是,Scrum偏重于过程,XP则偏重于实践,实际开发过程中,两者是结合在一起应用的,我们团队目前采用的是Scrum。


Scrum是一种灵活的敏捷软件开发管理过程。这个名词来源于英式橄榄球。Scrum方法由Ken Schwaber和 Jeff Sutherland 提出,它将软件开发团队比作橄榄球队,全队有明确的最高目标:发布产品的重要性高于一切。团队高度自治,队员们熟悉开发过程中涉及到的各种技术,紧密合作,确保每个迭代都朝着最高目标推进。而且每隔2至6周,每个人都能看到能实际工作的软件,并且据此决定是发布这个版本还是继续开发以加强它的功能。


Scrum开发流程中的三大角色


1.产品负责人(Product Owner):主要负责确定产品的功能和达到要求的标准,指定软件的发布日期和交付的内容,同时有权力接受或拒绝开发团队的工作成果。


2.流程管理员(Scrum Master):主要负责整个Scrum流程在项目中的顺利实施和进行,以及清除挡在客户和开发工作之间的沟通障碍,使得客户可以直接驱动开发。


3.开发团队(Scrum Team):主要负责软件产品在Scrum规定流程下进行开发工作,人数控制在5~10人左右,每个成员可能负责不同的技术方面,但要求每成员必须要有很强的自我管理能力,同时具有一定的表达能力;成员可以采用任何工作方式,只要能达到Sprint的目标。


如何进行Scrum开发


针对于目前我们的产品我们采用的2周一个版本的迭代计划,而这个过程我们称之为sprint。那么如何进行Scrum开发?


1.我们首先需要确定一个Product Backlog(按优先顺序排列的一个产品需求列表),这个是由Product Owner 负责的;


2.Scrum Team根据Product Backlog列表,做工作量的预估和安排;


3.有了Product Backlog列表,我们需要通过 Sprint Planning Meeting(Sprint计划会议) 来从中挑选出一个Story作为本次迭代完成的目标,这个目标的时间周期是2个星期,然后把这个Story进行细化,形成一个Sprint Backlog;


4.Sprint Backlog是由Scrum Team去完成的,每个成员根据Sprint Backlog再细化成更小的任务(细到每个任务的工作量在2天内能完成);


5.在Scrum Team完成计划会议上选出的Sprint Backlog过程中,需要进行 Daily Scrum Meeting(每日站立会议),每次会议控制在15分钟左右,每个人都必须发言,并且要向所有成员当面汇报你昨天完成了什么,并且向所有成员承诺你今天要完成什么,同时遇到不能解决的问题也可以提出,每个人回答完成后,要走到黑板前更新自己的 Sprint burn down


6.做到每日集成,也就是每天都要有一个可以成功编译、并且可以演示的版本;很多人可能还没有用过自动化的每日集成,其实TFS就有这个功能,它可以支持每次有成员进行签入操作的时候,在服务器上自动获取最新版本,然后在服务器中编译,如果通过则马上再执行单元测试代码,如果也全部通过,则将该版本发布,这时一次正式的签入操作才保存到TFS中,中间有任何失败,都会用邮件通知项目管理人员;


7.当一个Story完成,也就是Sprint Backlog被完成,也就表示一次Sprint完成,这时,我们要进行 Srpint Review Meeting(演示会议),也称为评审会议,产品负责人和客户都要参加,每一个Scrum Team的成员都要向他们演示自己完成的软件产品(这个会议非常重要,一定不能取消);


8.最后就是 Sprint Retrospective Meeting(回顾会议),也称为总结会议,以轮流发言方式进行,每个人都要发言,总结并讨论改进的地方,放入下一轮Sprint的产品需求中。


敏捷开发的好处:


1. 精确:瀑布模式通常会在产品起点与最终结果之间规划出一条直线,然后沿着直线不断往前走。然而当项目到达终点时,用户通常会发现那已经不是他们想去的地方。而敏捷方法则采用小步快跑,每走完一步再调整并为下一步确定方向,直到真正的终点。


2. 质量:敏捷方法对每一次迭代周期的质量都有严格要求。一些敏捷方法如极限编程等,甚至使用测试驱动开发(test-driven development),即在正式开发功能代码之前先开发该功能的测试代码。这些都为敏捷项目的整个开发周期提供了可靠的质量保证。


3. 速度:敏捷团队只专注于开发项目中当前最需要的、最具价值的部分。这样能很快地投入开发。另外,较短的迭代周期使团队成员能迅速进入开发状态。


4. 丰厚的投资回报率:在敏捷开发过程中,最具价值的功能总是被优先开发,这样能给客户带来最大的投资回报率。


5. 高效的自我管理团队:敏捷开发要求团队成员必须积极主动,自我管理。在这样的团队中工作,每个团队成员的技术能力、交流、社交、表达和领导能力也都能得以提高。


总而言之,个人感觉敏捷开发带给我很多的改变:分享与学习、快速与高效、交流与复盘,充分地融入进去才能体会敏捷开发带来的乐趣,希望这种乐趣一直持续下去!


返回>>