对敏捷的思考(2)--引入Scrum

       目前公司的产品或项目的研发/开发既不是传统意义上的瀑布式开发流程,可以说是增量迭代类型的,但是却有没有什么大或小的一些计划,只是步步的向前推,以项目驱动产品发展。瀑布模型中需求、设计、开发、测试、上线等每一个阶段都是有一个明确的时间点,且每个阶段都依赖 而它的上一个阶段,一旦需求有所变化,就会影响后续每个阶段;而增量迭代是在瀑布模型发展而来,加入了更多的控制以及对变化的处理,里程碑是对一个迭代结束的描述。


       敏捷开发实际上是一个轻量级的项目管理规范,可将整个大的需求范围拆分成若干迭代周期,为这些迭代周期设置明确的里程碑,且评估完成这些功能需要花费的成本。更重要的是每次迭代之后,会对本次迭代进行一次回顾:取其精华去其糟粕、不断完善、不断改进。

        目前软件的节奏会越来越快,意味着变化也会越来越频繁,不可能让产品/项目研发出来时市场的需求以及发生了改变,那么就需要我们能快速发现变化、了解变化,并进行及时的调整、预知一些即将可能会出现的需求。

       从另外一个角度来讲,以最短的时间推出用户可看可接触到的东西,才能知道用户所关注的功能,哪些功能是比较期待有的。很多时候不做出一个基本可用的东西,用户的建议想法是不会触发出来的,所以将事情分成多个阶段,迭代每个阶段,不断向用户推出更多的功能点以满足用户的述求。

         敏捷只是一种思想,一种软件开发的方法学,有很多种分类(Scrum/XP/RUP)。可以说Scrum是敏捷思想落地的一个参考。我们不必完全拘泥而Scrum中定义的规范,只是需要参考它并结合自身的条件做适当的调整。

       前段时间看了《敏捷开发》、《高效程序员45个习惯》以及《轻松Scrum之旅》,其中《敏捷开发》这本书大而全,针对一个公司如何实现敏捷、从何处着手、与利益相关各部门引入敏捷都有相关的章节描述,而高效45主要是针对个人思想/意识提高来讲,不错的书可以精读;轻松Scrum之旅是一本学习Scrum的趣味性书籍(4天翻完),可通过该书了解下Scrum大致流程,需要注意的地方,有大致映像即可。

       其中《敏捷开发》提出了一个学习推广模型ADAPT,深有感触:

               Awareness 意识:当前过程已经不可能实现可接受的结果;

               Desire  渴望:把敏捷、Scrum作为一种手段解决当前问题;

               Ability 能力:有成功实施Scrum的能力;

               Promotiom 推广:通过分享经验来推广Scrum,从而能让他人看到已有的成功;

               Transfer 传递:把实施Scrum的影响传递到整个团队、公司。

       敏捷Scrum完整学习流程(来源于某一篇文章,借鉴下)包括:

               1. 软件项目的复杂性与经验行过程

               2.敏捷宣言与及价值观

               3.Scrum理论基础、历史、框架及流程

               4.Scrum核心 --- 透明性、检视和调整

               5.Scrum角色

               6.Scrum和质量、“Done”的定义

               7. 产品代办事项列表及用户故事

               8. 如何做计划、回顾和反馈

               9. 模拟真实项目实践Scrum