Skip to main content

理解为什么 Salesforce 采用敏捷开发

完成本单元后,您将能够:

  • 说明为什么 Salesforce 采用敏捷开发
  • 列举敏捷开发的一些优势
  • 定义 Scrum
  • 解释“完成的定义”
  • 理解为什么敏捷开发流程对 Salesforce 来说更有效

设想您兴冲冲地前去 Dreamforce,却发现没有主旨演讲、没有新的产品或服务发布、明年没有创新或准备投产的功能。

2006 年 Salesforce 差点也发生这种情况,但是通过实施新的工作流程,革新我们开发和交付产品的方式,我们得以幸免。

从 1999 年 Salesforce 创立的时候开始,我们的技术和产品 (T&P) 团队就像时钟一样准时交付。T&P 团队内部的沟通和协作一直是顺畅、简单的。但是到 2006 年,我们经历了井喷式增长——我们拥有更多客户、更多收入、更多产品,成为了一家更大的公司。跟任何井喷式增长一样,它不是一帆风顺的。 

过去轻而易举的所有事情变得不再那么容易。于是,我们开始遭遇创新乏力。 

大规模的沟通、协作和管理,同时还要遵守发布日期,变得极具挑战性。显然我们需要一种新的方式,一种围绕顺利的产品交付流程构建的方式——一种能够确保不会延迟发布的方式。 

图片显示 2000 年到 2006 年间,主发布版本之间的间隔时间拉长了,但是每个团队交付的功能却减少了。

所以我们做了自己最擅长的事情:我们冒着一定风险,重塑了我们交付解决方案的方式。我们采用了一套敏捷开发原则和实践。

为什么要敏捷?

我们在 Salesforce 做的大部分工作是创新驱动、迭代性的。也就是说,最终结果未必总是提前知晓,到达那里的路径是一个在制品。它永远是一次新的冒险! 

那并不是说 Salesforce 的所有团队都采用敏捷开发流程。有些团队采用瀑布流框架,这是一种灵活性逊色很多的项目管理流程。您选择哪种流程取决于开始工作项目的时候您知道什么,或不知道什么。

我们来快速看一下瀑布流实践。

  • 一切都是提前计划好的。
  • 实施之前详细采集要求。
  • 每一步都必须完成,然后继续下一步。
  • 一开始就注定了结果是什么。

计划 vs. 适应

要确定哪种流程最适合您,可以思考这件事情:假设您在画画,已经决定好了用色、构图、花多少时间来画,以及最终的成品画看起来是什么样的,那么后面就没有多少改动空间了。并不是说这幅画一定不会成为毕加索级别的画作,但是您的流程在设置上无法采纳可能改变成品画(当然是为往好的方向改)的新想法或反馈意见。这种情况下您可以采用瀑布法。

但是当您迭代式作画时,您可以预见会根据早期的反馈、新的想法或者甚至是新的学习(那些色彩的碰撞!)做出改动,而不是按部就班渐进式画画。这是一种更敏捷的方式。 

这是那两种画画流程的可视化展示。 

图片显示一张人物画正在创作过程中。它展示采用瀑布流程和敏捷流程时的不同阶段这幅画看起来是什么样的。

图片基于 Jeff Patton 的作品,经许可使用,jpattonassociates.com

工作的复杂性

现在您知道不同流程适合不同类型工作。那么,如何确定哪种流程最适合您和您的团队呢?  

试图选择工作流流程的时候,问自己这些问题。 

  • 关于手上的这个项目我们了解多少?
  • 这个项目的目标和要求是否清楚?
  • 解决方案是否清楚、明确?
  • 团队和利益相关者对于这些方法论有多少经验?
  • 这个工作有多复杂?

何时选择瀑布法

简单的工作:

  • 工作简单,可预测。
  • 任何人都可以确定如何完成工作。

复杂的工作:

  • 工作可预测,但是要求专业知识。
  • 工作可以自动化。

何时选择敏捷法 

