原作者:John Graham-Cumming Cloudflare 的 CTO
写于 01 Feb 2019

译者:驱蚊器喵#ΦωΦ


这是我为了 Speck&Tech 在 Trento(特伦托), Italy(意大利) 的演讲准备的文字. 我认为,这可能是一篇好的博文.因为这篇演讲稿有6000多字,我将它分为了6个单独的部分。

第一部分 - 我是怎么到 Cloudflare 工作的

原文地址:https://blog.cloudflare.com/helping-to-build-cloudflare-part-1/

我在 Cloudflare 工作已经超过了7年. 而 Cloudflare 的年龄是8岁有余. 所以, 当我来到这里工作的时候,它还是一家非常小的公司. 实际上,公司大概有20人. 所有人(除了我) 在 San Francisco(旧金山)的办公处工作. 而我是伦敦办事处的唯一成员.

如今,Cloudflare 有900名员工,分布在 San Francisco(旧金山),Austin(奥斯汀),Champaign IL(伊利诺伊州),New York(纽约),London(伦敦),Munich(慕尼黑),Singapore(新加坡)和 Beijing(北京)的办事处。在 London(伦敦), 我的 “单人办公室” (我的备用卧室) 现在差不多有200人,并且在一个月内, 我们将会搬到 Big Ben(大本钟)对面的新区域.

最开始的 Cloudflare 伦敦 “办事处”

数字的增长是因为公司迅猛的发展。但它的增长是经过精心管理的。我们本可以快的更多(就人而言); 当然,我们肯定筹集了足够的资金来做到这一点。

我最终选择了 Cloudflare,因为我在一次会议上发表了非常好的演讲。嗯,它比那复杂一点,这一切都源于我,而我毫不知情。十五年前,一位叫 Paul Graham) 的人在美国麻省理工学院举办了一场会议。当时 Paul Graham 很有名气,因为他是 LISP 程序专家,并了解如何处理垃圾邮件。直到他开始创立 Y Combinator 一年之后才开始。

Paul 邀请我在麻省理工学院的垃圾邮件大会上,就我编写的开源的机器学习电子邮件的过滤器程序发表演讲。所以,我想我最终选择 Cloudflare 的第二个原因是我写了一些代码并且开源了。该程序称为 POPFile,您今天仍可以下载(可以智能地对您的电子邮件进行排序)。

我写了 POPFile 程序,是因为我有这样的需求。我曾在硅谷的一家创业公司工作,收到了太多的电子邮件。我使用 Microsoft Outlook,我希望我的邮件分为不同的类别,因此我研究了这样做的技术,并编写了我自己的程序。第一个版本是 Visual Basic,第二个是 Perl。

所以,我来到了 Cloudflare,因为个人的需求,然后写程序、开源、公开演讲,以及许多人瞧不起和取笑的两种语言。要小心这样做。虽然语言确实有所作为,但程序员在所选语言中的技能很重要。

分享

如果有让我学到的道理,那就是…与他人分享。通过开源、演讲、以及如何与他人互动来分享。你给予的越多,人们就越会感激你,你将拥有更多的机会。有一本关于这个的好书叫 Adam Grant 的 Give and Take。我们给Cloudflare 的每个人都提供了那本书的副本。

Matthew Prince,Cloudflare 的 CEO,是我在麻省理工学院演讲的观众之一。Matthew 也是演讲者。他看到我的演讲,认为我很有趣,而我看到他演讲,也这么认为。

几年来,Matthew 和我保持联系,当他、Michelle 和 Lee 创办 Cloudflare 时,他邀请我加入。这对于我来说是错误的时间,说实话,我当时对 Cloudflare 有很多怀疑。我认为不会很多人注册这项服务。

我很高兴,我错了。我很高兴 Matthew 坚持不懈地想要让我加入。今天有超过1300万个域名注册到 Cloudflare,而我现在是CTO。但我没有被聘为首席技术官,因为这不是我的野心。我加入了 Cloudflare,与我喜欢的人合作,做了很酷的事情。

