什么是敏捷

敏捷,新华字典上的解释为灵敏迅速。如今软件开发领域的敏捷思想译自英文Agile。


那么到底是什么是敏捷(Agile)呢?

 

         “敏捷”(Agile)代表的是一种方法,是在“以人为核心驱动”(Human-Driven)的“复杂系统”(Complex System)背景下,一个具有适应性的“经验性过程控制方法”(Adaptive Empirical Process Control)。知乎上的这个说法初读起来有些云山雾罩,但细想起来,它是我目前为止找到的最贴切的对敏捷的描述。

 

什么是以人为核心?

         软件系统的复杂度,是相对于人的认知能力而言的。这其中“人”将扮演主要的角色,是认知和运转“复杂系统”过程中的核心驱动力。简单来讲,软件开发的过程,是由用户,需求分析人员,设计开发人员,运营管理人员等相关角色共同推进的,软件系统的复杂度也由此而生。

         “敏捷”方法对“人”提出要求,需要思维模式和价值观的支撑,才能真正理解并运用“敏捷”方法。(为什么这么快就上升到价值观的高度,笔者不想赘述,大家可以脑补一下“社会主义核心价值观”)那么什么是敏捷的价值观呢?


敏捷更强调发挥代码编写者的价值,可以更好地挖掘出代码编写者的潜能。

 

什么叫在“复杂系统”(Complex System)背景下?

       人对于世界的认知和理解始终朝着减少未知“Unknown”和不确定性“Uncertainty”两个方向前进,对于未知需要逐步理解(Understandable),而对于不确定性,通常是提前预测,通过反馈,来获得判断(Predictable)。因此可理解和可预测也成了人认知世界的两个纬度。但无论科学技术如何进步,依然还存在非常多的不可理解或不可预测的事物。特别是每个人的认知能力也存在差异,相同的事物对某些具有足够认知能力的人来说是可理解、可预测的,但如果认知能力不足,便会出现既无法理解、也无法预测这样的“混乱系统”(Chaotic)。

         而复杂系统(Complex)也是同样,当相对于人的认知而言,对可理解性和可预测性均提出一定高度的要求,便呈现出复杂系统的特征。如同敏捷开发所产生时的背景,市场瞬息万变,需求变得不可预测;技术日新月异,对某些需求的技术可实现性也变得越来越难以理解。但这种不可理解性和不可预测性并没有远远超出人的认知潜能的范围,没有到达彻底混乱的地步;同时,通过过程中不断地反馈和学习,也可以逐渐消除未知和不确定。因此,对于这样的复杂系统,运用敏捷方法,将可以更好地获得对系统的理解和预测。

 

什么是经验性过程控制方法?

“敏捷”的第三个特征便是:“敏捷”实际上是一种经验性的过程控制方法。作为一种方法,通常都具有一定的目的性,而为了达成目的,势必要实施一定的过程控制,才能提升达成目标的几率。而在“复杂系统”的背景之下,“瀑布式开发”所代表的预定义过程控制(Predefined Process Control)已不再适合,而以人为核心驱动的经验性过程控制(Empirical Process Control)将具有更高的适应性和灵活性,同时也能充分发挥“人”的潜能和价值。

人类在进化过程以及认知、改造世界的过程中始终都面临着各种“未知”(Unknown)和“不确定”(Uncertainty),所以人类的历史天然就是一个“敏捷”的过程。

那么“敏捷”这样一个经验性过程控制方法需要遵循哪些原则?


Rule1: 适应性原则。Keep Relevant-时刻保持与背景“复杂系统”的关联,适应“复杂系统”的变化。


Rule2: 灵活性原则。Always be optional-拥有多重选项,根据环境的变化进行灵活选择。


Rule3: 利用系统的“原力”——Leverage the Gravity。人的力量毕竟微弱,需要充分挖掘“复杂系统”自有的力量并加以利用。


Rule4: 模式识别——Patterns Recognition。识别“复杂系统”中所呈现出的“模式”,基于“模式”,逐步理解“复杂系统”。


Rule5: “自下而上”原则(Bottom-up)。由于“复杂系统”的未知性和不确定性,在缺乏必要信息的情况下,无法通过“自上而下”(Top-down)的方式来理解系统。因此,从基本的“模式”出发,并在过程中学习和认知,不断地向上发展更高层的“模式”,才能最终实现对“复杂系统”的全面认知。

 

参考文章:

https://zhuanlan.zhihu.com/p/20885290 (主要内容和想法来自于这篇文章,原文作者 Waterwalker

http://www.agilenutshell.com/

https://baike.baidu.com/item/%E6%95%8F%E6%8D%B7%E5%BC%80%E5%8F%91/5618867?fr=aladdin


猜你喜欢

转载自blog.csdn.net/marvinchen003/article/details/78448547