• Google首席工程师:如果我们20 年后仍在谈论 Kubernetes,那将是科技界一个令人悲伤的时刻
  • 发布于 2个月前
  • 162 热度
    0 评论
  • Fayer
  • 0 粉丝 39 篇博客
  •   
本文是对 Google Cloud 首席开发者倡导者 Kelsey Hightower 的采访,他也是谷歌首席工程师,自 2014 年以来,一直是 Kubernetes 的布道者和持续贡献者,他在云原生技术领域特别是 Kubernetes 方面非常有经验。采访中,Kelsey 与主持人 Martin Woodward 和 Neha Batra 探讨了关于培育蓬勃发展的开源社区的理念,以及他对 Kubernetes 未来状态的定位。

下面是采访内容。

Neha:很高兴你能接受我们的采访。我们稍后会深入探讨一些关于维护者的细节问题。我想先听一下你在成长和发展方面的一些想法。比如,你在这个领域的理念是什么?是自学和尝试各种方法吗?

Kelsey:对我来说,我试图将整个人融入到这个发展过程中。在我从事技术工作之前,我曾在快餐行业工作。对我来说,进入技术领域是为了生存。因此,自学成为了首选项,主要是因为它是最容易获得知识的途径。

你可以在 1999 年去书店购买关于任何主题的书籍,感觉就好像你也获得了那些有机会接受高等教育的人们所拥有的学位。自学我认为这其实是在通过从未见过面的作者们的教导来学习。因此,它变成了一种感觉,感觉只需要读一本书就能掌握任何事情。

Martin:是的,我的意思是,我们在某些方面很幸运,在 80 年代末和 90 年代初成长起来,因为你可以去书店学一点东西。有时候,当我看到在参加编程训练营或者刚刚进入技术行业的人时,我感到非常震惊,因为他们现在需要了解的技术范围非常广泛。而我们只需要逐步学习一点点。

那么现在你是如何提升自己的技能呢?因为学习永远不会停止,对吗?当你觉得某个事情值得探索时,你有什么想法?你如何在时间和精力上进行优先排序?

Kelsey:我意识到有一个关键点,那就是基础知识比人们普遍认为的更为重要。如今,很多开源项目因为它们的受欢迎程度、标志和花哨的名称而备受关注。这通常与炒作有关。人们往往会被新事物所吸引。

在我成长的过程中,我是通过 FreeBSD 来学习 Unix 的。当然,Linux 也已经问世,还有其他可用的选择,但我碰巧选择了 FreeBSD 并深入学习。我学习了有关 FreeBSD 的一切,包括它作为操作系统的工作原理、更新和升级方法。

我记得我第一次技术面试时,所有的问题都是关于 Linux 的。在面试过程中,有一刻我无法回答问题,因为他们想要的是关于 Linux 的具体知识,而我只熟悉 Unix,并不熟悉 Linux 的细节。面试小组中有三个人,其中一位面试官问我:“你指的是哪个 Unix 发行版?” 我回答说:“FreeBSD。” 幸运的是,他正好在腿上有一个 FreeBSD 的纹身。

然后,他将整个面试的重点转向了讨论 freeBSD。我能够运用我的基础知识进行模式匹配并给出非常详细的回答。当我开始这份工作时,我发现所有我在 freeBSD 上学到的技能都可以迁移到 Linux 环境中。所以在我的整个职业生涯中,我一直专注于当前所面对的技术,无论是编程语言还是网络交换机,我都会尽可能地了解它们,因为我知道有 80% 的知识是相通的。

因此,当我看到今天出现的新项目时,我会关注所有的流行词汇和花哨的东西,然后回归到基础知识,问自己:“这个项目实现了多少基础知识,它在这个领域有什么新的创新?” 我发现在那一点上,我只需要掌握其中的 10% 的差异,就能真正理解。其他的问题可以通过提问来解决。

Neha:所以我觉得你谈到的一些东西真的与我产生了共鸣。你知道,我也是自学成才的,我认为在深入研究一个主题时,能够掌握其中的基本原理非常重要。专注于深入研究一件事情,这不仅适用于学习,也适用于教学。我很好奇,当你考虑自己在学习和教学中的方法时,你是否认为这两者是不同的?你是否运用了不同的技能组合?如果是的话,具体有哪些不同之处?