我很幸运,我的背景、成长经历、父母和事业使我能够与我喜欢的人一起工作并做很酷的事情。当然,很酷的东西会改变。但这取决于你的技术能力。

糟糕的情况

当我第一次来到 Cloudflare 时,我和 Matthew 进行了几次会面。特别是与投资者的会面,人们总是会以愉快的方式问他”情况怎么样?”, 他总是回答”这很可怕”。起初,我以为他只是在装傻,笑着看看人们会如何反应。

在某种程度上,因为事实上创业公司总是“非常糟糕”,所以他这样做也有一定的道理。初创企业是非常非常困难的。少数公司的巨大成功很容易让人分心,并且没有面对建立公司是一项艰苦工作的现实。努力工作还不够。您可能没有足够的资金或合适的员工,或者您可能会发现您的市场太小。

生活在硅谷的人处于精神分裂的状态:每个人表面上告诉你,他们是如何“克服它”并且做得很好。但内心里充满了恐惧和怀疑。在精神上,这是非常难以维持的,所以有些人因此而遭受精神健康问题, 这并不奇怪。正如 Matthew 所做的那样,我们不应该因为承认事情很困难而感到羞耻。

硅谷人也喜欢使用非常积极的语言来处理可能有点负面或困难的事情。 一个这样的术语是“旋转运动(pivot)”。 改变方向或响应客户和市场需求并没有错。 但面对现实,你必须改变方向。 没关系。 引用 George Bernard Shaw 的话说:“没有改变就不可能取得进步,那些无法改变主意的人也无法改变任何事情(Progress is impossible without change, and those who cannot change their minds cannot change anything)”。

第二部分 - 最困难的两个星期

原文地址:https://blog.cloudflare.com/helping-to-build-cloudflare-part-2/

坦率而诚实地谈论你所处的情况往往是最好的做法。Matthew Prince 喜欢把它称为“危机感(Panic Early)”。很久以前,我在硅谷成立了一家公司,我们拥有最漂亮的代码。我们本可以从代码库中学习计算机科学课程。但我们几乎没有任何客户,我们没有“危机感(Panic Early)”,也没有正视我们的市场太小的事实。

具有讽刺意味的是,这家公司的首席执行官曾经告诉人们“快速传递坏消息”。这是一句很好的格言,如果你有坏消息,那就要快速而清晰地传递这个消息。如果你不这样做,坏消息不会消失,情况可能会变得更糟。

Cloudbleed(云出血)

早在2017年,Cloudflare 就遇到了一个非常非常严重的安全问题。这个问题被称为 Cloudbleed。在我们不知情的情况下,我们机器内部的内存被泄漏到返回给 Web 浏览器的响应中。而且由于我们的机器共享在数百万个网站上,这意味着包含可能非常敏感的信息的 HTTP 请求已被泄露。

更糟糕的是,这些信息被搜索引擎缓存。因此,只要知道一些关键字,任何人都可以访问 Google 或 Bing 或 Baidu(百度) 并查找敏感信息。幸运的是,对我们来说,谷歌的 Project Zero 团队通过查看谷歌的抓取器缓存发现我们泄漏了。他们告诉我们,他们很快就能阻止泄漏。

但这并没有减少私人信息(其中大部分都是加密传输)被搜索引擎缓存的事实。虽然我们在45分钟内阻止了泄漏,但清理的工作量仍然很巨大。巨大,首先是因为我们必须找到泄露了什么,其次是我们必须找到所有带缓存的搜索引擎,并以某种方式要求他们删除缓存的数据。

之前没有搜索引擎处理过这样的事情。我们要求大量删除数据,花了很长时间(至少感觉过了好像很长一段时间)才能找到合适的人并开始删除缓存的数据。

从 Cloudbleed 的第一个晚上开始,我开始收集信息,以便能够撰写公开的披露信息。最终,当 Project Zero 想要公布时,我们已经准备好了一篇关于这个主题的长篇透明博文,并且能够谈论它。

