敏捷(Agile)是什么?有哪些优缺点?敏捷落地需不需工具?

一、敏捷是什么?

什么是敏捷(Agile)?

敏捷是一种通过创造变化和响应变化在不确定和混乱的环境中取得成功的能力。

什么敏捷软件开发?

敏捷软件开发是基于敏捷宣言定义的价值观和原则的一系列方法和实践的总称。自组织、跨职能团队运用适合他们自身环境的实践进行演进得出解决方案。

敏捷的起源

敏捷(Agile)是什么?有哪些优缺点?敏捷落地需不需工具?_第1张图片

  • 20世纪50年代-美国国防部(DOD)和美国航空航天局(NASA)开始采用迭代式的增量方法(IID)。

  • 20世纪60年代-科技的发展,制造业岗位的消减,”知识工人“产生,旧模式不再凑效,生产工具在人的头脑里,旧式的方法被提倡信息共享和劝导的新方法代替。

  • 20世纪60年代-Thomas Gilb提出演化项目管理的概念(EVO方法)。

  • 1970年-Winston Royce发表文章《Managing the development of large systems》阐述瀑布方法的概念,并注解说明:“是危险的的并且可能导致失败”的原因, 因为它将测试放到了最后。

  • 1986年-Tankeuchi和Nonaka发表白皮书《The New New Product Development Game》讨论了Scrum方法。

  • 2001年2月,Martin Fowler,Jim Highsmith等17位著名的软件开发专家齐聚在美国犹他州雪鸟滑雪圣地,举行了一次敏捷方法发起者和实践者的聚会。在这次会议上面,他们正式提出了Agile(敏捷开发)这个概念,并共同签署了《敏捷宣言》。

推荐阅读:敏捷宣言及相关解读

二、敏捷有哪些优缺点?

敏捷是项目管理和软件开发的一种迭代方法,可帮助团队更快地向客户,交付价,减少麻烦。敏捷团队不是把所有事情都押在“大爆炸”的发布上,而是以小的但可消耗的增量交付工作。需求、计划和结果会得到持续评估,因此团队拥有快速响应变化的机制。

1、敏捷的优点:

  • 更快交付价值

敏捷是基于价值驱动交付,项目团队要频繁的且尽快的给客户交付可以使用的产品,并尽早的让让产品投入市场可以尽早的验证其商业模式和商业价值,这是敏捷提倡的核心价值之一。

  • 更低的风险

敏捷提倡优先交付高价值、高风险的需求,然后交付高价值、低风险的需求、再交付低价值、高风险、最后低价值、低风险的需求。这样的好处是把最高风险的需求在项目的初期就开始做,可以最早发现该产品是否可行(通常只要1~4周)。如果因为市场、技术或者其它原因失败了,可以及时停止该项目,降低项目风险。即使这个项目失败了,这个失败的代价相对来说小一些。

  • 拥抱变化

在VUCA 迭代开发的后期也接受变更。因为市场在变化,用户的期望和要求在变化,客户的需求也会随着这些因素的变化而变化,只有及时响应这些变化,并尽快予以实施,才能帮助客户在瞬息万变的市场中保证竞争力和吸引力。而敏捷能够帮助团队在小步快跑的过程中能够快速的响应变化。

  • 更好的质量

敏捷提倡高频率的交付有价值的产品。每天的例会、迭代计划会议、迭代评审会、迭代回顾会议都在对可交付成果质量上进行层层把关,因为在这几个会议中会频繁讨论遇到的问题/解决方案,验收标准,DoD等等。同时,也会邀请项目干系人参加迭代评审会并对可交付成果验收和反馈,这样团队可以及时予以调整,以确保质量。

  • 持续改进

敏捷提倡不断调整和优化,并在每个迭代的迭代回顾会议进行分析、讨论、总结敏捷当前迭代开发过程中需要改进或者要提升的地方,进而在下个迭代中改进、调整和优化。这是整个团队成员不断学习,不断提升自己经验、技能的一个很好的机会。另外,因为敏捷强调客户参与的重要性,对于客户的反馈意见和建议,开发团队也会及时给与相应以及反馈,让双方可以更好的合作,建立更加信任的合作关系。

  • 更高的客户满意度

