外包敏捷开发项目,第 2 部分: 成功的五大技巧

许多软件开发组织正在他们的项目上利用外包开发资源。随着企业开始采用敏捷方法和精益方法来开发程序,经常出现的问题是,外包适合敏捷环境吗?答案是 – 这是有可能的,但是需要深谋远虑和谨慎的执行来确保成功。在这个由两部分组成的系列文章中,Tony Grout 将分享他的经验,介绍敏捷外包在哪些地方可能是有效的,以及为了达到最佳效果,必须将那些关键要素准备就绪。

Tony Grout, 全球精英团队解决方案销售执行官, IBM

作者照片Tony Grout 是 IBM 中小型精选团队中的成员,帮助 IBM 客户解决极为棘手的软件和系统开发挑战,如规模、复杂性、质量和创新等领域的挑战。Tony 投入大量时间指导高管、中层管理人员和普通从业员等各种层面的 IBM 客户以可衡量的方式逐渐实现更敏捷和精益的工作方法。他还作为一位导师,指导 IBM 内部团队采用敏捷和精益方法,包括促进回顾和开展领导层研讨会。

在加入 IBM 之前,Tony 曾担任多种 IT 角色,包括程序员、架构师、项目计划产品经理,以及软件组织的总经理等。他曾在不同行业中工作,提供的系统从银行、EPOS、ERP 系统、喷气式战斗机和产品开发到药物管理的建模和交易系统。他的工作重点一直是向组织、客户和团队中的每个人提供可衡量的价值。他曾领导面向对象和基于 SOA 的开发的成功实现,在自己的组织和许多其他组织中应用规范敏捷。他曾效力的团队还建立了一个符合 PRINCE2 项目管理方法的迭代开发的实现。Tony 已经发布多次有关外包、软件架构、实现有效的软件流程、大规模敏捷、软件指标、项目管理,以及如何拯救失败项目的多次主题演讲、演示和播客。Tony 的关键专业领域包括:敏捷开发、敏捷外包、敏捷指标、规范敏捷、大规模敏捷和敏捷领导。



2012 年 4 月 18 日

一般而言,在敏捷外包中最有效的组织,是那些在文化和组织方面已经飞跃到敏捷,并且在制度上已经有一些敏捷经验的组织。但是,如果您不具备这样的技能,并需要外包那些关键应用程序(面向客户并且真正运作业务的应用程序),以下技巧可以帮助您获得更大成功。

技巧 1:展示非功能性要求

一开始就在项目中尽可能早地展示一些非功能性要求,并以您将要使用的实际开发环境作为这些要求的根据。例如,我前面介绍的网上警队项目,他们可以制作一个用户故事(即,一组与特定利益相关的需求)说明警务人员如何能够在不到两秒钟内在屏幕上显示凶徒的详细信息。为了做到这一点,他们必须演示基础架构上的所有应用程序如何互相连接,以及它们如何处理安全问题,等等。

顺便说一下,如果您不熟悉 “用户故事” 这个敏捷概念,我先简单介绍一下:用户故事是以其最简单的形式,根据用户使用系统的方式,描述用户如何从系统获取一部分价值。采用警察的例子,假设我要检索特定凶徒的详细信息,以便可以了解他们是否我所调查的这个罪案的疑犯。这本身就是用户故事;软件开发团队的工作是通过正在开发的软件的某些方面,提供这一块功能。

在这个例子中,“价值” 体现为能够从警察系统获得信息并显示在屏幕上。然而,某些故事将比其他用户故事有更多架构性或非功能性的意义。用户故事本身并不一定要专注于纯技术问题或非功能性问题的描述。用户故事可以是功能性或以业务为重点的(即,非功能性,就软件在与用户交互中的实际工作而言,这被称为 “用例”)。重要的是,用户故事与技术风险一直平行存在。

当您与合作伙伴进行外包和谈判时,您必须确保在尽早提供最大业务价值的故事与消除或减少最大技术风险的故事之间取得平衡。


技巧 2:选择一个(或两个)合适的供应商

事实是,开始时您并不知道自己是否选择了合适的外包合作伙伴,除非您 a) 在之前的组织中曾与他们合作,或 b) 有关系非常密切、信得过的人在其他组织中曾与他们合作,或在您的组织中曾与他们合作。