到目前为止,这是我职业生涯中最困难的一周。首先,我们本身程序有漏洞,其次,我们进行了清理,然后我们必须告诉人们发生了什么。在那个星期,我几乎没有睡觉(我并没有夸张),并且,在美国,英国和其他地方的Cloudflare 的一大群成员保持不断地联系。我们了解到,可以在两个办公室之间保持 Google Hangout(环聊直播) 的通话,并且可以连续几天不间断地运行。

已知的未知数

最难的事情是,我们在开始时并不知道 Cloudflare 是否能活下来。一开始它看起来很糟糕,事实的确也很糟糕,我们有两个问题:“哪些私人数据实际上已被泄露和缓存?”以及“有没有人发现并积极利用它?”。

我们通过广泛搜索和整理来自搜索引擎的信息来回答这两个问题。最终,我和其他人打电话给客户与他们交谈。我们能告诉他们,我们发现了什么以及统计我们可能泄露的内容。

通过查看我们的日志系统中的漏洞利用证据来回答第二个问题。但是有一些非常棘手的事情:由于隐私原因,Cloudflare 对记录的数据量有长度限制。因此,我们不得不深入研究各种数据(崩溃率,保存的核心 dump,Sentry 中的错误,采样数据)的统计分析以寻找漏洞利用的可能性。

我们分成不同的团队寻找不同的证据,只有我和 Matthew Prince 知道每个团队看到了什么。我们这样做是因为我们不希望团队之间相互影响。我们希望确定,在发布包含更多详细信息的第二篇博客之前,我们是对的。

我们没有找到漏洞被利用的证据。虽然严重,但发现搜索引擎中缓存的数据几乎没有包含私人信息。但它的确非常非常严重,我们都知道这可能会更糟糕。

虽然我回顾,这两周是我职业生涯中最糟糕的时间,但引用 Charles Dickens(查尔斯狄更斯)的话说:“It was the best of times, it was the worst of times(这是最好的时期,也是最糟糕的时期)”。大多数公司都不知道 Cloudbleed 发生在我们上市之前。公开的那天早上,我很早就洗了个澡,然后坐出租车去了办公室。

通常情况下,早上办公室很安静,但是那天我走进一个满是人的办公室,我惊呆了。那些人问我 “我们能够做些什么?”。这是一种令人难以置信的感觉。我们打印了一张很大的 Winston Churchill(温斯顿丘吉尔)海报,注视着团队说:“如果你要经过地狱,继续前进!”。每个人都投入进来了。

在众多媒体中,好像是 BBC,曾问我是否因为 Cloudbleed 而修改了密码。我说我没有。这是真的。我个人没有改变任何事情。但在那次风暴中,我对不负责任的评论家(armchair critics)提出了很多批评。

虽然 Cloudbleed 很糟糕,但 Cloudbleed 强化了 Cloudflare 的文化:公开和帮助他人。我们都在一起,并且克服了困难。并且我们的客户看到:我们并没有失去主要客户,事实上,我们赢得了客户,他们告诉我们“我们希望与您合作,因为您是如此公开透明”。

第三部分 - 大胆,多样,变革

原文地址:https://blog.cloudflare.com/helping-to-build-cloudflare-part-3/

在 Cloudbleed 之后, 很多事情发生了变化. 我们开始停止使用内存不安全的程序语言,比如 C 和 C++ (现在更多的是 Go 和 Rust ). 并且每次机器上产生 SIGABRT 信号或者崩溃,系统都会发送电子邮件给我和负责的团队. 我不会让团队放任这些问题恶化.

推出 1.1.1.1

所以,Cloudbleed 曾是一段很糟糕的经历. 我们来讲讲美好的时光吧. 那就是,我们上线了我们的公共 DNS 解析服务器 1.1.1.1. 这次上线,意味着 Cloudflare 的一个重要品质: 大胆. Google 几年前推出了其公共 DNS 解析服务器 8.8.8.8 ,并且在市场上获得大部分份额. 他们的地址容易被记住,服务也很快.‌‌