复杂的工作:

  • 工作立足于一贯的反馈、风险和创新。
    • 您想尝试某种东西,看看它效果如何,并且根据新的学习改变路线。
    • 您在开发新的产品、软件和服务,您在做一些以前从未做过的事情。

敏捷式扩展 Salesforce

这一次,Salesforce 的领导层开始在多个团队试点实施敏捷开发实践。遭遇了一些抵触,但是 Salesforce 的高管支持这个理念,然后在 2006 年,Salesforce 技术和产品团队重组成一支敏捷开发团队。

当时是什么情况?我们做了下述事情。 

  1. 采用了一种新的交付思维
  2. 实施了标准化流程
  3. 提倡精益原则(我们将在以后进一步介绍这个!)
  4. 将“已完成工作”的含义标准化

我们的全新敏捷开发思维 

这种敏捷开发流程到底是什么?简单地说:敏捷开发是各种技术实践、流程、框架、原则和价值观的统称,提倡工作流程的灵活性和对产品的迭代修改。  

它是一种迭代式工作方法,团队从项目启动起逐步构建交付物,而不是试图在最后一次性交付成品。敏捷开发有助于团队之间的协调、提高质量、迫使每个人衡量和管理进度,更快为客户交付更多价值。 

它完美契合 Salesforce,因为我们当时正在寻求解决在沟通和扩展方面成长的烦恼。

我们的全新敏捷开发流程:从五万英尺高空俯瞰 

我们选择在 Salesforce 实施的敏捷开发流程之一是 Scrum,并且有一些配套的具体原则定义我们今天如何工作。

什么是 Scrum?  

Scrum 是一种流程,定义了角色、会议和交付物,提供框架来为我们的客户更快交付高品质的价值。

我们为什么采用 Scrum? 

Scrum 为我们提供一个灵活的框架,发现我们的产品什么行得通、什么行不通,并且相应地加以修改。通过 Scrum,对于他们面前的工作,每个人都有主人翁精神和共同的期望。 

在 Salesforce 中 Scrum 流程是什么样的? 

我们采用它的时候,150 个人被分成了小型的跨职能团队,以短期迭代的方式工作(我们称之为短距离冲刺)。目标是稳定地交付并且组织我们的流程。目前,大部分 Salesforce Cloud 团队采用 Scrum 的一些变体形式。 

什么是精益原则?

我们也提倡精益原则。这是七条陈述,描述我们的工作流程和交付流程。它们反映我们的 Ohana 文化,强调人们如何最好地合作以推广我们的成功架构。我们稍后会详细介绍。

“已完成”工作的新定义

既然我们有了一种新的工作方式,团队可以随着他们了解到工作流程和产品的新信息,成功地迭代他们的流程。但是我们怎么知道我们真正完成工作项目了呢?  

很简单。我们在所有技术和产品团队创建了一个标准的完成的定义 (DoD),这样每个人都可以清楚地知道什么时候某件事情已经做好了!

这是需要考虑的一种情形:假设您需要创造一个新的产品功能。您把这项新任务分派给了您的团队,让他们在本月实施。他们做完了,然后做别的去了。快进几个月,已完成的工作项目暴露出了新问题。也许是因为集成没有经过充分测试,客户投诉了。也许安全问题没有解决,或者性能不达标。结论:这项工作实际上并没有完成,至少不足以进入部署阶段。

完成的定义是一套指引,规定工作可以称之为真正完成之前团队必须做的每件事情。制定这个标准对于秉持我们的核心 Salesforce 价值观之一:信任至关重要。

简而言之

我们继续问自己:“我们是否在以正确的方式做正确的事情?”如此我们确保我们做的每一件事都以客户为中心。  

Scrum 流程的严格加上敏捷开发和精益思维,是改进我们的交付、确保更顺利发布的核心。这是关键,因为 Salesforce 每年面向客户有三个主发布版本。 

在 Salesforce 帮助中分享 Trailhead 反馈

我们很想听听您使用 Trailhead 的经验——您现在可以随时从 Salesforce 帮助网站访问新的反馈表单。

了解更多 继续分享反馈