CMMI还是Agile:为何不拥抱彼此!(五)

第五部分 · Agile的真相

敏捷宣言如下:

“We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value [the following]:

individuals and interactions over processes and tools

working software over comprehensive documentation

customer collaboration over contract negotiation

responding to change over following a plan

That is, while there is value in the items on the right, we value the items on the left more.

“我们一直在实践中探寻更好的软件开发方法,身体力行的同时也帮助他人。由此我们建立了如下价值观: 

  • 个体和互动高于流程和工具

  • 工作的软件高于详尽的文档

  • 客户合作高于合同谈判

  • 响应变化高于遵循计划

也就是说,尽管右项有其价值,我们更重视左项的价值。”

 

敏捷宣言的最后一句经常被忽略(太多的敏捷的支持者和反对者一样出现这样的情况),“右项”(常见于太多的计划驱动,驱动项目合同,标准和审计驱动环境)不仅重视较少,也认为它们有效性也是零价值。因此敏捷宣言经常被敏捷的支持者所引用,作为没有过程、没有工作记录,没有计划的理由。这解释给了他们正当理由,批评者指责敏捷支持者是“散漫的仆人”。然而,这些对于敏捷宣言的解释是不完整的,虚伪的。

在一个真正的论述层次,谁重视“左项”胜过“右项”?记住敏捷宣言试图脱离的范式。在太多的执行中,有计划、流程和标准,过于详细,僵化,只是被人们、项目、产品、客户和技术进行滥用。

与敏捷方法相关的常见做法包括以下内容:

  • 使用迭代和短时间增量开发。

  • 频繁和持续的客户反馈。客户通常嵌入开发人员。事实上,广泛使用隐性知识是敏捷开发和实践的关键。隐性知识的使用是最有利的,在一个高的信任环境,可以直接受益于低交易成本的软件工程活动。使用隐性知识的风险,虽然往往没有明确管理,可以使用以下领域进行缓减:

  • 项目的周期(以及产品的预期生命周期)

  • 代码的自动生成文档

  • 使用的工具,可以重构和持续集成

  • 团队规模小

  • 每个增量潜在价值(例如工作代码)。价值也可以是什么不做。

  • 交付的产品是完全测试的。产品通常是首先通过编写严格的测试,然后通过测试来优化产品。

  • 每个人都拥有质量,包括客户(或客户代表)。开发团队往往是多元化的,其中所有的开发者都是通才,统称为“自己的”产品。客户同样负责确保产品符合他们的期望。当项目的功能、范围、限制性条件都达到一个统一的认识后,项目才可以被推进。错误发现的越早,错误的成本越可以低到可以忽略不计。

  • 随着对产品理解的越来越清晰,需要及时开发详细的需求。工作量不是通过猜测需求和期望来浪费的。随着产品交付的不断推进,产品的需求也越来越详细。

  • 在任何时候,变更时被期望、被拥抱、被欢迎、被接受的。预期的变化驱动设计决策。通过设计,产品和体系结构组件没有被锁定,使得开发人员可以进行连续的权衡,直到所有组件需求可用为止。

  • 使用自我驱动和授权团队。这样的团队任务成熟,训练有素,凝聚力强,高度信任,需要很少的指导,管理,或任务分配。广泛的产品,项目和业务目标与团队共享,以便明智的管理,组织和技术决策,可以由团队来决定什么必须做,由什么时候,由谁,以及什么标准。允许团队应对当前的情况,而不是坚持过度强调,过度详细的计划。因此,计划书和做计划实际上是经常更新,与上级沟通(无论是组织或团队)经常发生,几乎每天都会进行。与管理者或客户的正式状态会议,被替换为与利益里相关者频繁的互动。

  • 定期评估和调整过程。任务成熟的团队拥有调整他们过程的权利,他们基于工作的反馈进行调整。

一般来说,成功的敏捷实现的属性包括以下内容:

  • 由约十人组成的小团队

  • 客户介入

  • “滚动式”或持续规划

  • 合作和跨职能团队

  • 每个成员都可以胜任敏捷的组织

当以下存在时,敏捷是不成功的:

  • 缺乏过程

  • 缺乏原则

  • 没有计划或计划的角色

敏捷宣言有一个附加的总体原则列表。

  • 我们最重要的目标,是通过持续不断地及早交付有价值的软件使客户满意。

  • 欣然面对需求变化,即使在开发后期也一样。善于掌控变化,帮助客户获得竞争优势。

  • 经常地交付可工作的软件,相隔几星期或一两个月,倾向于采取较短的周期。

  • 业务人员和开发人员必须相互合作,项目中的每一天都不例外。

  • 激发个体的斗志,以他们为核心搭建项目。提供他们所需的环境和支持,相信他们能够达成目标。

  • 不论团队内外,传递信息效果最好效率也最高的方式是面对面的交谈。

  • 可工作的软件是进度的首要度量标准。

  • 敏捷过程倡导可持续开发。责任人、开发人员和用户要能够共同维持其步调稳定延续。

  • 对技术精益求精,对设计不断完善,将提高敏捷能力。

  • 以简洁为本,极力减少不必要工作量。

  • 最好的架构、需求和设计出自于自组织的团队。

  • 团队定期地反思如何能提高成效,并依此调整团队的行为。

 

【相关文章】

 

《CMMI还是Agile:为何不拥抱彼此!》第一部分 · 问题思考

《CMMI还是Agile:为何不拥抱彼此!》第二部分 · 两个方法论的起源

《CMMI还是Agile:为何不拥抱彼此!》第三部分 · 影响对CMMI和敏捷观念的因素

《CMMI还是Agile:为何不拥抱彼此!》第四部分 · CMMI的真相

《CMMI还是Agile:为何不拥抱彼此!》第五部分 · Agile的真相

凡奉首页    管理实践    CMMI管理实践    CMMI还是Agile:为何不拥抱彼此!(五)
创建时间:2017-03-16 00:00
收藏