但是,我们认为我们能做的更好. 我们认为我们可以更快, 并且更容易被记住. Matthew 要求我们获得 1.1.1.1 这个地址,并在几个月内推出一个安全的、隐私保护的公共 DNS 解析服务器. 对了, 还要比其他的服务更快.‌‌

我们做到了。在某种程度上,我们能完成,是因为我们与世界各地的不同团体建立的良好关系。通过始终如一地了解我们的运营方式以及雇用已建立关系的人员,我们做到这一点。这部分是关于多样性如何重要的故事。如果我们是那种歧视老工程师的人,那么大多数 Cloudflare 的项目都不会被构建出来。我稍后会回到多样性和包容性的话题。

通过关系和分享,我们得到了 1.1.1.1 这个ip地址。通过我们的架构,我们能使之成为最快的服务。多年来,我们一直在说 Cloudflare 适用于互联网上的每个人,无论你在什么地方。我们将资金投入到我们的市场之处,并在全球建立了 165 个数据中心。我们的目标是,每个使用互联网的人访问时间在10毫秒内。

当你无处不在时,成为最快将会易如反掌。或者说,如果你有一个可以快速更新软件并在任何地方运行的架构,这样至少会很容易。 Cloudflare 在全球范围内每台机器上运行单个软件堆栈。与我们的竞争对手相比,这种架构产生了巨大的变化,使我们能够快速、廉价地扩展。

Cloudflare 的架构

在我加入公司之前,架构已经基本上已经到位。 Lee Holloway(公司的原架构师)与一个小团队合作,构建了一个基于开源组件(比如 Postgres 和 NGINX)的服务,该服务只有单个软件进行缓存、WAF、DDoS 缓解等等。

该服务由分布式键值对存储控制,可以在几秒钟内将配置发送到我们遍布世界各地的每台机器。集中在 Postgres 中有一个庞大的客户数据库和很多 PHP 来创建公共 cloudflare.com 网站。

虽然我们时常改变我们的软件,但这种架构仍然存在。在 Cloudflare 早期,我认为网络中应该有一些特殊的机器来执行特殊任务(比如 DDoS 缓解)。事实上,我想构建这些机器,是因为从技术上来说,操作那种大型、复杂的低延迟软件真的很让人激动。但 Lee 和 Matthew 告诉我,我的想法错了:一个简单的架构可以更容易扩展。

然而,他们是对的。我们已经扩展到 25Tbps 的网络容量,每台机器都可以独立完成工作。因此,正确的架构,并确保您正在以合理的需求构建项目。一旦你可以像这样扩展,添加 1.1.1.1 很容易。我们将软件推送到每台服务器,对其进行测试并公开宣布。一夜之间它成为最快的公共 ​​DNS 解析器,并且始终如一(there is and remains so)

当然,自从 Lee 开始致力于软件以来,我们的软件堆栈已经迭代了很多个版本。它的大部分内容都被重写了。我们已经移除了 Matthew Prince 从早期开始用 PHP 编写的所有代码,现在我们开始移除我使用 Lua 和 Go 编写的代码。这很正常,如果你回顾五年前你写的代码,你仍然觉得它适用,要么你是在自欺欺人,要么就是你没有成长

拓展的代价就是重写

似乎软件使用中的每个数量级的变化都需要重写。令人遗憾的是,你无法从最终级的代码库和终极架构开始,但实际情况是,构建满足当今挑战所需的软件太难了,所以你不必担心明天会怎么样。同样,当您的服务增长 10 倍时,你很难预测实际需要什么。

当我加入公司时,我们的大多数客户,只拥有少量的 DNS 记录。该软件已经构建,可以扩展到数千或数百万客户。每个客户都有少量记录。那是因为我们的典型客户是一个小企业或有博客的个人。我们的构建为数百万人服务。

然后,一家公司拥有一个有着百万个子域名的域名。我们的软件立即宕机了。它不是为了应对特定形式的客户而构建的。