Kelsey:对我来说,这确实是两个不同的方面。当我从别人那里学到东西时,我尝试将其复述出来。你知道,在交谈中,如果我理解得正确,即使你有一点错误,人们也会纠正你,告诉你 “接近了,但不完全正确”。这种反馈循环会加速学习的过程。因此,这需要一些勇气。

很多时候,在公开学习的过程中,你会暴露自己。所以你必须非常小心,不要给人一种权威的形象。你不想表现得像是在说:“这就是答案。” 因此,我喜欢将一些事实和一些观点结合起来,用它们来指导我的学习。比如说:“嘿,这是我学到的东西,这是我对它的看法,如果这是正确的。” 然后其他人会帮助我完善我的思维模式,确保我真正理解了那个主题。

另外,我喜欢利用自己所学的知识来构建一些东西,特别是在学习技术领域的知识时。我可能会构建一个小原型,或者以 “Hello World” 的水平来实践一些东西,然后我会愿意分享出来。我会将自己的笔记放在 GitHub 上,就像一个完整的文档。比如,我最近学习了服务网格的概念,我会建立一个小原型来巩固我所学到的知识,并将它放在 GitHub 上供他人参考,这或许可能帮到你。

Martin:是的,这实际上一直是困扰我的问题,因为我从来没有认为自己是某个领域的专家。你知道我是什么意思吗?或许有某项超级小众的技术,现在已经没人使用,我可能是这方面的专家,因为实际上没人关注它了。但其他方面,我一直在不断学习。

有时我很困惑,不知道什么时候该进行实验和工作,也不知道如何将其与我正在做的工作区分开来,因为我正在做的工作才能维持我的开源项目正常运行。你是如何在开源项目中处理创新和实验的需求,以及稳定性和可靠性方面的平衡的?你是如何分配时间的?

Kelsey:是的。我认为我在某个时刻意识到,你无需成为专家级人物,只需要进入前一万名即可。只要你在某个领域中排在前一万名,那意味着你几乎可以在世界任何地方找到工作。这样压力会很小。那么你要与谁竞争呢?你可以试图与那些在职业生涯中只专注于某个领域的专家竞争。而我选择的是超越过去的自我。

也就是说,如果我在使用 Go 语言编程,我希望了解 Go 编程语言的工作原理。为什么只有 32 个或 30 多个关键字,这些关键字的作用是什么?它们对 Go 的运行时或 Go 的内存管理有何影响?我可能会花一些时间阅读关于内存管理的文档,了解作为开发人员,它对我的好处是什么?然后,你可以阅读其他编程语言中关于内存管理的历史资料。

所以我认为有一个时间段,如果你只有一周(五个工作日),你可以将其中一天留出一大块时间用于学习。远离键盘,确保自己对这些基本原理有清晰的理解,这是非常有价值的。

我举个例子吧。我开源了一个名为 Conf-d 的项目。它像大多数开源项目一样起步,我试图解决自己的一个问题。于是我构建了一个只解决这一个问题的工具,并决定将其开源。

也就是说,我与他人分享这个工具,但只有当别人有与我相同的问题时,它才对他们有用。我并不试图成为满足所有人需求的工具。然后有一天,有人说:“嘿,Conf-d 很棒。它是一个很好的将键值转换为应用程序配置的工具。但我们真的需要加密功能。” 当时我陷入了困境,因为我对在这个工具中添加加密功能并不熟悉,我不清楚其中的权衡。

所以我花了两周的时间,专门研究了正确的加密方法。我思考应该在我的工具中本地实现加密,还是依赖键值存储,在运行时进行解密。在这个过程中,我学习了各种不同的方法,还尝试了其他开源项目。作为维护者,其实并不需要从零开始解决所有问题,你可以参考其他维护者在他们的项目中选择的解决方案,这可以为你提供一些指导。

所以当我进行第一次实现时,我是公开介绍的。我发布了一个测试版,并邀请其他人尝试使用,开发者社区非常愿意提供反馈。“这不是正确的方法!”“现在已经没有人使用这些加密算法了。” 他们给出了反馈,我会回应:“好的,我听到你的意见了,有更好的想法吗?” 然后我会根据他们的建议对我的原型进行改进。这一直是我的方法。对我而言,我知道我在做什么。我将这些学习当作是对未来的投资,我知道这将在将来带来巨大的回报。因此,我会愿意花时间去学习。