敏捷提倡尽早和频繁的为客户交付有价值的产品,以确保更高的质量,更高的成功率,为客户尽早带来商业投资回报率的机会。

  • 更高的团队满意度

敏捷提倡仆人式的领导,SM需要给团队工作上的指导、帮助和支持,扫除团队成员工作上遇到的问题和障碍。重视并尊重团队成员的想法和意见,授权团队并引导团队成员自组织和自管理。更重要的是,团队成员可以决定要做什么、怎么做、什么时候做,并自己监控和管理工作进展,对结果负责;团队成员可以一起讨论并确认工作协议,确保考虑并接纳每个人的意见;团队成员可以一起评估故事点;同时,SM要引导团队成员之间相互协作并促进合作。通过这些,团队成员可以更高效的工作,交付的质量也会提高,团队成员的满意度也会大大提高,"A happy employee is a productive employee",不是吗?

  • 更大的灵活性

敏捷基于价值驱动,它的项目范围是可以灵活调整的,这就给项目干系人很多的灵活性来根据市场不断调整需求范围、变更以及优先级等等。另外,敏捷提倡频率与团队和客户沟通交流,并不断根据反馈和意见调整管理方法、需求流程、开发流程以及运维流程等等。还有,验收标准,DoD都可以根据实际情况进行调整。

敏捷(Agile)是什么?有哪些优缺点?敏捷落地需不需工具?_第2张图片

当然敏捷还有很多其它的优点,比如透明、简洁、高效,更早进入开发等等,在这里就不一一介绍了。

2、敏捷的缺点和不足:

尽管敏捷带来了很多改善,但是再次重申它并不是适合所有人和所有情况的。因此,了解敏捷的不足显得特别重要。知道这点后,你心理上是准备好的并且会根据具体情况来做裁剪和优化来规避或减少负面影响。

  • 很难进行准确的资源规划

由于敏捷团队不是一开始就知道产品“最终的样子”,而是在过程中探索用户的需求逐渐知道产品真正的终局状态,这样一来就给前期的规划(成本,时间,资源)带来了很大的挑战(项目越大越复杂这一点变动更加明细)。

  • 很难准确的定义“轻量的“或必要的文档

敏捷倡导的是用工作的软件即文档(核心是代码即文档)。整个项目用于产品开发的文档不是一开始准备好的(甚至都没有RP原型设计),而是在过程中”及时的“ just-in-time准备出来的。因此,我们看到的是非常简单的且常常被放在最后处理的文档(在项目中涉及到移交或问题分析时这一点显得尤其突出)

  • 很难把握整体产品的一致性

增量交付可能有助于更快地将产品推向市场,但这也是敏捷方法论的一大缺点。因为当团队在不同的周期内对各个组件进行开发时,整体的输出往往会变得非常零散,而不是一个内部紧密集合的整体。(当项目对UI和UX有更高的要求时,这个挑战就变得更加明显)。

  • 很难预测有限的终点

敏捷在一开始要求最低限度的规划,这使得交付新的、意想不到的功能时很容易偏离方向。此外,这意味着项目没有限定的终点,因为从来没有一个明确的 "最终的产品"样子。

  • 很难有效地进行度量

由于敏捷是以增量的方式交付的,所以跟踪进度需要你跨周期地看。而 "边走边看 "的特性意味着你不能在项目开始时设置很多KPI。这种长期的游戏使得衡量进度变得相对困难。

三、为什么敏捷在企业中越来越流行?

可以从两个方面简单表述:

因为移动互联网的飞速发展,基本上所有的行业要想在这个时代保持竞争力并赢得市场,都需要和互联网扯上关系,因此诞生了很多的项目,有项目就需要有人来管理,那项目管理离不开方法,那敏捷无疑是当下最好的选择了(“感觉说敏捷就是为互联网而生的并不为过”)。

敏捷方法论更符合当前这个时代的发展需求, 它可以更好、更快、更简单、更有效的应对VUCA时代,并且可以让SM/PM更加从容、淡定、自信来管理项目,并提高项目交付的成功率。

四、为什么国内有些人认为敏捷项目管理不行?