因此,我们必须建立一个即时的援助团队,并开始重新设计处理 DNS 记录的软件。我可以告诉你,像这样情况的其他10个故事。但是教训很明显:你不知道在预期外会发生什么,所以继续前行直到你到达那里。但要准备好快速改变。

第四部分 - 公共参与

原文地址:https://blog.cloudflare.com/helping-to-build-cloudflare-part-4/

我们不相信我们的任何软件,而不是单行代码,为我们提供了长期优势。今天,我们可以在 Cloudflare 开源每一行代码,我们不相信我们会受到它的伤害。

对开源的看法

我们为什么不这样做呢?我们实际上开源了很多代码,但我们试着深思熟虑。首先,我们的许多代码都是特定于 Cloudflare 的,包含关于我们的服务如何工作的逻辑,不够通用,不能让别人对他们的服务开箱即用。因此,例如,开源我们的Web前端的代码将很大程度上没有作用。

但其他软件是通用的。我们目前正在就一款名为 Quicksilver 的软件进行内部辩论。我之前提到 Cloudflare 使用分布式键值存储将配置发送到全世界​​的机器。我们曾经使用一个名为 Kyoto Tycoon 的开源项目。这很酷。

但它最终没有缩小到我们的规模。当我们在全球范围内拥有少量地区时,情况非常好,但我们在第100个地区时遇到了运营问题。默认情况下,它不是安全的,因此我们必须为其添加安全性。一旦我们做了,我们就会开源了这个改进,但在某些时候使用开源软件时,你必须做出“修改或是重写”的决定。

过去用 PowerDNS 时,我们曾做过这样的事。最初我们的 DNS 服务基于 PowerDNS 。当时它很棒。但是随着我们的扩展,将其纳入我们系统,我们遇到了问题。并不是因为 PowerDNS 出现了问题,而是因为我们有很多与 DNS 相关的逻辑,而且我们在 PowerDNS 中硬塞了很多东西,而且它对我们来说越来越难以维护。这不是 PowerDNS 的错;我们围绕它构建了如此庞大的业务逻辑,以至于 PowerDNS 被这种逻辑的剪切力所压垮:重新开始,并将逻辑和 DNS 集成到单个代码库中是有意义的。

最终,我们使用 Go 编写了我们自己的服务器 RRDNS,它的代码现在是地球上最大、最快的权威 DNS 服务。这是我们尚未开源的另一款软件。那是因为它充满了商业逻辑和特殊条件的处理(比如在中国工作的独特挑战)。

但回到 Quicksilver。它基于 LMDB,可以同步所有数据和代码。遍布全球网络。通常,更改(您单击我们的UI中的按钮或上传我们的边缘计算产品的代码),它将在 5 秒内向全局分发。这很酷炫。

Quicksilver 是通用的。它不包含大量特定于 Cloudflare 的逻辑,并且可能对其他人有用。内部的争论是关于我们是否有时间培养和处理在 Quicksilver 周围成长的社区。您最近可能已经看到 Ruby 的创建者在 Twitter 上说“我们只是凡人”,他们指出流行的开源项目背后的人只有这么多时间。我们从京都大亨的创作者那里吸取教训,那些创作者现在已经基本上放弃了做其他事情。

也许 Quicksilver 今年会开源,具体再说吧。但我们对开源的规则是:“这个东西其他人可以使用吗,我们有时间公开维护吗?”。当然,我们修改现有开源软件的地方,我们会上传可以上传的部分。不可避免的是,有些项目不接受我们的 PR (Pull Request),因此我们必须维护内部的forks。

对专利的看法

当我们说到知识产权这个话题时,让我们先谈谈专利。Cloudflare 拥有很多专利。虽然生活在一个没有软件专利的世界里可能会很好,但它有点像核武器。由于权力不平衡被抛在后面,一个国家很难单方面解除武装。如果 Cloudflare 没有对我们软件的某些方面申请专利,那么其他人会然后使用它们来对付我们。