大多数外包系统集成商都有可用的交付实践。您需要首先寻找那些拥有最好的敏捷经验,经常做这项工作的人。您可能无法保证使用最好的资源,但您应该总是首先询问,是否可以使用最好的资源。如果您使用 规范敏捷交付 方法,我认为毫无疑问,这将比传统的外包合同更有效。

如果您的外包合作伙伴准备构建软件,假设,他们每个月都可以为您构建一点,他们应该能够生成自动的构建记录。根据您的托管位置或他们是否能够访问您的环境,他们应该能够将代码发送给您,并部署到您的环境中。他们应该经常或定期这样做,以便您可以查看实际的工作进展,而不是一直等到结束。

使用敏捷的优点是,它让您能够看到,您首选的合作伙伴将根据该协议在其第一次迭代的最后期限前交付。如果您有一个关键项目需要正确且快速地完成,与两个不同的供应商并行配合,可以帮助您快速评估哪一个会交付最好的结果,并在继续之前为您提供更多信心。这使您能够在发现他们都没有交付时更早换一家,或通过自己的力量更快速将他们组织起来,并要求他们重新分配敏捷资源给您的项目,替换那些他们已分配给您却显然无法交付的人员。这将供应商的选择紧密联系到敏捷核心原则之一,即经常交付可用的软件。


技巧 3:根据敏捷交付方法调整合同

确保您手上的合同,允许您通过迭代而不是按整个项目来选择外包供应商;这使您可以在该过程中更早地按需要灵活地换供应商。合同必须允许将付款和交付的例外条件与迭代或迭代次数关联起来,让您可以管理因需求变更而涉及的风险。

确保您的服务水平协议 (SLA) 符合您所采取的敏捷方法。因此,要考虑的事情之一是,该协议的终止条款。如果您设置了质量关卡,那么请使用这些关卡来管理您的关系,特别是在您需要能够撤销已签署合同时,需要这样做。

以下是一个非常好的 敏捷外包合同 示例。


技巧 4:需要工具实现真正的协作、可见性和可追溯性

从纯粹敏捷的角度来看,我们的目标是尽可能快地向业务提供业务价值。但是,我们也需要加强我们自己作为 IT 组织和作为一个企业的知识。毕竟,敏捷来自能够迅速了解情况,然后是能够制定决策。良好的工具使您能够快速找到信息,并根据这些信息制定决策。我不会在此刻谈论商业智能,我会讨论能够找到记录所有元素如何互联的架构资产,即,它们是如何连接在一起,应用服务器中的编码要做什么修改,才使这些东西工作得更好或更快,或者如何链接到第三方系统。

敏捷方法代表了软件开发的一种根本性的协作、全团队模式。该协作方面极其重要,它本质上是有效的沟通能力。正如 Walker Royce 所说,软件开发更像是拍一部电影,而不是建一座桥。这是一个协作的智力运动,并不总是要小心地遵循脚本。它是创造性的,您必须能够与实现这一点的人进行沟通。

工具为什么重要?那么多的时间浪费在差劲的移交上,并且缺乏找到文档并端到端跟踪这些文档的能力,不像这些构件本身具有的那种端到端跟踪的能力。好的工具让我们能够开始标记资产,使您在软件交付项目的过程中可以确定谁拥有什么,谁负责什么。

经常会使用开源社区中的工具,但这些工具并没有很好地针对特定专业领域。例如,一个开源工具可以在小型同站环境中为您提供令人满意的代码管理。然而,一旦您开始将代码块链接到测试用例,您就可能会发现,开源工具难以实现跨组织边界的协作。您希望连接尽可能容易,使团队花费更多的时间解决问题,而不是试图找到特定构件在哪里、已修改的是什么、有关特定资产的注释在哪里。

端到端的可追溯性始终是重要的,当您采用外包时可能甚至更重要。对某个想法能够从业务层面一直跟踪到正在运行的代码,甚至跟踪到在磁盘上某个位置上旋转的数据,基于一系列原因,这是极其重要的。例如,如果合同规定了一个固定的价格,并且有基于工具的项目变更控制,您将获得可追溯性链接,将不断变化的需求映射到相应的代码。

