“你将如何使用敏捷交付模型管理一个战略项目?”Elle问道,声音中有明显的愤怒,“可以工作的软件在哪儿?你如何及时展示业务价值?”
这个对话的背景是MotoClaim & Co.正采用一种面向服务的企业理念开展一项重大变革举措。Elle是整个项目的交付经理,对敏捷并不陌生。我是该计划的流程咨询架构师。我们都刚刚从一个高层管理会议上出来。会上决定,该计划的第一阶段将包括制定一个战略来执行整个变革以及开发所需的基础架构。在这个会议上,虽然包括Elle在内的许多高层管理人员都持怀疑态度,但我还是力争使用敏捷来执行第一阶段。
Elle的问题绝不是MotoClaim & Co.特有的。在我上个十年的敏捷咨询生涯中,我多次同我的客户涉众产生过这种争论,即使它在敏捷交付方面已相当成熟。当涉及 非软件 项目时,任何人都更愿意采用迭代方法。所谓非软件项目,我是指那些不以将可以工作的软件交付生产为目的的IT项目,比如战略定义项目、架构项目、内部评估项目、咨询项目。虽然对于组织而言,这些项目包含着丰富的内在价值,但通常,它们对于终端用户而言是不可见的,而且不会影响他们的正常业务。
那么,在非软件项目中使用敏捷交付有什么问题?首先,如果我们看下现有的敏捷著作,其中的大部分,包括敏捷原则在内,都以尽早和频繁地交付“可以工作的软件”为中心——毫无疑问,可以工作的软件与交付生产软件的项目有关。由于非软件项目不交付可以工作的软件,所以很难觉察它们与 通过尽早和持续地交付有价值的“软件”来满足客户 、 频繁地交付“可以工作的软件” 以及 将“可以工作的软件”作为衡量进度的主要指标 等敏捷核心原则的契合度。另一个关键的原因是多重所有权,战略项目尤其如此,它们通常会有许多存在利益冲突的知名涉众。没有确定的行业指标可以度量非软件项目是第三个方面的原因。我见过许多架构项目中途停工,因为业务涉众觉得项目结果与花费不匹配。因此也就不奇怪,组织为什么经常会发现很难证明敏捷交付适合于非软件项目。
你可能会问,“那么,这有什么意义,为什么非要在这些非软件项目中使用敏捷呢?通常,这些项目都是短期的,只会持续三个月到一年。我们为什么不能简单地遵循瀑布方法或迭代方法?”要回答这个问题,我们需要从头说说敏捷实施的基本知识。
我们都知道,不是所有的项目都需要敏捷交付。那么,项目是否采用敏捷有什么判断标准呢?可以使用Ogunnaike和Ray[1]提供的图解,我们说,任何落在“简单区域(simple zone)”之外的项目都必须使用敏捷。而简单区域之内的项目使用敏捷几乎没有什么价值。为了确定一个项目是否简单,我们通常对项目进行“敏捷执行能力评估(Agile Readiness Assessments,缩写为ARA)”,通过审查各个参数弄清楚以下四个关键因素:
不用说,大部分战略、架构和咨询项目在上述四点都存在很大的风险,因此几乎总是需要高可见性、及早缓解风险、适应不断的变化以及快速阐述业务价值。这时,使用敏捷既不可否认也毋庸置疑。事实上,我认为,与其它项目相比,敏捷方法更适合非软件项目。
下一个明显的问题是“我们如何做到这一点?”在我看来,只要组织停止使用“ 规范的敏捷(prescriptive Agile) ”。虽然敏捷的根本是自适应,而非规范性,但规范的敏捷是现如今存在于敏捷交付领域的主要矛盾修饰法之一。在一篇 见解深刻的文章 中,Abraham Kiggundu写道:
我已经开始相信,许多敏捷实施之所以失败主要是因为参与者忘了,敏捷宣言只是陈述了一种乌托邦式的理想追求。由此衍生出的任何规范做法,如Scrum和看板,都只是在实践中迈向这个理想的尝试,然而,由于敏捷原则的性质,这些做法没有哪个真正地实现了这个理想。
Arijit Sarbagna的文章[2]也强调了这一概念:“如果你实践敏捷,那么你一定遇到过那个名为‘规范的Scrum’的不老恶魔。”
一个著名的演员曾在一部流行的印度电影中说过这样一句话,“宗教无处不在,无法消除。如果你试图消除一种宗教,那么你本身就会‘成为’宗教。”千真万确。多年以来,软件行业一直像信仰宗教那样实践着现在已经过时的瀑布方法,直到敏捷方法向他们展示了自组织团队和更快的交付能力。虽然敏捷方法成功地消除了进展缓慢的瀑布方法,但现在,许多组织已经将敏捷作为他们的宗教。这个在宣言中宣称“人胜过过程”的过程本身现在已经成为一个标准化的、规范的过程。
“敏捷(to be Agile)的工作”,这是使用敏捷成功交付项目所需要的唯一规范的做法,非软件项目也不例外。
为了使用敏捷成功地执行一个非软件项目,我在自己的工作中定义了如下这个“5点议程(five-point agenda)”。虽然这可能不是一个解决方案,但它可帮助我为涉众设定清晰的期望,理智地执行项目以及挖掘敏捷的好处。虽然这个议程可能看上去与敏捷软件交付项目所遵循的原则类似,但当涉及非软件项目时,它们的用途却大不相同:
一旦议程确定,整个项目就很容易使用Scrum或其它过程运行在敏捷模型中。你会惊讶地看到,像结对编程、测试驱动开发和重构,这些没有可以工作的软件就看似无关的标准敏捷技术可以完美地运用到非软件项目中。我已经在许多不同类型的非软件项目中成功地使用了这个议程,包括战略制定、企业架构开发、业务流程优化、流程定义和制度化、指标开发。下面,我将介绍其中的两个案例。
为了将现有的遗留平台现代化并迁移到面向服务的模式,组织着手进行一项大规模的变革计划。由于组织中现有的所有架构元素均是特定于遗留平台的,所以,为了实现面向服务的交付,I.S.领导人希望在初始阶段识别、获取并建立一个基础架构。按照资深架构师的估计,创造服务开发所需的最基本的架构元素需要一年的时间。作为一项高风险的任务,I.S.领导人希望在敏捷模型中运行该项目,以便尽早消除风险,建立所有层面的、完整的可见性。
作为描绘项目愿景的一部分,我与关键涉众一起确定了5点议程:
在确定了5点议程后,我们使用Scrum和若干XP、DSDM做法成功地完成了项目,并且用时低于预期。现如今,该组织已经成为一个著名的、面向服务的解决方案提供商,而且已经接受了“开放组织服务集成成熟度模型(Open Group Service Integration Maturity Model,缩写为OSIMM)”[4]的五级评估。
在对价值链进行了多次不成功的升级后,该组织启动了一项重要的计划,彻底重建其端到端的业务流程。该项目的第一阶段主要包含业务架构工作,设计目标流程。这是一个高风险的项目,因为变革几乎会影响到组织的每位成员以及终端客户。作为一名流程教练,我被要求协助团队使用敏捷模型执行这一项目。
再一次,我与关键涉众一起确定了5点议程:
正如上述两个案例所阐述的那样,敏捷的使用可以跨越学科边界,而且非常有效。此外,对于非软件项目,由于它们固有的风险和复杂性,敏捷交付是必要的。模型可能会变,但敏捷的概念不会变。我们需要遵循整个敏捷宣言,而不是遵循规范的敏捷方法:
请记住——“敏捷的工作,自适应”。
[1] Process Dynamics, Modeling, and Control ,英国牛津大学,1992。
[2] 规范的Scrum——这是世界末日或危情时刻的需要吗? ,发表于Scrum联盟社区。
[3]Mitchell, R. K., B. R. Agle和D.J. Wood. (1997),“ Toward a Theory of Stakeholder Identification and Salience: Defining the Principle of Who and What really Counts .”,发表于 Academy of Management Review 22(4): 853 - 888。
[4] 开放组织服务集成成熟度模型
Dipanjan Munshi 是Tata Consultancy Services (TCS)的一名资深流程和质量顾问,有超过17年的IT经验,而且涉及多个领域,包括保险、金融服务、制造、嵌入式系统、交通和酒店业。他拥有印度奥里萨邦乌特卡尔大学计算机应用专业硕士学位。
查看英文原文: Implementing Agile Delivery for Non-Software IT Projects