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

  • 希望所有研发人员能够敢于并且会表达自己,让更多的人了解自己;

  • 希望所有的研发人员不仅仅是机械的写代码,也能洞悉市场、了解用户,让自己的产出能够适配用户和市场的需求,这何尝不是一种成就感;

  • 希望所有的研发人员不再受困于狭窄的职场方向,而是有更多可能转型产品、市场、管理

我认为敏捷开发的实践带给了我这些:工作的收益、内心的释放、转型的机遇以及最重要的自信,所以也想分享给大家这些。


敏捷开发思想

  • 所有人都可以从字面上理解敏捷代表着“快”;

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

  • 很多业内人士的理解:迭代开发。

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

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

  • 逐步完善的迭代开发;

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

  • 价值驱动的敏捷开发;

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

敏捷宣言—价值观

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

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

胜过

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

敏捷开发之 12 条敏捷原则

1、我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。

注:客户的期望值管理

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

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

3、经常性的交付可以工作的软件,交付的间隔可以从几周到几个月,交付的时间间隔越短越好。

注:比如scrum,节点周期往往设置为2到4周

4、在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。

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

5、围绕被激励起来的人个来构建项目。给他们提供所需要的环境和支持,并且信任他们能够完成工作。

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

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

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

7、工作的软件是首要进度度量标准。

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

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

注:scrum节点就如同心跳一般让我们的计划有规律

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

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

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

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

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

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

12、每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整。

注:“实践——反省——修正——成长......”的正循环

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


敏捷实践之Scrum

大家要明白一个区别,敏捷开发是一种思想,下面来讲述一下承载这种思想的其中一种开发过程Scrum。

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

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

可以看到Scrum的实施过程是建立在敏捷开发思想12原则基础上的。反过来,对流程的实施也可以加深大家对敏捷原则的理解。

Scrum兼有的价值观

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

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

Scrum的要点提炼

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

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

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

  • 目标——清晰,可达成


敏捷开发的书籍推荐

《硝烟中的Scrum和XP 》

《高效程序员的45个习惯 》

敏捷开发的工具推荐

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

Redmine 需求、原型、协作

jenkins 持续集成

本文转自永远的朋友博客51CTO博客,原文链接http://blog.51cto.com/yaocoder/1977245如需转载请自行联系原作者

yaocoder