认为不行,自然是因为尝试过,然后失败了,便觉得敏捷项目管理不行。关于为什么会失败,国外资深敏捷教练在深入调查后在《Scrum在亚洲难以实行》一文中总结了四点原因,个人觉得是比较到位的:

  • 不一样的教育方式:人们习惯于遵循体制,与敏捷思想中的“自我组织”、“自我管理”相违背

  • 性格普遍偏内向,很难像西方人一样在大众场合下发言

  • 组织内犯错很大程度是不被允许的,与敏捷思想中“快速试错”理念背道而驰

  • 外包泛滥,所有的行为都倾向于节约成本

除了以上四点原因,其实还有诸如对开发团队的人员素质要求比较高等很多因素。

不可否认,敏捷在国内的落地过程中有种种阻碍,但这并不表示敏捷思想本身存在问题。

因为敏捷软件开发的核心思想之一就是:通过自组织、跨职能团队运用适合他们自身环境的实践进行演进得出解决方案。这也就意味着敏捷并没有固定的规章制度和流程,团队要根据自身环境的实践演进出属于自己的敏捷项目管理方法。

所以,并不是敏捷不行,而是很多人没有真正理解敏捷的思想。

我们也能看到,近些年敏捷项目管理在国内的热度持续攀升,BAT等诸多一线大厂普遍采用,敏捷项目管理所带来的价值和优点被越来越多的团队发现。

敏捷(Agile)是什么?有哪些优缺点?敏捷落地需不需工具?_第3张图片

敏捷从国外传入国内,由于滋生土壤不一样,必然有一个适应完善的过程,逐渐发展出适合国内环境的敏捷项目管理模式。

推荐阅读:如何确定敏捷是否适合你的团队?

五、符合敏捷原理的主要模式有哪些?

自2001年的敏捷宣言提出以来,以极限编程为首的一系列敏捷方法逐渐走入大众视野,在随后的发展中,各类敏捷方法都有所偏向,逐渐形成各自的特点及原则。

1、Scrum

Scrum是当下使用范围最广的一种敏捷方法,这种开发模式也称为“橄榄球”式方法:团队成员都对产品开发的整个过程保留自己的看法,实现自治。产品开发方式由线性方法转向集成方法,这种转变刺激团队内部各层次间的交叉学习、交流以及思维发散。

2、Kanban

Kanban 是把敏捷的过程和产品进行可视化的方法。它相当于是一个信号系统把软件制造过程中的协作、分工、范围、工作、需求、进度、速度、成本、提交物等直观地展现出来。

3、功能驱动开发模式(FDD)

功能驱动开发模式(FDD)主要针对中小型软件开发项目,“是一个以Architecture为中心的,采用短迭代期、目期驱动的开发过程。它首先对整个项目建立起一个整体的模型,然后通过两周一次‘设计功能——实现功能’的迭代完成项目开发。”

4、极限编程

极限编程(XP)以客户的需求变化为重点,同时强调团队合作。XP更为注重开发过程中,团队(包括客户、管理人员、开发人员)不约而同地聚在一起讨论方案,解决难题;

5、水晶方法

水晶方法:水晶方法论是由Alistair Cockburn和Jim Highsmith建立的敏捷方法系列。Alistair Cockburn将水晶方法细化为透明水晶方法论(Crystal Clear)、黄色水晶方法论(Crystal Yellow)、橙色水晶方法论(Crystal Orange)以及红色水晶方法论(Crystal Red)。这几种水晶方法论按照项目重要程度以及参加人员规模进行划分。

6、......

推荐阅读:传统瀑布与敏捷的区别

六、敏捷落地需不要辅助工具软件?如果要又有哪些好用的软件?

实施Scrum 就一定要用专业的Scrum 管理系统吗?答案当然是不一定。

如果团队在25人以下,由于规模小信息差不大,流程简单,很多事情拉个会议,使用一般的白板或者是在线文档就能满足需求,这个时候上工具有时候反而会给团队的效率造成阻碍。

但是当敏捷成为超过百人团队,或进行大型项目的主流开发方式时,这些自己临时组织起来的技术团队,或者是在跨团队之间,以及日常管理多个团队,如仅靠白板、电子表格和Wiki 等将难以满足需求。

如果大家要选择一款工具来学习敏捷,这里比较推荐的是PingCode,容易上手,25人以下免费。

后续将补充不同规模团队如何落地敏捷,敬请期待...

你可能感兴趣的:(敏捷开发)