换个角度看敏捷3 - 我心中的敏捷

心中的敏捷

“敏捷是什么”,这个问题长期以来一直困扰着我。前段时间提出了敏捷问题解决方式,算是从做法(做事的方法)上对敏捷进行了一个简单的总结。最近一直在清理,这就试图描述一下我心中的敏捷。因为个人一直从事软件开发工作,所以文中的主体部分有一些与软件开发相关的经验,不能做到完全的通用化。

我心中的敏捷

从信仰、理论到实践与方法学,这就是我心目中完整的敏捷知识体系。

敏捷信仰

主要内容

敏捷信仰,也可以被称为敏捷世界观,源于经验主义或逻辑实证主义。其主要内容包括:

  1. 世界是复杂的和不断变化的,人是导致复杂和变化的主要原因

敏捷对此使用的词汇是我们不能预测未来。这看似不可知论,但其实这句话的意思是我们无法准确预测变化的影响。

敏捷软件开发是复杂和不断变化的典型,客户、开发团队都处于不断变化中。参考彼得德鲁克的“知识工人”理论,《第五项修炼》等。

  1. 经验主义,小步前进,持续改善

逻辑实证主义强调经验的获取是建立在实践的基础上。因此在逻辑实证主义看来,经验主义,小步前进,持续改善是应对复杂和变化的最佳方式,也是敏捷的核心。这就是“Kaizen”,持续改善文化的来源。

对比描述

敏捷信仰导致了敏捷与其他方式的不同,为方便理解,现进行对比。

  1. 科学主义或唯科学主义Scientism

科学主义是一种主张以自然科学技术为整个哲学的基础,并确信它能解决一切问题的哲学观点。其主要特点是在尊重科学经验与事实的名义下,推行不可知论和主观经验主义。科学主义的流行导致了事实与价值、科学与人文的分离和对立。

科学主义影响深远,对于计算机是工程学还是科学,现在仍在争论中,但我们在计算机发展的过程中处处均可发现科学主义的身影。科学主义极大的影响了软件开发的发展历程。

当我们陷于优劣争论,忙于证明某种方式比其他方式更加科学的时候,已经落入了科学主义的陷阱。

  1. 非理论派与不可知论

在问题解决过程中,还存在这种纯实践派,他们反对任何形式的理论,主张实践出真知。认为复杂问题是不可预知的,从而没有预知的必要。这是典型的两分法,在实践理论失败后反对一切理论。

  1. 中庸与太极

敏捷看上去与中国传统的中庸和太极是如此的相似。但是敏捷本质上将没有最佳做法的含义,也不代表混沌。

敏捷拥有严肃、完整和科学的做事方式,比我们见过的任何一种方法更加的严格。

  1. 精益思想

精益思想的两大支柱是尊重他人和持续改善,这一点与敏捷惊人的一致,其根源在于他们都源于同样的哲学-逻辑实证主义。

敏捷理论

根据个人的理解,敏捷的理论根源主要源于下述理论和更多的实践证明,因为敏捷本身就是实践的结果。

  1. 复杂系统和混沌理论

敏捷中常见的提法包括系统思考、局部优化等。

传统软件开发中以分工为基础,更强调分解,不同角色应对分解后的简单问题。敏捷软件开发中强调系统,每个参与者都有机会获取对整个系统的认识,同时“可工作的软件”即分解后的集成在敏捷软件开发中是重中之重。

  1. 博弈论\运筹学\排队论

敏捷大量应用了博弈论的研究,典型是将软件开发比喻成一种合作博弈。软件开发涉及的利益相关者众多,是一种典型的博弈应用,如何取得多赢,敏捷软件开发对此进行了深入的思考,并对传统软件开发的许多工作方式提出了质疑。

  1. 认知科学\知识工人理论

敏捷应用了许多对人本身的认知、心智的研究成果。

a)         人类擅长比较而不是量化

敏捷软件开发中大量应用比较和趋势,取消了很多无效和成本过高的量化指标。用价值作为软件交付的结果,用计划扑克实践进行基于比较的估算与计划。“尽快交付更高的价值Deliver higher value faster”成为敏捷的目标。

b)        人类对重复和节奏的偏爱

c)         反馈对人类的重要作用

敏捷价值观

  1. 承诺
  2. 专注
  3. 开放
  4. 尊重
  5. 勇气

敏捷问题解决方式

敏捷问题解决方式是对敏捷工作方法的总结。敏捷不仅仅是信仰,它还提供了具体的、有效的工作方式。

  1. 保持系统性

a)         敏捷问题解决方式并未预测问题解决的最佳答案,而只是提出了一种方法框架方便经验获取。

b)        问题经分解后仍然是问题(单位问题),保持了问题解决的系统性。

c)         问题的检验注重问题本身的完整性和问题解决方法的系统性。

d)        敏捷问题解决方式以产出为基准进行回顾和优化,原因在于以投入为基准进行的优化对于复杂系统(非线性)效果不佳。

  1. 沟通与合作的博弈

a)         敏捷问题解决方式强调问题提出者的参与,增强了问题提出者与问题解决者的沟通合作。

b)        敏捷问题解决方式通过问题分解模式的转换,对单位问题进行转移视角分解成另一类单位问题并解决,实现问题解决者内部的沟通合作。

  1. 强调人的作用

a)         问题的解决与否基于问题提出者的主观判断,而非某种客观依据。

b)        问题的分解基于问题提出者与问题解决者的沟通合作,而非某种预知的科学方式。

c)         以问题的检验为导向,验证工作方法、问题分解方式的有效性。

敏捷实践

敏捷实践是敏捷信仰与敏捷问题解决方式应用于实践的结果。存在大量的敏捷实践,这里就不一一列举。唯一需要强调的是,单独强调某一敏捷实践的作用容易忽视系统性,应该在敏捷信仰、敏捷理论、敏捷价值观和敏捷问题解决方式的指导下,系统的应用敏捷实践。

敏捷方法学

敏捷方法学由一系列敏捷实践组成,但是借用XP中的一句话,这些实践结合在一起形成了一个胜于部分结合的整体。

  1. Scrum
  2. XP

敏捷应用

 

敏捷适用于解决以人为中心的问题,因此可以广泛应用于上述范围。

posted on 2011-02-21 16:51  大卫张  阅读(907)  评论(0编辑  收藏  举报

导航