巴别之塔

[翻译] Snowflake 火箭船背后的火箭

原文:The Rocket Behind Snowflake’s Rocketship

作者:Greg Czajkowski

译者按:Snowflake 是第一家提供云原生数仓服务的公司。本文中,Snowflake 工程部的高级副总裁 Greg Czajkowski 介绍了他们提供创新产品并保证高质量和快速交付的秘诀。

我们没有一天不被候选人、客户和其他感兴趣的人问及我们如何运作 Snowflake 软件工程部门。我经常听到:「Snowflake 一直在提供真正创新、高质量的产品,而且交付的速度还不断加快。这其中一定有什么秘密」。的确,我们有一个独特的工程团队,并继续雇用世界级的工程师。他们是我们产品背后的驱动力。

吸引和雇用优秀人才,并致力于解决令人惊叹的雄心勃勃的技术问题,是我们实现 Snowflake 的方式。这三个原则指导我们如何使我们的工程团队、Snowflake,以及随之而来的我们的客户取得成功。

  1. 使我们的任务与整个工程和其他 Snowflake 团队保持一致
  2. 将我们的精力集中在最有效的方式上
  3. 激发工程中的每个人的主动性

自 Snowflake 成立以来,我们的创始人和领导人一直倡导这些原则。同样重要的是,我们招聘的人都拥护这些原则,这对我们有很大的帮助。从一开始就培养和加强这些原则,当然比事后把它们强加给一个组织,或改良一个以前运作良好但已经恶化的组织要容易。

这篇文章是对我们运作方式的总结,以及在应用该方法时的经验。

在我们的使命上保持一致

我们的使命是用 Snowflake 的数据云调动世界的数据。我们可以帮助任何组织通过数据实现更好的业务成果,提供更好的产品和服务。在 Snowflake 相当多的工作是确保所有团队都完全支持这一目标及其影响,包括工程、产品管理以及其他有助于产品开发的团队。这种一致性得到了很大的回报,因为它提供了必要的清晰度,以迅速作出决定,包括影响所有 Snowflake 的决定,而不仅仅是一个团队。

专注于质量

我们的使命的一个含义是,没有内部 DevOps 团队的公司可以充分利用 Snowflake 的优势,因为我们承担并努力消除了运维所需要的努力和摩擦。同样地,Snowflake 开发适当的机制,以提供良好的性能,而不需要由我们的客户进行调整。我们经常听到我们的客户说,我们最看重的特点之一是「它就是好用」。此外,我们通过创建一个高度集成的产品来消除大量的集成工作,而不是一些需要集成的狭窄范围的产品、适应独立的学习曲线、处理不同的定价模式等等。换句话说:高质量是实现我们使命的核心。偏离这个产品设计的初心,可以在战术上使我们的生活更容易,因为有时我们可以通过提供一个配置选项来解决一个特定的问题,或者一个特定的客户可以从上一代的数据仓库中得到一个他们熟悉的调整参数。然而,这种步骤的总效果会把一个令人愉快的产品变成另一种复杂的技术,需要客户不断地关注,这就违背了我们的使命。

在所有职能部门之间保持一致

整个 Snowflake 在产品设计方面的完全一致,是我们成功的关键。每个人的支持,包括我们的销售组织,抵制诱惑,在易用性上「做一点」妥协, 有助于集中精力开发技术和启发式方法,进一步提高 Snowflake 的可用性。与 IT 部门的密切合作,使我们能完成复杂的举措,比如在 Snowflake 上运行 Snowflake 的业务。与营销部门保持一致,可以共同关注「自助服务」的技术方面。在我们的使命上的一致,使客户支持很容易要求工程部门提供诊断工具(并获得该工具)。虽然领导者的协调是至关重要的,但关键是团队内部和团队之间的所有级别都要同样地协调。

这是质量速度

