在最近召开的“2016Esri空间信息技术开发者大会”上,来自Esri(北京)研发中心的荣峻德与来自全国的空间信息技术从业者及爱好者分享了他对于敏捷开发的理解与实践。
荣峻德认为,敏捷开发就是缩短开发产品工作流程的一种方式,通过不断迭代的开发、讨论与评估,可以在几个月甚至几周的时间内,开发出产品的雏型与功能,并与客户做讨论与评估,以快速获取客户的反馈,进行修改与改进,从而不断促使产品与客户的需求相符合。
但敏捷开发真的适用于自己的产品吗?或者为何不使用传统的瀑布式开发方式呢? 荣峻德认为其实并不是所有产品都适合敏捷开发。对于那些功能固定,可预期的产品,就可能不适用于敏捷开发。用传统瀑布式的方式(一次性、线性的,从产品的需求分析、系统设计、系统实现、系统集成到系统测试的开发方式)可能较为适合,因为在整个开发过程当中,不需要通过快速的变化,来反映客户的需求。但如果产品的功能不定,产品需求也是在不断变化,或者客户的反应也是随时变化,那你或许就需要敏捷开发。
他指出,“最近大家可能会发现,Web或者Mobile上的App越来越多,如果你有一个新的想法,却不能很快做出来的话,就很可能会被别人取代。所以如何在快速流动的时代下,迅速将你的App开发出来,并交付给使用者,这是非常重要的事情。而且对于Web或者Mobile上的App产品来说,尤为重要。”当客户的需求不断变化,开发时间相对急促的情况下,如果不能迅速将产品开发出来,我们很有可能会失去先机,让别人抢先一步。
敏捷开发的精神其实在于:1) 个体和互动高于流程和工具;2) 工作的软件高于详尽的文档;3) 客户合作高于合作谈判;4) 响应变化高于遵循计划。由于客户与市场需求不断的变化,我们应强调团队的合作与沟通、开发生产力的提升、客户的互动以及反映需求的灵敏力。然而如何进行敏捷开发?其实有许多的方法,譬如:极限编程(XP)或者Scrum。荣峻德在这次会议上重点介绍了scrum的开发方法。他以橄榄球赛来形容Scrum的精神。“如果有人犯规、受伤、或者球出界,团队都会重新组织,因应球赛的变化讨论战术。其实不断的沟通讨论并且快速构思反应的战术,就是Scrum的精神。应用在产品开发上,Scrum就是一种迭代式增量的软体开发过程,通过不断的讨论、选定开发计划与流程,来进行开发,并且随时反映客户与市场的需求。”
Scrum的主要特性包括:迭代式、增量式;自组织的小团队;快速反馈的短周期;按照业务价值的优先级排序;乐于接受改变;透明公开;实时侦测;快速适应。Scrum包含几个关键之步骤:
1.产品规划
了解用户需求,撰写用户的故事列表,包括产品功能分类、功能是谁需要,用在哪边,可以解决什么样的问题。
2.迭代计划
一但有了产品规划的功能需求与故事列表之后,我们就可以进行迭代计划的制定,包括:每次迭代需要多长的时间(最好不要超过六周)、开发的优先顺序、团队成员(产品经理、开发团队、UI设计师、测试员等)、评估会议举办的日期、每日站会时间等。
3.迭代开发
依据迭代计划,进行开发。团队成员每天早上必须在10分钟内,用站立的方式,沟通与讨论昨天完成了什么工作、今天预计处理哪些工作以及遇到什么样的问题,让每个成员都充分了解彼此的工作内容与进度。
4.迭代演示与回顾
在每次迭代计划完成之后,都可能完成产品的部分或者完整的功能。此时我们可以邀请客户进行产品功能的评估会议,检查产品与功能的缺点,吸取客户的反馈,纳入下次迭代开的计划。除此之外,我们可以针对产品开发过程的问题与缺陷,另外开一次团队内部的回顾大会,进行讨论并且提出改进的方法,提升未来的开发效率。
荣峻德特别强调:“Scrum其实只是一个敏捷开发的方法,或者只是一个框架。你可以在网络上找到许多Scrum的成功案例,学习到许多不同应用Scrum的开发方法,但是你必须依据企业文化、团队特性、以及开发产品的特性,调整或者融入原本开发的方式,找出最适合你的Scrum方式,这才是你如何使用Scrum敏捷开发的非常好的解答。”