1.2 敏捷宣言
2001年,17位软件开发领域的领军人物,聚集在美国犹他州的滑雪胜地——雪鸟滑雪场,共同发布敏捷宣言,之后,敏捷开发作为一个全新的软件开发管理模式和价值观在众多软件开发人员及团队中推广。敏捷宣言如图1-2所示。
图1-2 敏捷宣言
在对每条宣言解读之前,先要说明,上述宣言的模式不仅仅是4句话,而是1+4+1的模式。
“1”——“我们正在通过亲身实践以及帮助他人实践,揭示更好的软件开发方法。”这句话说明这些敏捷的宣言是从软件行业产生的一种最佳实践,并非适应于所有的场景。
“4”——4句话宣言。宣言采用“A胜过B”这种格式,不是简单的黑白选择,也不是简单的“用A替代B”,而是A和B都被承认在同一个项目中,但我们需要更多地聚焦在A方面。
“1”——“虽然右项也具有价值,但我们认为左项具有更大的价值。”这句话是容易被忽视的,很多人在学习敏捷或者推进敏捷的时候,会步入极端,比如认为敏捷不需要文档,或者认为敏捷不需要合同,也不需要很多流程,这样的观念是错误的。在考试中,出现类似的说法也是错误的。敏捷的发起人认为,右项的流程、文档、合同、计划依然是需要的,只是提醒大家在项目实施中更多地关注左项的交互、可工作的软件、客户合作、响应变化。对敏捷宣言的正确解读在PMI-ACP考试中尤为重要,关于这一点,在本书最后一章的答题技巧中会有说明。
基于上面的假设,我们来逐条解读上述四句宣言。
1.个体和交互胜过过程和工具
流程和工具是我们项目中需要的,将团队的目的聚焦于个体参与和互动。项目是通过人来完成的,而不是通过工具。困难也是由人来解决的,而不是通过流程。同样,项目由人来执行,范围由人来确定,项目成功也是由人来定义的。个体的参与和交互将有利于项目成功。但是,并不是说流程和工具对于项目的成功没有帮助,这些反而是重要的组织资产。我们中拥有工程背景的人,会自然地倾向于流程和工具带来的逻辑性和预见性。然而,项目最终还是关系到人,所以要想成功,我们需要花费大量的时间去完善一些不可预知的领域。第一条价值观“个体和交互胜过流程和工具”有助于聚焦个体的时间、能量和激情。
2.可以工作的软件胜过面面俱到的文档
软件项目以创造有价值、高质量的软件为首要目标。然而很多人经常会过多地关注一些临时的可交付成果,比如泛泛的文档,却不太关注支持项目最终目标的可工作的软件。没有文档描述的软件在技术支持和维护上一定会出现问题及阻碍,但是只有详尽的文档而没有完成软件对于任何一个组织而言都是没有价值的。所以,文档是需要的,但需要把握其中的度。
20世纪八九十年代面临的主要问题在于庞大的团队、复杂的软件系统、无文本遗留、应用程序没有有效支持,所以,在这样的环境中,文档是必需的。很多软件开发人员都会注重细节和流程,虽然这些可以带来高的收益,但是会使开发人员的关注点远离软件开发项目的初衷——完成可工作的软件。所以,敏捷宣言“可工作的软件胜过详尽的文档”提醒项目成员更多地聚焦于项目的目标——价值。如果过多地关注了文档而牺牲了可以工作的软件,那么文档也是无用的、没有价值的。
3.客户合作胜过合同谈判
本条价值观提醒我们需要做到灵活与包容,而不能死板,类似于“正确地做事情”和“做正确的事情”。我们可以完全按照最初规定来完成产品,一旦客户改变想法或优先级,最好的做法是通过灵活的方法完成新的目标,而不是用最初的规定来对抗。
知识型项目是动态的,特别是软件系统;软件是无形的和难以参考的,每一个软件系统都是独特的。外界的需求变化很快,技术的革新非常迅速,我们应该识别出将要发生变更的事件,与客户共同定义“完成”。这将取决于更加互信的关系和更灵活的合同模式,同时也需要将我们的工作重点从没有附加价值的活动(例如对范围的争论)转移至更富有价值的工作上。
4.响应变化胜过遵循计划
遵循计划是指按计划行事,中间可能需要采取纠正措施,目的是为了使预期的未来绩效与项目计划一致而做的一切事情。响应变化则是适应的过程,通过卓越构想和不断反馈来采取适应措施,适应的目的是对实践而非预定计划的回应,是响应而非纠正。
最初的计划有时候是不完全完善的。如果我们努力将项目按照最初的计划执行,那么会使我们投入更多的精力去响应必然的变更,从而导致投入的精力白白浪费掉了。但是敏捷宣言并没有建议我们为了应对变化而完全放弃计划。我们需要对项目做计划,同时,我们也要明白,最初的项目计划是我们在项目开始时制订的,随着工作的进展,我们需要持续更新计划。所以,敏捷中提倡5层计划,对于这部分内容,我们会在本书的第5章中进行讲解。
“响应变化胜过遵循计划”对于存在很高变更比率的软件项目尤为重要。同样,我们通过相应变化来代替抑制变化以及使用大量的时间和精力来遵循一个大型计划。敏捷项目具有很高的工作列队的可视性,通过待办事项和任务看板来形成计划。敏捷价值观的主旨就是提倡适应性计划,要求全员积极参与。
敏捷宣言指导我们以价值为导向来实施项目。我们同样需要流程、工具、文档以及计划,然而相对于这些,我们的关注点需要更多地聚焦于从事项目的人、正在进行中的产品、合作和灵活性。