敏捷开发思想及Scrum实践相关推荐

  1. 敏捷开发“松结对编程”实践之六:大型团队篇|后记(大型研发团队,学习型团队,139团队,师徒制度,人员招聘,职业生涯规划)...

    本文是"松结对编程"系列的第六篇.(之一,之二,之三,之四,之五,之六,之七,之八) 松结对编程是小型团队的实践,大约运行在1个师傅+1-3个徒弟的尺度上,当面临更大尺度的时候,就 ...

  2. 在当前项目组中引入敏捷开发思想

    周五下午4:00,延期多次的内部分享终于开始了. 参加人员有TOPK项目组全员,还有OA项目组的光辉和邹兆芩参加交流学习. 本次分享的主题是:敏捷. 分享之前,先把最近讨论过的发版方案回顾了一下.回顾 ...

  3. 敏捷开发“松结对编程”实践之五:代码检查篇(大型研发团队,学习型团队,139团队,师徒制度,代码审查)...

    本文是"松结对编程"系列的第五篇.(之一,之二,之三,之四,之五,之六,之七,之八) 松结对和紧结对不一样,两个人不是总坐在一起随时发现问题解决问题,而是很短时间地坐在一起.其中在 ...

  4. 敏捷开发“松结对编程”实践之三:共同估算篇(大型研发团队,学习型团队,139团队,师徒制度,敏捷设计,估算扑克,扑克牌估算)...

    本文是"松结对编程"系列的第三篇.(之一,之二,之三,之四,之五,之六,之七,之八) 估算是经久不衰的管理话题,大致分为两种流派. 第一种是领导指派,领导说这是10天的活,就必须当 ...

  5. 敏捷开发流程之Scrum:3个角色、5个会议、12原则

    本文主要从Scrum的定义和目的.敏捷宣言.Scrum中的人员角色.Scrum开发流程.敏捷的12原则等几方面帮助大家理解Scrum敏捷开发的全过程. 一.Scrum的定义和目的 Scrum是一个用于 ...

  6. 敏捷开发“松结对编程”实践之三:共同估算篇(大型研发团队,学习型团队,139团队,师徒制度,敏捷设计,估算扑克,扑克牌估算) .

    转载自: http://blog.csdn.net/cheny_com/article/details/6587277 本文是"松结对编程"系列的第三篇.(之一,之二,之三,之四, ...

  7. 敏捷开发“松结对编程”实践之三:共同估算篇(大型研发团队,学习型团队,139团队,师徒制度,敏捷设计,估算扑克,扑克牌估算)

    本文是"松结对编程"系列的第三篇.(之一,之二,之三,之四,之五,之六,之七,之八,此系列之九及之后文章请见栏目总目录.) 估算是经久不衰的管理话题,大致分为两种流派. 第一种是领 ...

  8. 敏捷开发“松结对编程”实践之四:日常工作篇(大型研发团队,学习型团队,139团队,师徒制度,检查点,代码审查,每日立会)...

    本文是"松结对编程"系列的第四篇.(之一,之二,之三,之四,之五,之六,之七,之八) 团队中常见的一种情况计划.估算.设计的时候大家还在一起,但编程的时候就会分开.分开看似是安全的 ...

  9. 敏捷开发“松结对编程”实践之二:计划与设计篇(大型研发团队,学习型团队,139团队,师徒制度,设计评审,预想陈述,共同估算,扑克牌估算)...

    本文是"松结对编程"系列的第二篇.(之一,之二,之三,之四,之五,之六,之七,之八) 新人其实很少偷懒,因为一方面正处于入门学习的高峰期,另一方面工作时间不长需要得到企业和团队的认 ...

最新文章

  1. Unity中制作游戏的快照游戏支持玩家拍快照
  2. ForkJoinPool框架设计与实现
  3. next() 与 nextLine() 区别
  4. 用与非门设计血型配对电路_电路板中与非门集成电路的控制原理
  5. cbrgen和setdest数据流生成
  6. Android CardView卡片布局 标签: 控件
  7. clocks_per_sec 时间不正确_测血糖的正确做法:这4步一定别搞错了
  8. idea java 非法字符_IDEA提示非法字符,你不懂的UTF-8
  9. 程序员,30岁前最好都找大厂,好好做技术
  10. paip.提升性能---首页性能加快解决方案
  11. 关于小米手机网站抢购的一点技术分析
  12. 淘宝秒杀服务器架构猜想
  13. 阿里王坚:区块链与数据价值的交换
  14. Markdown表格文字调整
  15. 【LaTex-错误和异常】\verb ended by end of line.原因是因为闭合边界符没有在\verb命令所属行中出现;\verb命令的正确和错误用法、verbatim环境的用法
  16. 数据统计分析(SPSS)【2】
  17. oracle11g登录企业管理器,Oracle11g RAC常用操作 (维护及管理)
  18. 选来选去,最终决定把家安在这里。现在看来还没有什么问题。
  19. 只能原地动的小鲤鱼/(ㄒoㄒ)/~~
  20. 记录一下近期工作-Qt实现tcp协议接收数据

热门文章

  1. 实战Cacti网络监控(1)——基础安装配置
  2. GlobalSign 荣登网络信任联盟 2013 年网络信任荣誉榜
  3. GPS NMEA-0183协议详解
  4. 浅析java中的死锁_Java学习笔记五十五(死锁问题)
  5. sd卡测速工具_用4张卡聊一聊SD卡规范
  6. SQLmap工具常用命令
  7. 密码统计分析工具pipal
  8. Swift2.0语言教程之类的方法
  9. Kali Linux网络扫描教程(内部资料)
  10. matlab矩阵方块网络着色imshow_matlab中用imshow()显示图像与图像矩阵的数据类型的关系...