我们的使命意味着以高速度提供高质量的服务。「高质量」和「高交付速度」似乎是矛盾的,直到人们意识到,质量是我们交付新功能和产品创新的速度的组成部分。糟糕的质量会导致频繁和昂贵的事故。没有对质量的适当关注,速度只是一种幻觉,在下一次回滚时就会结束。同样,从一开始,跨职能部门就对质量的价值保持一致,使我们的工程团队保持正确的注意力。总的来说,发展「质量和速度」的思维方式,对我们建立一个伟大的产品和避免「质量与速度」的陷阱有很大的帮助,这常常困扰着产品开发团队。

了解你的产品

我一直在谈论的一致性,真正开始于 Snowflake 的 2900 多名员工(截至 2021 年 4 月 30 日)一起倡导我们公司的价值观。我们所有的价值观都很重要。但在这个列表的顶部是「把客户放在第一位」。对我们工程人员来说,除其他意义外,这意味着我们应该对客户如何使用我们的产品有坚实的第一手经验。这也意味着我们应该有详细的产品使用遥测数据,以便将投资引向最有价值的改进。我们坚信并拥有内部证据来证实我们对客户所说的话。最好地利用数据的组织实现更好的决策和结果。

在 Snowflake,所有这些都是由 Snowhouse 实现的 — 这是一个我们内部使用的 Snowflake 账户,其功能与我们客户使用的相同。在 Snowhouse 包含的大量数据中,也包括了用户使用情况的遥测数据。我们每个人都使用 Snowhouse,从分析查询性能到为季度总结准备数据。其结果是工程部对我们所建立的实际产品的深度熟悉,这在我们的行业中是非常强大和独特的。它使我们能够更快地改进我们的产品,将第一手的经验输入设计中。

最有成效地使用精力

质疑流程和现状

在任务上的一致性是快速交付优质产品的必要条件。但这并不是全部。精力需要被节约和应用,以提供尽可能大的影响。首先,我们在引进新流程时是高度挑剔的。我们仔细权衡成本和效益,并邀请那些将受到新流程影响的人对其进行定义。同样,每个流程都可以被重新定义,甚至在它不起作用时被删除。我们学习和迭代。

我们非常鼓励工程师指出问题,审视现有流程,并提出改进建议。不过,这些辩论不可能是无休止的。在提出流程改进建议时,「不同意并承诺」是一个有用的方法,可以避免追求收益递减。更广泛地说,「不同意并承诺」的格言为我们提供了很好的服务,例如防止设计决策陷入僵局。它不需要经常被引用,但当它被引用时,它是一个很好理解的概念。我们经常谈及不满者 — 一个也许甚至对现状过于挑剔的人。这个词是从我们的 CEO 那里借来的,指的是一种富有成效的行为,它不会让我们陷入自满,而是继续完善我们对 A+ 状态的理解,并越来越接近它。我们是不满者的粉丝!

与产品管理部门合作

在全速前进的同时,转动你的车轮并不能缩小你与既定目标之间的距离。为了避免混淆努力和结果,与我们的产品管理团队建立密切的伙伴关系是至关重要的。我们强调伙伴关系,因为我们经常听到一些公司的「工程师文化」。在 Snowflake,我们相信专家应该管理他们的专业领域。

当然,我们欢迎任何专业知识和意见,有时我们的产品审查与工程审查没有区别。(这很好!)但最终,产品经理是工程的真正合作伙伴,反之亦然。

让我们考虑一下内部自动化。它不仅更有效率,而且更不容易出错。我在其他公司的同事经常发现投资于内部自动化,就像投资于稳定性和质量一样,由于交付新产品功能的压力,很难。Snowflake 是不同的,产品管理部门对非面向客户的举措的价值的理解和支持是无价的。一般来说,能够采取更长远的观点,用季度而不是周来衡量效益,是工程和产品管理合作的结果,它具有强大的跨职能的一致性。

创新但不要「做创新」

我们在工程和产品管理之间的密切伙伴关系的最大好处之一是,我们不会为了创新而「做创新」。相反,我们确定哪些问题需要解决,然后从第一原则出发,了解技术现状,但不受制于主流思想,也不在战术上妥协。

