换个角度看敏捷3 - 我心中的敏捷
?
心中的敏捷“敏捷是什么”,这个问题长期以来一直困扰着我。前段时间提出了敏捷问题解决方式,算是从做法(做事的方法)上对敏捷进行了一个简单的总结。最近一直在清理,这就试图描述一下我心中的敏捷。因为个人一直从事软件开发工作,所以文中的主体部分有一些与软件开发相关的经验,不能做到完全的通用化。
我心中的敏捷从信仰、理论到实践与方法学,这就是我心目中完整的敏捷知识体系。
敏捷信仰主要内容敏捷信仰,也可以被称为敏捷世界观,源于经验主义或逻辑实证主义。其主要内容包括:
敏捷对此使用的词汇是我们不能预测未来。这看似不可知论,但其实这句话的意思是我们无法准确预测变化的影响。
敏捷软件开发是复杂和不断变化的典型,客户、开发团队都处于不断变化中。参考彼得德鲁克的“知识工人”理论,《第五项修炼》等。
逻辑实证主义强调经验的获取是建立在实践的基础上。因此在逻辑实证主义看来,经验主义,小步前进,持续改善是应对复杂和变化的最佳方式,也是敏捷的核心。这就是“Kaizen”,持续改善文化的来源。
对比描述敏捷信仰导致了敏捷与其他方式的不同,为方便理解,现进行对比。
科学主义是一种主张以自然科学技术为整个哲学的基础,并确信它能解决一切问题的哲学观点。其主要特点是在尊重科学经验与事实的名义下,推行不可知论和主观经验主义。科学主义的流行导致了事实与价值、科学与人文的分离和对立。
科学主义影响深远,对于计算机是工程学还是科学,现在仍在争论中,但我们在计算机发展的过程中处处均可发现科学主义的身影。科学主义极大的影响了软件开发的发展历程。
当我们陷于优劣争论,忙于证明某种方式比其他方式更加科学的时候,已经落入了科学主义的陷阱。
在问题解决过程中,还存在这种纯实践派,他们反对任何形式的理论,主张实践出真知。认为复杂问题是不可预知的,从而没有预知的必要。这是典型的两分法,在实践理论失败后反对一切理论。
敏捷看上去与中国传统的中庸和太极是如此的相似。但是敏捷本质上将没有最佳做法的含义,也不代表混沌。
敏捷拥有严肃、完整和科学的做事方式,比我们见过的任何一种方法更加的严格。
精益思想的两大支柱是尊重他人和持续改善,这一点与敏捷惊人的一致,其根源在于他们都源于同样的哲学-逻辑实证主义。
敏捷理论根据个人的理解,敏捷的理论根源主要源于下述理论和更多的实践证明,因为敏捷本身就是实践的结果。
敏捷中常见的提法包括系统思考、局部优化等。
传统软件开发中以分工为基础,更强调分解,不同角色应对分解后的简单问题。敏捷软件开发中强调系统,每个参与者都有机会获取对整个系统的认识,同时“可工作的软件”即分解后的集成在敏捷软件开发中是重中之重。
敏捷大量应用了博弈论的研究,典型是将软件开发比喻成一种合作博弈。软件开发涉及的利益相关者众多,是一种典型的博弈应用,如何取得多赢,敏捷软件开发对此进行了深入的思考,并对传统软件开发的许多工作方式提出了质疑。
敏捷应用了许多对人本身的认知、心智的研究成果。
敏捷软件开发中大量应用比较和趋势,取消了很多无效和成本过高的量化指标。用价值作为软件交付的结果,用计划扑克实践进行基于比较的估算与计划。“尽快交付更高的价值Deliver higher value faster”成为敏捷的目标。
敏捷问题解决方式是对敏捷工作方法的总结。敏捷不仅仅是信仰,它还提供了具体的、有效的工作方式。
敏捷实践是敏捷信仰与敏捷问题解决方式应用于实践的结果。存在大量的敏捷实践,这里就不一一列举。唯一需要强调的是,单独强调某一敏捷实践的作用容易忽视系统性,应该在敏捷信仰、敏捷理论、敏捷价值观和敏捷问题解决方式的指导下,系统的应用敏捷实践。
敏捷方法学敏捷方法学由一系列敏捷实践组成,但是借用XP中的一句话,这些实践结合在一起形成了一个胜于部分结合的整体。
敏捷适用于解决以人为中心的问题,因此可以广泛应用于上述范围。