因此,我们申请专利是为了保护我们自己。防止他人使用专利制度对付我们。

与政府协作

谈完专利,让我们谈谈政府。许多科技公司认为他们对学校来说太酷了。他们不需要考虑政府,因为技术的发展速度比他们快,那些老的,无聊的立法者对此又了解多少呢?

大错特错.

是的,政府行动缓慢。你其实想要他们这样。想象一下,如果政府像聊天应用程序一样快速地修改政策。这将是一场噩梦。但仅仅因为它们很慢,它们不容忽视。

简单地说,政府有坦克而你没有坦克。最终,立法者会制定影响你的法律,除非你花时间向他们解释你做了什么,否则你可能会有一个令人讨厌的惊喜。

Cloudflare 很早就决定与美国和欧洲的立法者接触。我们这样做是为了帮助他们了解互联网上发生的事情,我们预见到的挑战,以及帮助他们完成我们所有人都能解决的技术问题。

如果您的企业最终有可能受到政府的监管,那么您应该尽早参与。 Cloudflare 对版权法,打击网上极端主义和隐私等问题进行了很多考虑。我们必须这样做,因为我们的网络被1300万个网站和服务所使用,并且所有方式都通过它。

很多时候,人们会因为他们不喜欢我们网络上的特定客户,而对我们生气。这对我们来说很难,因为我们通常也不喜欢它们。但这是一个棘手的问题:你真的想要我,或 Matthew,决定网上有什么吗?因为很多时候这就是愤怒的暴徒所要求的。

“关闭它”,“把它从你的服务中删除”。当公司回答股东而不是人民时,人们要求公司成为防线,这很奇怪。正确的答案是,如果你在网上看到一些你不喜欢的东西:参与你所在国的政治进程。

民主体制,特别是司法机构的透明度对各国的长期生存至关重要。通过这些机构,人们需要表达他们对允许和禁止的想法。

你是如何与政府接触的?每个政府都有委员会和咨询机构,他们都渴望得到业界人士的帮助。去寻找与你公司的工作范围重合的机构,不要因为他们看起来过时的方式逃避,并参与其中。

第五部分 - 寻找合适的人、鼓励员工并学会放手

原文地址:https://blog.cloudflare.com/helping-to-build-cloudflare-part-5/

那么,让我谈一谈人们。软件是由人制作的。有时是个人,但更多的时候是团队。我之前谈过我们架构的某些方面以及我们频繁的重写,但是完成所有这些工作的是人。

老实说,人们可以变得非常快乐,也可以是由衷的痛苦。寻找,保持,培养人员和团队是您在公司中可以做的最重要的事情。这是毫无疑问。

招纳贤才

招人真的很难。首先,技术行业正在蓬勃发展,因此工程师有很多选择。各个国家只为他们设立特别签证。政客们排着队的在他们的国家创建迷你硅谷。他们生活得很好!

但真正困难的事情是面试。你如何从面试中找到合适的人选?我不知道。我们让人们平均接受8次面试和一次编程练习。我们来看看开源贡献量。有时我们会看人的学历。

我们倾向于寻找潜力。一位老板曾经说过,“不要雇用那些已经完成工作的人,聘请那些能够学会做事的人”。这是一个有趣的想法。人们自然希望雇用知道如何做某事的人。但技术一直在变化,所以你真正想要的是那些好奇的人。

而且你无法通过查看学历和证书资质来发现好奇心。你可以通过询问人们做什么和思考来找到它。他们喜欢什么,没有人看的时候他们做了什么。

另一件非常重要的事情就是问:“这个人能够表达自己吗?”。一个人无法与他人交流是很少见的。当然,你可能会遇到一个你想聘请的天才,然而他只会说咕噜咕噜。但真正的魔力发生在团队(特别是3到12人的小团队)共同制作软件时。团队建立在沟通的基础之上。因此,寻找能够表达他们想法的人:可能是通过电子邮件,绘画或说话。

