总论
本书主要探讨四大主题:
机会、原则、架构和做法。
机会存在于创造新产品和新服务——新的、与众不同的、创造性的事物——的过程中。这些产品是我们在开始时无法完全确定的,但随着时间推移,它们可以通过实验、探索和适应不断演变。
敏捷项目管理原则围绕着两个中心:一是创造易于改变且改变成本较低的适应力强的产品;一是创建能够对项目的外部环境变化迅速作出反应的适应力强的团队。
其架构是一组高级流程,或称为阶段——构想、推测、探索、适应和结束,即使变化不断、现状不确定和不明确,该架构也能够支持探索和试验,并交付可靠的结果。
最后,做法——从开发产品构想框到寻找合适的人选——为项目团队交付结果提供可行的方法。
从根本上讲,敏捷项目管理的中心在于客户、产品和人:为客户提供价值、生产适应力强的产品,以及让富有才能的人相互合作。
机会:新产品开发
敏捷方法针对的产品开发工作包括下列领域的新产品和产品改进:
●
软件产品(如个人计算机应用程序、操作系统、中间件产品、企业资源计划);
●
带嵌入式软件的工业产品(从电子设备到汽车);
●
符合速度、机动性和探索因素标准的、内部开发的信息技术产品。
当我们将试验成本减少到一定程度时,我们产品开发的整个经济学就会发生改变——
从以预测为基础的流程
(
定义、设计然后建造
)
转变为一个以适应为基础的流程
(
构想、探索然后适应
)。
在这个新产品战场上,闪电攻击能力—— 计划充分且打击迅速—— 越来越成为成功的关键……。而机动性或者速度则可以保证闪电攻击能够抓住机会或者捕捉到不警惕的敌人。”(库珀2001)
但只有创新和更快的开发还不够,公司必须交付更好的、在交付时符合客户需要的产品,而这种需要可能与项目启动时开发团队的推测不一致。
要在销售时,而不是计划时,提供最大的客户价值。
问题的关键在于,机会、不确定性和风险存在于拟开发的产品中,而不是在项目管理方法中。我们的项目管理方法需要与产品的特性相适应,从而通过系统地减少不确定性并降低项目开发期间的风险,提高利用机会的可能性。
传奇篮球教练约翰·伍登常常对他的球队说这样一句话:
“要迅速,但不要匆忙”,即是说要正确行事,要学会如何迅速完成,这同样适用于产品开发。去掉那些表面上的、无附加值的活动,创造高质量的产品并迅速生产。敏捷开发方法强调速度、机动性和质量。为了实现这个目标,个人和团队必须有高度的纪律性——
自律而不是被迫遵守纪律。
未来10年及以后的科技进步将继续不可逆转地改变产品开发流程,而流程的变化反过来又会令我们重新思考这些流程的管理。
线性思维方式、常规性流程以及永恒不变的标准做法都与当今变化的产品开发环境格格不入。因而,
随着产品开发流程从预见性的变成适应性的,项目管理必须同时做出改变。这种改变必须适应对机动性、试验和速度的要求,最重要的是,它必须适合企业目标。
机会:可靠的创新
对于一个好的探索流程,如敏捷项目管理,需要达到以下5个关键的企业目标:
1. 持续创新—— 满足当前客户的需要;
2. 产品适应性—— 满足未来客户的需要;
3. 缩短交付进度—— 满足市场窗口,提高投资回报率;
4. 人员和流程的适应性—— 对产品和企业变化做出迅速反应;
5. 可靠的结果—— 支持业务增长和赢利能力。
持续创新
致力于向客户提供价值,以及创造满足如今客户需求的产品,是这个持续创新流程的推动力。
产品适应性
无论一个人、一个团队或者一家公司有多么强的预见能力,未来总是为我们带来预料不到的东西。对于每种产品而言,这种变化的期限在缩短,而唯一的生存之道是努力提高产品的适应能力—— 这是开发流程的一个关键设计标准。事实上,
在敏捷项目中,卓越技术通过两方面评判:一是现在提供客户价值,二是创造未来适应能力强的产品。敏捷技术做法将重点放在降低修改
(
适应
)
成本,将它作为开发流程的组成部分。在敏捷项目中,开发者致力于卓越技术,而项目经理则提供支持。
缩短交付进度
如前所述,产品开发时间在迅速缩短,因而缩短交付进度,满足市场窗口需要仍然是经理和执行赞助商优先考虑的企业目标。
敏捷项目管理的迭代开发、以功能为基础的本质可以通过下列
3
种方式缩短交付进度:突出重点、理顺各环节和技能培养。
首先,在短暂的迭代时间范围内不断关注产品功能及其优先次序,这将使得团队(客户和开发人员)仔细地考虑产品中应包括的功能数量以及这些功能的深度。通过排除那些用处不大的功能,减少总体工作量。其次,敏捷项目管理,同它精干的开发团队一样,将理顺开发流程,将重点集中在增值的活动,而排除那些合规活动。第三,敏捷项目管理将精力放在选择和培养项目所需的个人技能。
人员和流程的适应性
不仅产品需要长期适应市场情况,人员和流程也一样。事实上,
如果我们需要适应性强的产品,我们首先必须建立适应能力强的队伍——
其成员都乐于变革,不是将变革看作是拦路的障碍,而是看作在动态商业环境中成长的不可或缺的重要组成部分。敏捷项目管理的指导原则和架构鼓励学习和适应,成为向客户提供价值的组成部分。
可靠的结果
设计生产流程是为了重复使用,不断地产生同样的结果。好的生产流程是在规定的时间、用标准的成本产生预期的结果(已知的结果),它们是可预测的。
探索流程则不同,因为围绕着要求和新技术,存在着不确定性,所以探索项目不能产生已知的、完全预先规定的结果,但它们可以产生有价值的结果,即满足已知的客户和商业需求。好的探索流程可以不断地、可靠地提供创新。生产流程的评估是将实际的范围、成本和进度与预期值相比,而探索流程的评估则需要采用不同的标准。
探索项目的评估不是用范围、成本和进度,而是基于构想、成本和进度来衡量,即项目是否向客户交付有价值的产品
(
完成构想
)
?项目是否在规定的成本和时间限制内交付产品?我们将在第3章详述可重复性和可靠性之间这些微妙但又极其重要的区别。
关键在于,敏捷项目管理能在成本和进度限制内可靠地向客户交付创新的产品。
原则:核心价值观
敏捷更多的是一种态度而不是一个流程,是一种氛围而不是方法。
“有远见的公司将业务实践和商业策略(这些将不断地改变,以适应变化的世界)与永恒的核心价值和持久的目的(这些是永不改变的)区别开来。”(《基业长青》)
我认为敏捷软件开发在最近几年逐步得到认可并运用的一个原因是,该运动的发起者在《敏捷软件开发宣言》
(Manifesto for Agile Software Development)
中明确地表明了所信仰的东西,说出了我们的核心价值观和持久的目的。团队为何存在、我们要创造什么产品、为谁而创造以及如何共同工作,这些组成了敏捷项目管理的核心原则。如果我们想要创造优秀的产品,我们就需要有优秀的人;如果我们想要吸引并留住优秀的人,我们就需要有优秀的组织,平等的精英这个核心价值观深深扎根于敏捷运动中。
《敏捷软件开发宣言》
(Manifesto for Agile Software Development)
制定了
4
个核心价值观,其核心就是一个词:变革,这些价值观组成了敏捷项目管理的核心价值观:
我们通过实践和帮助他人实践,发掘出更好的[产品]开发方法,通过上述工作,我们形成如下价值观:
☆
人和相互交流胜于流程和工具
☆
致力于[产品]胜于编制综合性文档
☆
与客户协作胜于合同谈判
☆
适应变化胜于遵循计划
也就是说,虽然右边的条目有价值,但我们更看重左边的条目。
“这不应该理解为工具、流程、文档、合同或者计划不重要,
一件或许重要的事情与一件重要的事情之间是有巨大差别的”
(
海史密斯
2000)。工具对于加快开发和减少成本至关重要,合同对于建立开发者和客户之间的关系非常重要,而文档可以帮助交流,但左边的条目是最重要的。没有有技能的人、不致力于产品、不与客户密切交流以及不适应变化,产品交付几乎是不可能实现的。
核心的思想和原则提供了一个处理和过滤信息的机制,引导我们区别重要的和不重要的信息,帮助我们做出产品决策,并评估开发实践。
原则,或者说复杂性理论术语“规则”(rules),对于工具和实践的实施方式会产生影响,实践则是将原则付诸于行动的方式。
没有行动的宏伟原则纯属幻想,相反,具体的实践如果没有指导原则通常会被不恰当地处理。尽管实践的运用在各个项目团队之间可能是不同的,但其原则是不变的。原则就是简单的规则,是复杂的人类适应系统的生成规则。
架构:敏捷的定义
世上没有轻而易举得来的敏捷,敏捷不是银弹,你不能指望用简单的5步就实现它。那么敏捷是什么呢?我将敏捷归纳为以下两句话:
敏捷是促进变革并响应变化以便在动荡的商业环境中创造利润的能力。
敏捷是平衡灵活性和稳定性的能力
(
海史密斯
2002)
。
在如今不确定和动荡的世界里,成功属于那些有能力为竞争对手制造变化、甚至混乱的公司,制造变化能破坏竞争对手
(
及其整个市场系统
)
,适应变化能防止竞争冲击。制造变化需要创新:开发新产品、建立新的销售渠道、缩短产品开发时间、为日益增长的小市场定制产品。此外,你的公司还必须能够迅速适应竞争对手和客户制造的可预见的和不可预见的变化。
一些人错误地认为,敏捷意味着组织结构松散,而组织结构松散或者缺少稳定性会造成混乱。相反,结构过于严密会产生僵化。
复杂性理论告诉我们,创新即创造一些我们不能完全预见的新东西、突发的结果,通常在混乱和秩序、灵活性和稳定性之间的平衡点时最容易出现。科学家认为,突发事件、新奇事物的创造最容易在“混乱的边缘”发生。我们需要保持足够的组织结构,但不要太多,敏捷经理经常会问这样一个问题:“最少应该保持多少组织结构?”组织结构太多会抑制创造性,而结构太少会导致效率低下。
这种要求在混乱边缘保持平衡以鼓励创新是以流程为中心的方法通常失败的原因,它们以创新为代价,过于优化组织结构。
敏捷组织不会迷失于一些灰色的中间地带,他们明白哪些因素需要稳定,哪些因素鼓励探索。例如,在高度变化的产品开发环境中,严格的配置管理可以保持稳定并促进灵活性,就像集中精力于卓越技术可以稳定开发努力一样。本书中描述的概念和做法的目的是帮助项目团队理解灵活性和稳定性之间的平衡,帮助解答如何保持稳定和如何制造变化这一问题。
敏捷意味着在一定的框架或背景下做出响应或者保持灵活。正如我在其他地方所说的那样,“许多传统的软件开发和项目管理方法的问题在于它们将背景定义得非常狭窄,即它们将项目的任务制定得太细,几乎没有任何空间来适应实际发生的变化。”(海史密斯2002)
在混乱边缘保持灵活性和稳定性之间的平衡需要有优秀的改进人员,他们需要具备这样的能力:立即有效处理因追求两个似乎不相干目标所造成的不明确事件和矛盾。支持这些改进人员的组织有如下3个主要特征:
●
欢迎变化的适应性强的文化;
●
最低限度的规则,鼓励自我组织,并结合自律以遵守那些规则;
●
在项目团体内紧密协作和相互交流。
架构——5个阶段:构想、推测、探索、适应和结束
项目管理流程和绩效评估对于基于探索和试验的方法和基于生产和技术规范的方法是不同的。
以生产为导向的项目管理流程和做法强调完整的早期计划和要求说明,以后将尽量不会改动;而基于探索的流程也强调早期计划
(
但仅是名义上的
)
,也强调足够的要求和试验设计,但在随后,通过不断学习,做出重大改动。每个方法各有各的市场,但后者的周期与前者大不相同,敏捷项目管理构架包括5个阶段:构想、推测、探索、适应和结束,而每个阶段都有各自的做法。
这些阶段更近似于科学调查过程,而不是生产管理流程。构想阶段产生一个清晰明白的业务或者产品构想,为后面的阶段划出边界;在推测阶段,团队推测产品的规格,知道随着项目的不断进行,技术要求和客户要求会随着新知识的获得不断演变;然后是探索阶段,它是平行和迭代作业,其中要完成初步说明和设计,标上“不确定”的部分需要比那些较确定的说明或设计作更多的试验;在适应阶段,这些试验的结果需要经过技术、客户和企业的个案审查,适应性强的行动将融入到下一次迭代。
关于敏捷项目管理最常见的一个问题是:“如果分成计划、体系结构和要求3个阶段,情况会怎样呢?”简单地说,这些事情是活动而不是阶段,敏捷方法同传统的序列阶段方法一样,可以很容易地为这些活动提供非常多的时间,但这些活动将分散在多次迭代中。
第二个比较关心的领域是在敏捷开发中如果最初的体系结构工作
(
有关这部分的论述可以参看体系结构、计划或要求部分
)
中缺少了一个关键的部分所带来的重做风险,其实这个风险并不比顺序开发的风险高,只不过顺序开发没有提到而已,有的从最开始的体系结构就是错误的。在顺序开发流程中,早期体系结构决定是否有效要在项目周期的后期才能判断,而到那时,实际的开发已经进行,已经花费了大量的时间和金钱。即使还可能改变体系结构,也将是一项巨大的、昂贵的决定。
在这个通用的敏捷项目管理构架内,每个阶段的成功取决于一系列的实际指导工作的做法。其中一些做法非常简单、直接,比如我们将在第5章讨论的产品构想框和项目记录表;其他做法直接基于敏捷组织的核心价值观,如与客户做焦点访谈和迭代计划;而像工作量自我管理和参与式决策这些做法的主要目的是建立敏捷、适应性强的文化。价值观和指导原则描述了为什么要敏捷项目管理,而做法描述了如何做。
做法:框架
敏捷项目管理和开发的其中一个关键观念是在指导原则的推动下,做法是再生的而不是常规的。常规性做法试图描述项目团队应该做的每一个活动,人们往往因此而迷茫,因为他们面临太多的选择却几乎没有关于这些选择适用性的指南,以至于他们没法从项目中去掉那些无关的做法。
一套再生做法是可以作为一个系统在一起正常运转的最小单位,它并不规定一个团队需要做的每件事,而是确定那些具有非常高价值、适用于几乎每个项目的做法。采用这些做法,项目团队将“生成”其他必要的辅助做法,作为他们裁减和改变该套做法、适应具体需要的一部分。
实践证明,从最小单位的做法开始,然后明智地随着需要而增加其他做法比从全面的常规性做法开始,然后试图精简,最后找到可用的做法这样的方式更加有效(勃姆和特纳2003)。
那么,敏捷项目管理是新东西吗?既是也不是。复杂性理论告诉我们,通过重组现有“积木”,直到出现不同的生物体这种方式,可以改变生物剂。
敏捷项目管理仔细地选择现有积木,即证明对过去项目团队行之有效的做法,并将这些做法与核心价值观、指导原则和以复杂适应系统理论为基础的基本构架联系起来。所有这些积木—— 做法、价值观、原则和概念范围—— 的组合产生了敏捷项目管理。敏捷项目管理继承了丰富的项目管理遗产,但它对于该遗产的选择非常挑剔;敏捷项目管理也吸收了丰富的管理、制造和软件开发理论和实践遗产,融合了最符合机动性和速度的世界观和思想意识。
敏捷项目管理并不适合所有人或所有项目,它不是放之四海而皆准的最佳做法。敏捷项目管理只针对特定类型的问题、特定类型的组织,适于那些有特定文化观点的人和那些有特定世界观的经理。它在创新的文化中发展壮大,对于那些成功取决于速度、机动性和质量的项目(如产品开发),它如鱼得水。敏捷项目管理不限于一小套做法和技巧,它定义了如下的策略能力:创造和适应变化、在灵活性和结构之间保持平衡、挖掘开发团队的创造力和创新以及引导组织度过动荡和不确定的时期。