Martin:这是一种很好的方式,以对未来的 Kelsey 给予应有的尊重和关怀。有时候,我们对待自己的未来时,可能没有那种尊重。你知道,我们给自己安排了各种事情,但从来不会投资于自己,使未来的自己比现在更好。

你对处理不同的开源社区有很多经验。正如你所说,人们有时会非常自由地表达自己的意见。那么你是如何处理这些情况的呢?例如,意见不合、冲突之类的情况?在你的所有项目中,每当我参与其中,你总是营造出一种非常积极的环境。你是如何做到这一点的?我猜想这是非常有意识的。

Kelsey:我觉得如果你曾经尝试维护自己的开源项目,希望你能培养起一种共情的感觉。当我开源了 Conf-d 这个项目时,我非常兴奋。我记得参加 FOSDEM 这个在欧洲非常受欢迎的开源会议时,我进入了一个关于配置管理的演讲。我看着有人演讲时提到了 Conf-d。我从未见过这个人。我的内心被震撼了。

这个人在谈论这个令人惊艳的工具,它改变了我们对配置管理的思考方式。而我只是坐在后排交叉着双臂,像是说 “天哪,他在谈论我创建的东西”。所以我不再只是开源的用户,我也成为了一个贡献者。更好的是,我成为了一个维护者。我记得我经历了很长时间的情绪高涨,因为我能够对一个在全世界范围内被人们认可的东西产生影响。

然而,我也记得要给自己留出时间,因为这种高涨是会消退的。想象一下那个周六早晨,当你醒来后发现你的邮箱被来自那些你不使用、也没有计划使用的功能请求所淹没。而你却是在你的空闲时间免费工作。人们会非常苛刻地要求 “这个问题需要尽快解决”。而这一切都是免费的。

当你看到他们的电子邮件地址时,他们是那些完全有能力支付这个软件或实现这个改变,并提交一个拉取请求的大型组织的员工。你不想让社区失望,所以你不得不努力工作,即使非常疲劳。

所以,你放慢了脚步,勇敢地与人沟通。我不能满足每个人的需求,所以我们对项目进行了范围限定。我们决不会添加某个功能。有些人对此感到不满,因为你做出了决定。但我意识到必须做出决策。将所有这些经验和另外一个帮助我认识到的经历结合在一起,我有一个口号叫做 “不同的公司,同一个团队”。

在开源社区中,我们来自不同的组织。有时我们在技术堆栈的高层竞争,但在底层,我们都是希望实现这些想法的人。尽管我们的公司不同,但我们仍然可以合作。

我记得有一次我拒绝了一个对 Conf-d 非常重要的功能请求。HashiCorp 的团队开发了一些很棒的工具,包括 Consul 和 Vault。有人提出了一个要在 Conf-d 中添加 Vault 支持的请求,即在 Vault 中加密所有的秘密,然后 Conf-d 会获取并提供良好的应用配置。

但是,我拒绝了这个请求。于是 HashiCorp 的团队开发了一个竞争性的工具,叫做 consul template,可以实现我拒绝的所有功能。他们发布后,在 Hacker News 上成为了排名第一的帖子。社区的反应是:“哇,你们这样对待 Kelsey 太过分了。你们这个赚钱的大公司,竟然直接与他竞争,而不是为他的项目做出贡献。”

但是,他们并不知道事情的全貌。他们不知道我们进行过一次私下交流,我认为对于 Conf-d 来说,拒绝是正确的决定,而对于 consul template 来说,接受是正确的决定。我非常赞赏 Mitchell Hashimoto 和 HashiCorp 团队接过 Conf-d 的想法,并以满足他们社区需求的方式继续发展。这减轻了我的压力,同时也满足了社区的需求。这就是开源的力量,在竞争中寻求合作。

作为一个维护者,我对所有这些情况都充满了共情。当我参与一个新项目时,我会牢记维护者的立场。他们有权拒绝。他们可能快要疲惫不堪,而我却向他们请求帮助,尽管他们已经为这个项目的可用性做出了巨大贡献。