允许人们离职

你也会发现你雇用了错误的人或建立了错误的团队。不要害怕让人们离开。去年有16%的人被调动到 Cloudflare 内部的另一份工作(不仅是团队!)。你应该经常看看自己的团队,并询问他们的表现如何。

改变团队,重组或调动人们并非失败。事实上,不这样做,作为一名经理,这是失败。

不要害怕允许人们离开。

但是当你面试他们时你会认为某人很棒,而后他们却不是这样了,这很难过。或者有人认为他们比实际要重要(gets too big for their boots),并开始表现就像这是他的地盘。有时人们需要离开公司。这会是迄今为止管理者必须做的最糟糕的事情(直到今天我讨厌让人们离开)。

在过去的几年里,我一直处于必须要做决定,是否要将人员从高级管理职位上剔除。做出这些决定真的很难。你可能喜欢和某人一起工作,但是意识到他们的团队没有做好,或者他们似乎没有达到你对他们的期望。

根据我自己的经验,我总是花太长时间来做出改变。我总是想给第二次或第三次机会。通常这是一个错误。实际上,不是通常,而是永远。对某人说,”我不相信你是 X 的合适人选,所以我决定要替换你”,真是难以置信。但如果你这样做是100%清晰。对于被调动的人更公平,他们知道具体的决定已经做出了。

我认为,对为我工作的员工说的最重要的一件事情就是:“你需要告诉我,你所做的工作是否让你开心”。因为我可能没有意识到。毕竟我也只是人类。有一天,我的一位工程师接过了我的话,我很高兴他做到了。这是直接向我汇报的人:一位经验丰富的工程师。

有一天,他来到我面前说:“我不想再为你工作了,我想在 Y 上为 X 工作”。也许他很紧张地对我这么说,但把人放在他们喜欢的工作上是关键。因为组建了一个大团队,管理者还没有成功,当团队构建了令人敬畏的软件时,他们就取得了成功,并且那些认为他们正在做最好的工作的人建立了很棒的软件。这应该是你的目标:帮助人们做最好的工作。帮助人们成长和学习。

多元化和包容性

软件行业有很多关于多元化和包容性的讨论。很多年前,在我的第一份管理工作中,我有一个小工程师团队。我们有五个人:Alice,Tanvi,Roman,Dan 和我。两个女人,三个男人。由于人与背景的混合,这是我曾经工作过的最有趣的团队之一。我们创建了一个非常好的软件。

大量研究表明,不同的团队会更强大、更快乐、做得更好。如果你没有多元化的团队,你真的会失败。这是 Cloudflare 正在努力工作的领域(特别是在工程团队中)。不是因为它流行或者这样很酷,而是因为这样,意味着我们将成为一个更好、更强大、更聪明的公司。

为此,我们查看了我们在职位描述中使用的语言、我们面试人的方式以及我们如何寻找潜在的候选人。这也意味着要检讨我们提供的薪资待遇和内部政策,以确保公司对各种各样的人有吸引力。这是有效的方式,我希望到2019年底我们能够谈论我们所做的一切。

一句话:各种各样的背景都会孕育出伟大的人。去寻找他们!

第六部分 - Cloudflare 的 CTO 做些什么事呢?

原文地址:https://blog.cloudflare.com/helping-to-build-cloudflare-part-6/

如果你仍清醒,那么最后一个你可能想知道答案的问题是:CTO 做些什么? 现实中,在不同的公司可能是不同的事情。但我可以告诉你一些我做的事情。

时间最长的临时工作

我并非作为 CTO 加入到 Cloudflare 的。我最开始的工作是程序员,在最初的几年里,我的确只做这个。我写了一个名为 Railgun 的技术
(一种用于加速 Cloudflare 和原始 Web 服务器之间连接的差分压缩程序),然后我继续编写我们的 WAF 程序。之后,我致力于我们基于 Go 开发的 DNS 服务器及其堆栈部分。