这是在业务层面和合同层面的可追溯性。一旦您开始扩大,必须处理许多问题(如跨组织边界与合同、付款、时间表),可追溯性就变得更加重要。如果您正在构建的资产预计将有一定长度的寿命,则尤其如此。如果房间里有六个人,您正在创建下一个搜索引擎,您可能不会考虑重用。您明年就会扔掉这个算法,然后再做一个更好的。但如果您在一个组织中与 300 个人合作,就会考虑具有 60 年潜在寿命的核心银行系统。

因此,无论它是代码可追溯性的传统要求,还是通过人与系统的更高层次的可追溯性,敏捷实现的重点就是使它尽可能顺利并在适当的层面处理它,而不只是为了实现而实现。这是真正的敏捷性,能够快速制定决策,而可追溯性则为您提供了这种速度。


技巧 5:需要可见性和可追溯性支持信心

从本质上讲,为了成功地外包一个敏捷项目,您必须相信报告、管理信息和关于工作进度的商业智能。我们讨论了可追溯性的重要性,这是项目成功的关键,但您还需要拥有对真实工作情况的可见性。

要考虑的一个场景是汽车制造商。汽车制造商有端到端的供应链这样的整体概念,其中的想法是,您可以看到合作伙伴的工作,准确地了解自己会获得什么结果,以及何时可以获得这个结果。您可以看到他们的流程,了解工作情况,以及准备要做的工作,这样您就可以及时开始这项工作,这是一种精益思维方式。

现在,我们需要将这种方式带进软件交付工厂,使我们可以得到相同水平的管理信息。这样的商业智能告诉我们,我们在哪里能够可靠地预测,我们何时能够将产品或服务交付给业务,我们是否可以提早交付,我们是否有我们需要的质量。并且,从合作伙伴的项目​​交付开始,我们在整个项目中都需要这种水平的可见性。

理想情况下,您应该共享相同的工具,或者他们应该让您访问他们的仪表板,那么您就可以了解工作情况。合作伙伴更新应该由工厂中的工作情况的真实信息驱动,而不是由电子表格,不是电子邮件或匆忙编制的 Word 文档,而是使您能够向下钻取详细信息的可靠记录,如果您希望,您还可以看到每个人正在编制的代码。

要建立对外包合作伙伴的信任和信心,这种透明度和报告是关键。外包合作伙伴建立这种信任的手段是,每四周交付一次,并使您能够获得这些报告背后的详细信息的可见性,所以您可以对实际结果与被报告的状态进行比较。


第 2 部分的结束语

对于几乎没有敏捷经验的组织来说,可以通过做一些重要的事情,帮助自己在关键业务应用程序开发外包中获得更大的成功。从定义非功能性要求到选择合适的供应商,都可以在您的合约和协作中创造灵活性,并在您的工具包中建立可见性和可追溯性,这些工作的关键是要创建一个环境,在该环境中,需要赢得信任并维护该信任,而使用敏捷原则实现可用软件的迭代交付则是最重要的。

参考资料

学习

获得产品和技术

  • 获取免费的 Rational 软件工具包系列,了解最新的 IBM Rational 软件开发工具技术文档和资源。
  • 下载更多免费的 IBM Rational 试用版软件,了解 IBM Rational 软件的最新特性。
  • 获取更多 IBM 试用版软件,并熟练掌握来自 DB2®、Lotus®、Tivoli®,以及 WebSphere® 的开发工具和中间件产品,用这些试用版软件开发您的下一个项目。这些试用版软件可以免费直接从 developerWorks 下载。

讨论

  • 加入 developerWorks 中文社区,developerWorks 社区是一个面向全球 IT 专业人员,可以提供博客、书签、wiki、群组、联系、共享和协作等社区功能的专业社交网络社区。
  • 访问 developerWorks 社区上的 敏捷开发小组,在那里您将有机会与更多的开发人员一起交流敏捷开发最佳实践。
  • 加入 IBM 软件下载与技术交流群组,参与在线交流。

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Rational
ArticleID=810777
ArticleTitle=外包敏捷开发项目,第 2 部分: 成功的五大技巧
publish-date=04182012