因此,共情让我真正地尊重人们,以正确的方式参与其中。你要了解那个代码库,编写那些单元测试,别忘了文档。我认为这是参与任何开源社区的正确方式。

Neha:我认为这个话题讨论非常有帮助。你刚才提到了在周六早上醒来时看到所有的开放问题,我的心跳加快了,因为我知道你无法应对所有的问题。你必须说不,对吗?这就是关键所在。

我们在 The ReadME 项目中有很多维护者分享了他们在管理贡献者关系方面的经验,无论是在早期和较小的项目中,还是在后期和较大的项目中。对于那些希望平衡时间管理贡献的维护者,你有什么建议?我很好奇你能否给他们更多的帮助。像管理时间这样的事情,除了说不之外,你还有什么建议吗?

Kelsey:是的,如果你是一个维护者,我们总是关注技术路线图。下一个版本会有哪些内容?这个项目两年后应该达到什么样的目标?但我们往往忽视了一个隐藏的路线图,即谁将在两年后接手维护这个项目,这个人可能不是你。因此,我认为我们应该早早考虑继任计划。

当你在社区中发现有人积极贡献,并展现出与你一样的关心和热情时,这就是你想要给他们授予提交权限的人选,对吗?他们已经证明了自己的价值。如果你发生了某些情况,比如疲劳不堪、转换工作或不再使用该工具,你希望有其他人能够接替你的角色。

因此,作为维护者,你应该始终考虑下一批维护者是谁,设定一些标准,并尽早确定。这样,你就可以给那些有意愿接手的人提供机会,减轻你的负担,一起合作。

我认为很多时候,当你是一个非常受欢迎的项目的维护者时,你会感觉自己处于上帝模式。你不想放弃这个角色。每个人都对你赞美有加,你的统计数据看起来很好。大家都喜欢在 GitHub 上展示那些图表。

但有时你必须明白,你需要分担一些责任。这就是良好的领导力所在,找到下一批领导者。所以这就是我的建议。要考虑长远发展,这就像你在进行一场马拉松比赛,有时你需要将这场比赛变成接力赛,找到一个在适当时候可以接过接力棒的人。

Martin:是的,我认为我生活中犯过的一些最大错误就是当我的自我膨胀起来并且成为阻碍的时候,不仅在技术细节方面,还包括与开源项目合作。因为我们喜欢得到赞扬,我们喜欢让人们开心,我们喜欢解决问题,所以有时候我不得不退出过去参与的项目。当我退后一步的时候,有时候我会觉得很难,因为好像没有其他人能够填补那个空缺。

但事实上,当我退后一步时,社区反而会受到激发。你知道,有时候你需要一些勇气相信,哪怕在你的劳动没有人感谢的时候,工作仍然是有价值的。当你减少了工作量,并且有其他人可以共同合作时,价值就会以一种不同的方式得到体现。这是一种信任的升级。

Neha:我一直在思考为什么在这样的情况下退后如此之难。我认为其中一个原因是,当你提供免费的劳动时,必须有一些东西让你觉得这是值得的。当人们对你表示感谢和赞赏时,你会觉得这一切都是有价值了。

但是,如果你没有得到这种对免费劳动的感激,就很难意识到工作仍然是有价值的。然而,当你减轻了工作负担并与他人合作时,它最终会以一种不同的方式变得有价值。你正在过渡到一种获得价值的不同方式,而这种过渡是需要一些信任的。

Kelsey:作为开发者,这是我们能够自由构建任何我们想要的东西的清洁画布,对吧?没有 OKR(目标与关键结果),没有公司压力。

对吧?我们有决策权。就像艺术家自由绘画一样,这对于全职或兼职从事开发工作的人来说是一种非常有力的表达方式。你可以按照自己的节奏前进,你可以决定。你可以将你相信应该存在的东西实现出来。这就是我们能够做到的方式。

我非常赞赏一些维护者,他们也经历过这一点。比如 Ben Johnson,我在 CoreOS 工作时遇到过他,他实现了 RATH Library,这是我们用于构建分布式系统的工具。嗯,他是当时唯一的实现者,尤其是以 Go 语言实现的,而且每个人都在使用它。大型商业数据库项目都依赖于此。而他只有一个人来负责维护如此重要的基础设施组件。虽然他从未承认过,但我知道他精疲力尽了。