在某些时候,Lee Holloway 决定他不想管理 Cloudflare 不断增长的员工,而 Michelle Zatlyn(Cloudflare 的创始人之一)问我是否愿意”暂时”管理工程师团队。这是我有史以来最长的临时工作!

最初我做的很多事情都是管理团队并帮助采访人员,但我还在编写代码。然而我做的越来越多的事,是鼓励别人去做事。一天,一个聪明的工程师,曾是我从事 DNS 工作的同事告诉我,如果他可以独自完成他的想法,他认为他可以“解决DDoS”。

这是工程师表明他们非常有能力的一种情况,这值得承担风险。所以,我说“OK”,就这样去做,我会写你想写的代码,把你所有的错误分配给我。事实证明,这是一个很好的决定,因为他构建了我们整个 DDoS 缓解系统(内部称为 gatebot),该系统防御了一些 Cloudflare 最大的 DDoS 攻击。

当然,就像 Cloudflare 所做的一切一样,事情已经超出个人的能力范畴,我们需要一个团队。今天,gatebot 和 DDoS 一般由伦敦和奥斯汀(Austin)的工程师团队管理,原来的工程师已经转向其他事情。因此,鼓励员工是工作组成的重要部分。

慢慢地,我的临时工作增加了越来越多的事情。我曾在运营 Cloudflare 的 IT、SRE 和技术运营、网络、信息安全和工程部门。一些临时的工作。慢慢地我又脱离了一些这样的事情。现在,信息技术和信息安全已成为自己的部门。其他人能比我更好地运营那些事情!

在全球范围内管理团队的挑战(我在旧金山,伦敦和新加坡都有工作人员)意味着需要新的领导力,所以我招聘了一名工程负责人,而 SRE / ops 则拥有自己的负责人。今天,坐在我的整个团队中超过 250 人。

创造是远不够的,你还需要推广

罗伯特梅特卡夫(Robert Metcalfe), 在施乐(Xerox)帕洛阿尔托研究中心(PARC)任职期间发明了以太网(Ethernet), 他曾说:“我没有通过发明以太网致富,我通过销售它来致富”。这是一个重要的观点。拥有良好的技术是不够的,你必须让人们听说它,你必须推广它。

Cloudflare 市场的一种方式是通过我们的博客。你可能没有意识到,但我们有一个非常非常强大的品牌,因为我们写了那些超级牛逼的技术博客文章。他们看起来不像营销,但事实上他们就是这样。另一种我们推销的方式就是做这样的事情:到地方上和同人们交谈。

但通常,我所做的是直接与客户交谈。周一下午和晚上,我和美国的潜在客户进行了两次长时间的视频会议。昨天,我正在致电有关我们与 IBM 的合作关系。今天早上,在我飞往维罗纳(Verona)之前, 与德国的潜在客户打电话。所以… CTO 所做的一件事就是大量的销售!

一些唠叨的话

一件事,我并非在主导公司内所有智能的技术。我曾经被 Matthew Prince 的一位法学院朋友介绍为”Cloudflare 背后的大脑”。这与事实相差甚远。 Cloudflare 的工程师有很多工作,而我今天无法进行大量的学习。团队比个人强大得多。

偶尔,我会利用经验,将公司推向一个特定的方向。或者只是鼓励我认为是正确的技术(我采用 Clickhouse 作为面向列的数据库,Go 和最近使用 Rust)。有了 Rust,我决定自己学习这门语言,并做一个小项目,把它放在 GitHub 上。在我的位置上,这足以让人们意识到使用 Rust 是不错的。

最后

因此,总结一下,从我的经验和 Cloudflare 的创立中可以学到一些东西。不畏困难、广泛分享、透明公开、努力工作、花大量时间找到契合的人并帮助他们、创建团队、重写代码,尽早恐慌!最重要的是,尽管这样做仍然很谦虚。时光飞逝,荆棘丛生,因果轮回,当命运的噩梦来临,你亟待他人的援手。创建一些伟大的东西,并对你的创作保持谦逊。