产品管理部门的支持在这里是至关重要的。这种方法,虽然从长远来看会产生技术上的突破,对客户产生巨大的积极影响,但需要时间来设计和实施。它也有助于 Snowflake 成为世界上最具创新的公司之一。当我们从设计讨论转移到实施时,我们已经围绕未来的影响建立了信心。因此,对我们来说,放弃一个项目是一件非常罕见的事情。

在 Snowflake,「完成并完成」是一个经常使用的术语。明确和全面地定义完成标准,确保功能的推出具有影响力,没有松散的结局。知道什么是「完成和完成」,可以避免浪费精力在摇摆不定的移动到下一个大事情和不得不完成第一次没有做好的事情。「完成它」和「拥有它」是我们公司的价值观,并极大地协助了 Snowflake 工程团队的「完成并完成」方法。

质量高于最后期限

对承诺的管理也很重要。如果有一个很好的理由,并且在出现失误的那一刻就被告知,错过承诺是可以的。一旦有可能出现纰漏,不告诉任何人就错过目标是不行的。这种方法在复杂的产品发布中特别适用于我们,在这种情况下,依赖性跨越了几个团队。

我们的季度计划流程区分了两种类型的目标:必须交付和尽力而为。如果我们需要对一个新的机会做出快速反应,后一类目标会受到影响,但不会影响前一类目标。有了这两层目标,就能提高我们的敏捷性。同样地,如果质量会因为专注于一个最后期限而受到影响,我们就重新定义最后期限。一般来说,这个简单的声明 — 质量高于最后期限 — 说起来容易,应用起来很难。在 Snowflake,跨职能部门的协调有助于我们实践它。

小团队和小自我

许多工程师报告说,他们觉得在小团队中最有成效。虽然我们不是一个互不相干的小团队的集合,但我们鼓励经理们以这样的方式来组织工作,让工程师感觉他们是在一个(大约)四人的团队中工作。在硅谷最初的办公室以外的时区开设工程办公室,使我们更加重视「小团队」的方法,重点是尽量减少洲际会议的需要,促进异步沟通(例如,文件胜过会议)。

巨大的自负是有代价的。Snowflake 的文化的一部分是不要太自我。我们的面试过程包括一个行为的部分。我们评估,例如,某人是否是一个高于平均水平的团队成员,并且不是充满自负。有意组建一个谦逊的工程团队是很重要的,原因有几个。那些没有职位权力的人可以采取主动、开放、被领导倾听,并确信最好的想法会胜出,无论是谁提出的。

谦虚使人有一种成长的心态:如果我们在某些方面做错了,我们会学习并向前迈进。它有助于避免傲慢,这在工程组织中并不少见。工作场所傲慢的症状可能包括贬低和看不起竞争对手,高估自己的能力,或者认为客户是错误的,自己的技术是正确的。这些行为和信念通常会导致长期的表现远非最佳。相反,我们试图以高度谦逊的态度来运作,尊重大小竞争。无论竞争者是谁,我们通过公平但激烈的竞争来表示尊重,并从我们的错误和成功中学习。

发挥每个人的主动性

推动决策落地

为了充分实现与我们的使命和精力的有效利用相一致的潜力,我们需要工程部的每一个成员都感到有能力采取主动。这可以是小事,如减少自己团队中的不必要会议,也可以是更大的事,如提议收购一家公司。我们鼓励这样的心态:如果某件事情可以改进,我们中的任何一个人都可以去改进它。

关键是要把决策推到组织中去。一个流行的机制是组建小型工作小组来实现变革。最近的例子包括定义最佳代码审查实践,简化招聘流程,以及改善内部开发人员的经验。每一个新的成功的工作小组,除了解决一个特定的主题,还加深了我们拥有自己命运的感觉。这种乐观和自信的感觉对于建立一个世界级的工程团队至关重要。相反,太多组织的表现远远低于他们的潜力,因为他们变得宿命或冷漠,抱有这样的想法。「一切都不会改变,为什么要尝试?」