而在他的新项目中,他做了一件非常明智的事情:在 README 的顶部,他非常明确地告诉你:“我们不打算添加很多新功能。实际上,我们不希望有很多拉取请求。我们目前只评估缺陷修复。你看到的就是它的样子。而这是我对你的承诺:这个东西的功能是有限的。我会尽我最大的努力保持它的真实性。至于新功能,我们不需要。对吧?如果你不能接受这一点,如果你看到右上角,那里有一个神奇的 Fork 按钮。你可以点击它,这段代码就成为你自己维护和添加所有你想要的功能。” 

我认为这是一种正确的做法,尤其是对于一个独立的开发者来说,你知道你的瓶颈是什么。这是一个非常好的做法,给予人们,并且我认为他们可以尊重这一点。

Martin:是的,绝对没错。我从一个叫做 Brad Wilson 的人那里学到了这一点,他负责 Darknet 空间中的 X 单元项目。这个框架非常具有观点性。他很早就非常明确地表达了这一点,就像这是我们的观点。这与你之前提到的有点相关,Kelsey,关于在自己的时间中创作艺术并保持创造力。有些最好的艺术作品也是在一定的限制下产生的。

所以,在早期清楚地向社区阐明这些限制、明确核心理念的同时,帮助人们理解社区的发展方向非常重要。并不是说每 5 分钟就有人会提出:“你能做 X、Y、Z 吗?” 你必须回答 “不行”,因为这是我们的理念。你不得不提醒人们,并偶尔需要这样做。但通常情况下,你会发现社区会提醒人们,你不必亲自去做。

Kelsey:有一句话彻底改变了我对作为维护者意味着什么的看法。这句话是:“有些人有想法,而有些想法有人”,而作为维护者,你就是那个有想法的人。你是项目的守护者。我意识到,创建原型是将这些想法呈现出来并鼓励人们接受并发展这些想法的最佳方式。

所以,看吧,我不会编写任何单元测试。我会编写文档,因为我希望人们能够充分理解这个想法。我希望他们能够用可以触摸和实际可行的东西来探索这个想法,而且有些人真的从中获得了价值。然后我鼓励人们,这只是一个起点。

如果你将其发展得更好,你应该得到所有的荣誉。事实证明,通过以这种方式开展项目,你可以构建更多的项目,并让它们蓬勃发展。所以,你成为了想法的维护者,而不仅仅是开源代码库的维护者。

Martin:是的。嘿,听着,我们不能谈论 Kubernetes 而不触及它。你知道,我知道你一直关注人性方面的问题,实际上你从一开始就参与其中。你如何看它的发展?你如何看社区的变化?还有,你认为 Kubernetes 的未来会怎样?

Kelsey:我的意思是,如果说实话,Kubernetes 的未来是它必须消失。如果它消失了,那将是进步的标志。如果我们在 20 年后仍然在谈论 Kubernetes,那将是科技界一个令人悲伤的时刻,因为我们没有想出更好的主意。

所以我认为很多时候,实际上,上周在 KubeCon 上我遇到一个人,他在前臂上纹了一个 Kubernetes 的纹身。那是一个很酷的纹身,但我想了想,也许这个项目可能不会永远存在,但也许记忆会永远存在。也许这就是纹身的意义所在。

我们正处于第十个年头。我不认为人们意识到现在还很早。对于大多数社交项目来说,Linux 已经有 30 多年的历史了,而 Kubernetes 才十年。想想 Kubernetes,很多人认为它是全新的东西。

但当我看到 Kubernetes 时,早期吸引我的是,这个项目实现了过去十年的模式。所以如果你在 Kubernetes 发布之前十年的时间里就已经存在,你会意识到很多人在他们自己的环境中实验过这些模式。我们最终将所有这些模式整合在一起,并给它们起了个名字,我们称之为 Kubernetes。

所以我认为也许真正的 20 年理念或者,十年,所有的实施已经有十年的历史了。也许我们还有十年的时间。关于社区,有很多人一直在观望。嘿,这个东西可能不会有所成果,只是炒作而已。我们会等待,然后回到我们的虚拟机。

