构建一个包容性的代码库

250 阅读7分钟

我们减少非包容性术语的游戏手册

作者:Michael Bachand, Amanda Vawter, Dan Federman, Jake Silver, Julia Wang, Mark Tai Michael Bachand,Amanda Vawter,Dan Federman,Jake Silver,Julia Wang, Mark Tai

代码是我们的工艺。在Airbnb,我们认为我们的代码和产品是我们价值观的体现。每个开发人员都在他们的工作中注入了自己的一部分。我们希望所有的工程师都能为他们工作的代码库和他们每天使用的系统感到自豪。

我们想和大家分享一下我们在Airbnb所做的一些工作,以建立一个包容性的工程文化。我们希望通过分享我们的故事,能够激发和支持类似的努力,以消除整个行业的非包容性术语。

引导变革

Airbnb的使命是创造一个任何人都可以属于任何地方的世界。对代表性不足的群体持续的暴力和偏见威胁着归属感和平等。增加Airbnb工程部的多样性将使我们的团队能够更好地赋予Airbnb房东为Airbnb客人服务的能力。来自各种背景的Airbnb工程师在为Airbnb做出贡献时,必须要有归属感。

2020年夏天,我们在Airbnb的技术栈中发现了一些有损于我们核心价值--归属感的条款。团队成员在Slack频道中主动组织了一次志愿者活动,与来自受影响社区的员工合作,将变革付诸实施。我们共同撰写了一份提案,以解决我们代码库中的非包容性术语。在一个月内,我们向我们的首席技术官提交了该提案。然后,他将这项工作列为优先事项,配备专门的工程师时间,使我们的代码和系统更具包容性。

来自最高管理层的认可和资源配置使这项工作合法化。个人采取的小行动也进一步加强了这项工作的合法性。每一项任务、拉动请求的评论和Slack的反应都发出了一个信号,即这项工作受到了企业的重视。

建立新的习惯

我们认为非包容性的术语是我们想要消除的一种传统的编程风格。为此,我们首先测量了我们代码中非包容性术语的使用情况。然后,我们把问题分成两部分:防止这些术语的新添加和减少这些术语的现有实例。

为了解决第一个问题,我们引入了一个链接器,以标记那些引入Airbnb认为不包容的术语的拉动请求。linter对每个增加了包含一个或多个这些术语的拉动请求进行评论。拉动请求的评论建议使用替代术语。

包容性衬垫员发布的GitHub评论示例。

为了与工程师建立信任,我们专注于使linter可操作。我们希望作者能够在他们现有的拉动请求中解决linter的评论,而不需要在其他仓库中编辑代码。因此,我们在对拉动请求进行润色时,倾向于排除第三方代码和从上游存储库拉来的代码。

我们首先将linter引入各个仓库,一次一个。我们请在该代码库中知名的开发者来推动最初的推广工作。这些当地的专家能够判断哪些目录应该被排除在linter之外,同时也得到了该代码库中其他开发者的信任。

我们发现,在提高意识和限制添加新术语方面,非阻塞式烧结器已经取得了成功。我们并不阻止工程师合并他们的拉动请求。我们的信念是,通过适当的沟通,工程师会意识到这是一个商业优先事项。

现在,我们在Airbnb的所有内部存储库中都运行了linter。我们已经把注意力转移到减少现有的违规行为上了。

加强我们的方法

对于这些最初的词汇,员工资源小组(ERG)的成员,如Black@和Able@,都参与了采购冒犯性词汇列表和实施这些改进。就背景而言,ERG为员工提供了专门的空间,让他们围绕共同的特点、兴趣和生活经历聚集在一起。Black@代表非裔美国人和黑人员工,Able@支持那些有残疾、慢性病或心理健康状况的人。在Airbnb,我们有19个员工资源小组。

我们还回顾了整个行业的类似举措,以寻求灵感,包括谷歌关于编写包容性文件的指南Twitter关于包容性语言的帖子。我们专注于一个初步的术语清单,这个清单既要足够大,以推动有意义的影响,又要足够小,以避免让工程师们不知所措。

这项工作的动机是让每个人在从事Airbnb代码和系统工作时都有归属感。为此,我们创建了一个匿名的反馈表,让任何工程师都有机会浮现他们的想法。

工程师可以通过谷歌表格提交匿名反馈。

匿名反馈导致了具体的改进,最明显的是在我们的术语列表中。例如,我们最初建议工程师用 "遗留状态 "取代 "祖父"。匿名反馈告诉我们,"遗留状态 "在许多情况下不是一个可行的替代方案,所以我们将建议的替代方案改为 "豁免"。

匿名反馈还强调,我们不清楚为什么要为每个术语加上标记。具体来说,一些员工想知道为什么 "假人 "会出现在我们的列表中。对于每个非包容性的术语,我们现在记录了我们的理由和该术语的历史。我们在林特人发布的每个拉动请求评论中都链接到这些资源。我们觉得有责任让工程师们容易理解我们为什么要求他们修改代码。

我们认为这个项目是一个长期的举措,永远不会完成。随着世界的发展,我们将需要更新我们的非包容性术语列表,并更新我们的代码以反映我们当前的价值观。我们正在建立一个透明的程序来扩大我们的非包容性术语清单。一个包括受影响社区代表在内的多元化小组将与所有利益相关者密切联系,逐一审议每个拟议的术语。这个过程将考虑该术语对个人和社区的影响,与公司价值观的一致性,以及在我们的代码库中取代该术语所需的工作范围。

展望未来

我们不能逃避历史,但我们可以告知未来。消除非包容性的术语是我们在Airbnb和整个技术社区所做的更大努力的一部分,以使来自所有背景的工程师感到被倾听、欢迎和重视。

消除那些不能反映我们价值观的语言,向Airbnb的工程师们表明,我们关心他们,他们确实属于我们,而且他们被看到并受到尊重。

分享我们的工作

感谢你对促进技术领域的包容性的兴趣。我们对这项工作在Airbnb内部以及作为我们同行公司中更大努力的一部分所能产生的影响感到乐观。

为了支持整个行业的类似努力,我们已经公开了我们认为非包容性的术语清单。我们将这些术语作为一个简单的数据文件发布,可以与其他公司的工具和系统整合,也可以根据不同的情况进行分叉和进化。我们用这个数据文件为我们的内部linter提供动力。


构建一个包容性的代码库》最初发表在《Airbnb技术博客》上,人们在Medium上通过强调和回应这个故事继续对话。