消除等级制度的障碍

让每个人都能采取主动,是一个健康运作、快速发展的组织的重要基础。但是,等级制度的障碍会妨碍我们的工作。我们已经采取了一些措施来消除这些障碍。

我们想强调的是,你不是一定要有一定的职位或权力,才能影响 Snowflake 的方向或领导某项工作。

一个很好的授权和主动性的例子是,由工程经理,产品经理,技术项目经理和用户体验设计师组成的小组如何一起为他们的领域建立一个计划。这种水平的自主权对团队来说是理想的,也是激励的。当然,这些团队需要考虑把客户放在第一位,并与各种业务和技术要求保持一致。一些评论帮助我们在自上而下的广泛指令和释放自下而上的能量和创造力之间实现这种平衡和一致。

建立信任,而不是指责

一个相关的话题是组织内的信任。这不是一夜之间建立起来的东西。相反,信任是从无数的遭遇、项目和情况,以及领导人每天的运作方式中成长起来的。在 Snowflake,在决策和沟通技术和非技术建议方面有高度的透明度,所以每个人都可以评论和影响他们,并专注于学习。例如,我们的绩效管理过程的详细说明可供所有人参考。所有工程、产品和其他审查的幻灯片和笔记每周都会发送给所有工程人员。而且,正如已经提到的,我们每两周举行一次全体员工会议,其中有一个问答环节。这些活动,以及更多的活动,有助于推动一致性,并有助于避免因缺乏信息而导致的能量耗散。

「责备」这个词有明显的负面含义,因为它阻碍了从错误中学习,并将能量转移到非生产性行为上。在 Snowflake,无责的事后分析是一个活动的例子,在这个活动中,全部注意力都集中在对事实的理解上,而对谁做了或没做什么事的关注是零。我们定期举行这种活动,对建立信任有很大的积极影响。

主动出击,直接出击

在 Snowflake 经常听到的一个短语是「直接了当」。这个想法是直接与拥有解决方案一部分的人讨论一个特定的事项,而不是与经理或不同的代理人讨论。直截了当可能是困难的,但这是一个成熟的组织所需要的东西之一。在极少数情况下,当直接行动不起作用时,我们鼓励所有工程人员在进展停滞不前或需要澄清所有权时进行升级。到现在,「升级」这个词已经失去了负面的涵义。

主动性是与「不是我的工作」的态度截然相反的。我们强烈鼓励以下行为。如果有些事情看起来不像是你的工作,但又需要完成,如果你能做到,就去做,直接找负责人,如果所有权不明确,就升级。这样的态度鼓励我们把产品和公司当成自己的。我们公司的一个价值观是这样说的。「把我们的产品和公司当作自己的产品和公司来打造,因为它是自己的。」

主动性是我们在管理人员中提倡的做法之一。事实上,一个由经验丰富的经理人组成的工作小组提出了一些材料和论坛,讨论有助于提高我们管理敏锐性的关键议题。我们已经确定,对我们来说,主动性是一个与妥善处理困难的对话、管理承诺、促成整体的职业成长或创造团队认同感同样重要的话题。

结束语

适当的和正确的激励措施有助于促进正确的行为。在我们的员工绩效评估中,我们关注的是技术贡献(对经理来说:人员和团队管理),对产品质量的关注,以及「公民身份」。最后一个类别相当广泛,但在本质上,它是关于为 Snowflake 和我们的客户进行优化,采取主动,并帮助他人。类似于跳台滑雪,距离和风格都很重要。

我们相信上述原则会带来一个高产的工程团队,同样重要的是,在一个有利于学习、合作和相互帮助的不复杂的环境中,快速的专业成长。

是否所有的工作都是按计划进行的?当然不是。Snowflake 是一家快速增长的公司,在一个高度动态的环境中运作。昨天还有效的东西,明天可能需要进行微调或完全彻底的修改。然而,本文所述的基本原则使我们能够迅速调整,并保持在技术的最前沿。我们让结果自己说话。

#management #translation