然而,这种情况并没有发生。现在那些从观望中加入的人,他们第一次参加 KubeCon,他们去参加本地供应商的会议,无论是 VM World 还是 Oracle World,这项技术现在在这些会议上都处于核心位置。所以这些人现在第一次加入。当你遇到这些人时,你会感到惊讶,因为他们会说:“嘿,我已经连续观看了你的所有视频,阅读了你的 GitHub,还有《Kubernetes the Hard Way》这本书,帮助我从理解了从基础知识到高级概念,我真的很感激。”

有另一群人在过去五年中一直抱怨 Kubernetes。他们说,“它太复杂了”,“它缺少这个,缺少那个。” “我们已经使用它一段时间了。我们认为它应该迭代。” 当他们问未来会是什么样子时,有一句话说当你正在创造未来时,预测未来很容易。

因此,我看到的是那些试图在 Kubernetes 之上构建新事物的项目。终有一天,其中某个项目会成功。那将是新的出现的东西。但我认为 Kubernetes 非常出色,因为它具有可扩展性。这是我们没有充分讨论的一点。

我们谈论容器和编排,但 Kubernetes 的魔力在于它具有足够的扩展点,用于安全性、存储模块、云提供商集成。所以没有必要去分叉。你想要做的任何创新,Kubernetes 都做出了一个非常明智的决策。

CRD(Customer Resource Definition,客户资源定义)允许你创建在 Kubernetes 中的一流扩展。它们感觉原生,并且它允许你在不完全理解核心代码库的情况下测试新的想法。如果你是一个维护者,最困难的事情就是在不使核心项目偏离轨道的情况下添加新功能。你绝不希望因添加某些东西而分心,使其变得过于臃肿,并且难以维护。

Kubernetes 的 API 模型和插件模型对于所有未来的维护者来说,实际上是一份恩赐。现在,这些人无需费力地将所有功能都加入到 Kubernetes 中。API 使你能够自行实现,而最出色的解决方案将会发展出自己的子社区,并成为 Kubernetes 周围的卫星项目。

Martin:是的,你知道的,挑战和复杂性也很有趣。我们谈到了 CNCF,你看看所有 CNCF 项目的图表,你就会意识到这个领域的一些复杂性。但我看到你一直在做的一件大事,我们所有人都在尽力做的一件大事,就是努力帮助人们找到他们进入技术领域的途径,将他们引入社区。你是如何解决这些固有复杂、快速变化的事物的呢?我们如何使其更广泛可接触,以便人们可以参与其中?

Kelsey:这个讨论大约在六七年前出现,当时最常见的问题是 Kubernetes 太复杂了,有些人认为我们应该只有一个巨大的 shell 脚本,我们也确实有这样一个脚本,叫做 kube-up.sh。如果你运行它,它会为你完成所有的操作。一条命令搞定一切,你只需花 5 到 15 分钟观察所有的技术信息滚动屏幕,然后你可能会想:“它在做些什么。它在做些什么。我相信它最终会完成……” 然后 15 分钟后,你可能会说:“我觉得它已经完成了,但我不确定发生了什么。” 

是的。尽管你可以用一条命令启动一个集群,但你对此并不满意。你明白如果出现问题,你无法理解其中的原因。这就像飞行员在驾驶飞机时睡着了,然后有人说任何人都可以驾驶飞机。你会说,不,我只是购买机票然后坐在座位上。

因此,我决定我们不需要更多的软件,我们需要一些文档。于是,我决定以高难度的方式编写《Kubernetes the Hard Way》,我想向人们展示从头开始构建集群所需的每个微妙步骤。从下载所有二进制文件开始,不走捷径。我希望人们能够逐字逐句地复制粘贴每个命令,反复地、反复地。因为我想让他们了解所有组件如何相互配合。

这样,当他们完成这个拼图时,他们将拥有整体的完整图景。即使他们之后运行脚本或使用托管服务,他们也会更加自信,因为他们了解各个组件是如何运作的。现在,听起来似乎这并不能降低复杂性。但事实证明,当人们了解了某件事的工作原理后,就很简单了,就像当你看到魔术师表演魔术,并向你展示他们是如何做到的,这就不再是魔术了。它只是一个把戏。

