敏捷开发思想及Scrum实践

导语:如今每当直接或间接带一支研发团队我都会给你们作一次敏捷思想和实践的培训(注:软件方向,复杂的硬件开发流程建议使用IPD思想)。做为一个有近10年的开发编码工做经验的资深程序员,做为一个管理者,做为一个还算转型成功的创业者,我一直有种初心程序员

  • 但愿全部研发人员可以勇于而且会表达本身,让更多的人了解本身;编程

  • 但愿全部的研发人员不只仅是机械的写代码,也能洞悉市场、了解用户,让本身的产出可以适配用户和市场的需求,这未尝不是一种成就感;app

  • 但愿全部的研发人员再也不受困于狭窄的职场方向,而是有更多可能转型产品、市场、管理框架

我认为敏捷开发的实践带给了我这些:工做的收益、心里的释放、转型的机遇以及最重要的自信,因此也想分享给你们这些。ide


敏捷开发思想工具


350833a2ed7b19fc70c24b02e1994daa.jpg

  • 全部人均可以从字面上理解敏捷表明着“快”;学习

  • 呆伯特老板的理解:没有什么计划或者文档,直接开始写代码......测试

  • 不少业内人士的理解:迭代 开发。编码

以上理解不能算是错,但都是盲人摸象式的理解。咱们先看看几种常见的开发模式:spa

  • 计划驱动的瀑布式开发;

  • 逐步完善的迭代 开发;

  • 风险驱动的螺旋式开发;

  • 价值驱动的敏捷开发;

除却外包项目常采用的瀑布式开发外,在不少人印象里仿佛剩下的三种开发方式都该是敏捷开发,其实这里有个文字游戏,就是“***的”这个定语,敏捷开发是由用户价值(用户的需求)驱动,这才是区分标准,这种对核心的强调,是在提醒咱们须要最重视的是什么。至于用户价值的意义,不言而喻——若是咱们作出的东西并非用户须要的,那又有什么意义?在敏捷开发的过程当中其实既有螺旋式开发的思惟,也有迭代式开发的流程,甚至有计划式开发的阶段。

敏捷宣言—价值观

5dcd3cdf3058f8ca5d4613ce5cd845ed.jpg

不少“保守力量”反对敏捷开发的缘由就是说敏捷不注重计划或者是文档等等。这里的文字游戏就是“赛过”二字,并非没有,而是取舍侧重的分别。总结以下:

“自组织团队与客户紧密协做,经过高度迭代式、增量式的软件开发过程响应变化,并在每次迭代结束时交付通过编码与测试的有价值的软件。”

                                                                   赛过

“与客户肯定合同后在初期制定并遵循基于活动的完整计划,在重型过程和工具指导下,经过完成大量文档进行知识传递,最后交付需求。”

敏捷开发之 12 条敏捷原则

一、咱们最优先要作的是经过尽早的、持续的交付有价值的软件来使客户满意。

注:客户的指望值管理

二、即便到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优点。

注:欢迎变动需求但不是意味着能够随时变动,在一个计划节点内要保证需求不变动

三、常常性的交付能够工做的软件,交付的间隔能够从几周到几个月,交付的时间间隔越短越好

注:好比scrum,节点周期每每设置为2到4周

四、在整个项目开发期间,业务人员和开发人员必须每天都在一块儿工做

注:研发人员对业务的理解可使产品更具有可用性甚至有卓越的用户体验,业务人员对技术的理解也会让其更专业,还能够加深不一样团队的交融理解

五、围绕被激励起来的来构建项目。给他们提供所须要的环境和支持,而且信任他们可以完成工做。

注:好比针对需求和实现性你们的头脑风暴,鼓励每一个人发言,好比任务采起主动领取,而不是被动分配,倡导民主和开放

六、在团队内部,最具备效果而且富有效率的传递信息的方法,就是面对面的交谈

注:面对面交谈不但效率高,并且有利于清晰透彻的了解对方的意图,直面解决冲突

七、工做的软件是首要进度度量标准。

注:每个节点都要保证软件是可用的,而不是99%的完成但不可用

八、敏捷过程提可持续的开发速度。责任人、开发者和用户应该可以保持一个长期的、恒定的开发速度。

注:scrum节点就如同心跳通常让咱们的计划有规律

九、不断地关注优秀的技能和好的设计会加强敏捷能力。

注:倡导每一个人要有自主学习能力,创建学习型组织

十、简单----使未完成的工做最大化的艺术----是根本的。

注:书籍  大道至简 (豆瓣),  UNIX编程艺术 (豆瓣) 的核心思想

十一、最好的构架、需求和设计出自于自组织的团队

注:《失控》中的去中心化,生物般的进化

十二、每隔必定时间,团队会在如何才能更有效地工做方面进行检讨,而后相应地对本身的行为进行调整

注:“实践——检讨——修正——成长......”的正循环

基于以上这些原则和关键词,抽出几个敏捷开发的核心:“价值”、“客户”、“人”、“团队”。


敏捷实践之Scrum

你们要明白一个区别,敏捷开发是一种思想,下面来说述一下承载这种思想落地的其中一种开发过程Scrum。

808c8c9cee185a311ca1426b8b6dca0f.jpg


从这张开发过程使用的统计图中能够看出Scrum的流行程度。Scrum自己并非方法论,它只是一个框架,它只定义了高层次的管理流程,以下图示

329c8f42edf95bdf20668a992c0271ff.jpg

它并不涉及具体开发方法或者人员的有效沟通技巧等。这些没有涉及的领域须要同其余理论和技能互为补充,以确保项目的成功。

086881c5c6c2e0707694fef4b1d98ece.jpg

9fd1b8d391eb985b4885647642342290.jpg

能够看到Scrum的实施过程是创建在敏捷开发思想12原则基础上的。反过来,对流程的实施也能够加深你们对敏捷原则的理解。

Scrum兼有的价值观

  • 核心价值观:承诺、专一、公开、敬重和勇气

  • 提倡的原则:自我管理、涌现机制、可视性和评估/适应循环

Scrum的要点提炼

  • Backlog——明晰商业价值,场景化用户故事

  • 任务估算——精细,可控,准确

  • 会议——专一,高效,开放

  • 目标——清晰,可达成


敏捷开发的书籍推荐

硝烟中的Scrum和XP 

高效程序员的45个习惯 

敏捷开发的工具推荐

Jira && confluence 项目管理、wiki知识库

Redmine 需求、原型、协做

jenkins 持续集成

相关文章
相关标签/搜索