因此,我认为需要的是让人们了解如何将所有元素融合在一起,以便他们可以做出选择并进行故障排除和调试。我认为这是其中最重要的一点,就是教育人们这些功能的作用、存在的原因,并确保我们非常耐心。从 Alpha 版本逐步推进到普及给所有人使用的版本。所以,我认为我们可以做的最重要的事情就是确保人们了解它的工作原理,因为虽然这个项目很复杂,但我们不应该因此忽视教育人们的重要性。

Neha:我们一直回到这个反复出现的主题,即在另一端有真实的人类。而软件就是连接人与人之间的桥梁,对我而言,其价值在于接触人们所处的位置,并与他们一起踏上旅程。

如果他们能够参与其中,那么我们就拥有了共同的经历,并能够以此创造出真实的成果。你提到了通过文档的方式来处理这个问题,而这些微小的项目细节往往容易被忽视,但最终却能起到重要的作用。

正如你之前提到的,那些在幕后工作的社区经理们可能并不亲自编写代码,但他们协助各个方面的工作,使整个项目得以成功。一个项目的成功通常依赖于成千上万个这样微小的任务。

我很高兴你提出了这一点。你谈到了如何在技术领域、特别是开源领域创造更具包容性和多样性的未来。我很好奇你是否愿意进一步谈谈这个问题,比如我们如何在技术行业中创造一个更具包容性和多样性的未来,你是否见过在技术行业中促进包容性的成功倡议的例子?

Kelsey:可能有很多成功的倡议,但我们必须记住,其他团体中的很多人也有选择的权利。有很多会议可以参加,有很多项目可以投身其中。因此,如果我们的环境不友好,没有人会自愿选择留下来并为之奋斗,这不合理。

当我加入 Kubernetes 社区时,可以肯定地说,那里没有一个人看起来像我,百分之百如此。在吸引多样性方面,我并没有参与任何明确的项目,也许在其他领域可能有这样的项目,但在那个特定领域我没有参与其中。

然而,我并不知道的一件事是,当时我已经决定不再继续参加会议演讲了。我对在会议上发表主题演讲、进行实时演示感到厌倦,因为这需要花费很多时间,而且会让我脱离日常工作。所以,我必须在这两者之间做出选择,我选择了放弃演讲方面的工作。

所以我发现自己在伦敦。我是这次会议的主持人,也是会议的主席。我还会发表主题演讲,向人们展示可能的艺术。当我做这些主题演讲时,人们并不知道,在幕后,我在调试技术。对我来说,其中很多东西都有点无聊,但有一些实验让我感到特别的兴奋。就像你们都写过代码一样。有时候,当你让某些东西运行起来时,你会跳起小舞,就像说:“哦,我做到了!” 而我试图将这种 “我做到了” 的感觉融入到主题演讲中。

所以当人们观看时,我希望他们也能有同样的感觉。我希望他们能体验到完全相同的感受。所以我就说:“就这样吧,这是我最后一次了。” 然后我下台。如果你曾在会议上发表过演讲,并且做得很好,你会感到非常兴奋。但我已经准备好放手了。然后有人在之后和我交谈,我们一起走到了赞助商展区。然后你开始进行走廊交流,这就是你站在走廊上进行一些侧面对话的时候。

你可以想象一个由八个人组成的圈子,他们站在那里聊天,讨论他们刚刚看到的内容,不同的演讲,他们对于来到这里感到兴奋的事情。而我在这些圈子中想做的一件事是,当有一个新的人走过来时,你会分开,给他一个位置,然后他就站在那里填补空缺。然后有一个长得像我一样的人出现了。

我看着他,然后对他说:“嘿,你可以问我任何你想问的技术问题。这是我擅长的领域。我已经准备好了,不需要任何准备。” 然后他问了一个让我措手不及的问题。他问:“你是如何做到的?你如何一直成为房间里唯一的黑人?”

你可以想象在那个圈子里的其他与会者会想:“哇,这在说明书里可没有提到。” 他们耐心地看着两个黑人进行这个对话,他们想知道答案是什么。而我觉得我没有一个很好的答案。因为在那种情况下,我已经在我的职业生涯中习惯了这样的情况已经有 20 年了。

你知道这很不幸,而且我还没有解决这个问题。但他告诉我的是,现在每个人都同时患上了过敏,可能是季节的原因。对,每个人的眼睛都对过敏产生了反应。就是这样。

然后他说:“嘿,我从来没有觉得自己需要一个导师,直到我在 YouTube 上看到了你。我正在看一个视频,一个长得像我一样的人出现了,向我解释了一个新的复杂的开源项目,他们正在考虑在工作中使用。而你看起来像我。我意识到这是多么重要。所以当我知道 KubeCon 要来伦敦的时候,我决定去参加。而我之前从来没有意识到我需要一个导师。”

然后我们在圈子里没有注意到,因为他说了另一件事:“我带着我的儿子来,这样他就能看到我们不仅可以参加会议,还可以主持会议。我希望他能看到你的行动。你不仅仅是一个按计划安排的人,所有的演讲都很重要,但你在日程中是突出的。看看围绕着你转来转去的人,向你提问的人有很多。” 我低头看到了他的儿子。他把双手放在我的肩膀上,这样他就可以亲眼看到我。我能和他的儿子握手。

在那一刻,我意识到有时候只要出现并且可见,你就给了所有那些认为自己不受欢迎的人许可。他们意识到他们可以购买门票,因为会有和他们相似的人在那里。

所以我现在注意到的是,这些天,也许我在其中起到了一点点作用,我去参加这些会议,长得像我一样的人都在那里,我们不再需要协调了。我们不再需要一个子通道,在那里决定我们要去哪些会议,以确保安全。

我们知道我们应该在那里,我们在那里能够为会议增加很多价值。所以我学到的是,如果你是一个少数群体,在提交演讲提案时虽然很困难,在那里成为唯一的人也很困难,但这是一种必要的邪恶,虽然不公平也不正确,但它能产生很大的影响。

我决定继续演讲。我会尽可能参加所有的会议。我会讲述这些故事。如果我能激励到有更好方法来吸引更多人进入科技领域的人,我会接受这个挑战。

Neha:我沉默了。嗯,你刚才的分享让我非常感动,甚至让我热泪盈眶。非常感谢你的分享,让我很有触动。我需要稍微冷静一下。我认为,当你回顾过去时,现在的开源工作与十年前相比有着很大的不同。你是否面临过一些独特的挑战,或者有不同的动力,特别是你刚刚在会议上所提到的。你可以与那些刚刚开始的人交流,并将这些经验分享给他们。

Kelsey:在早期的科技行业,我遇到了一个普遍的问题,至少对我来说如此。我非常害怕申请工作,因为当你看到工作要求时,它们通常需要拥有超过 50 年的经验,掌握数百个技能。

你会想,这只是一个初级系统管理员的职位,为什么需要这么多不同的技能和如此多年的经验?这让我觉得无法逾越,甚至无法开始。因此,我当时选择了开一家小型电脑店。这其中有很多故事,但相比于满足第一份工作的要求,开店似乎更容易。

当你想要建造一个大门时,你必须找到一个合适的位置,因为门需要覆盖两端来阻止人们进入。但是在开源领域,这种限制不存在。开源就像是一个开放的领域,没有长得足够长的大门可以限制住它。任何人都可以发起一个项目,任何人都可以为项目做出贡献。因此,我觉得开源非常具有吸引力。

对我来说,当我开始接触开源时,没有人去核实我的资格。没有人说:“先填写这份申请。” 相反,他们会说:“嘿,感谢你的贡献,无论大小,无论是代码还是文档。” 这让我感到非常惊讶和开心。

你可以参加任何你想参加的聚会,可以讨论任何你感兴趣的技术话题。而在这个社区中,大部分人都非常乐于助人,迫不及待地愿意向你解释,就像说:“哇,有人和我一样对 Python 感兴趣!” 我试着和我的妻子讨论这些事情,但她完全不感兴趣。然而现在我找到了我的群体,我可以参与其中,与那些志同道合、愿意一起学习的人们共同成长。

我认为人们往往不会意识到,即使是有着不同目标的人,也可以共同合作、共同努力,让彼此获益。很多人并不相信这是可能的,他们认为 “你必须选择一个立场”。然而,在开源领域,我发现这是我参与过的最具包容性的事业之一。

因此,我认为最大的挑战就是向更多的人传达这种可能性。也许我们在开源社区中互相尊重和合作的方式可以影响到其他社会领域,让我们意识到我们可以凭借自己的技能和共同努力为每个人带来好处,这是可以实现的,这是可以接受的。
用户评论