要招到顶尖人才?那就开源你的代码吧

阅读数:2470 2018 年 11 月 26 日

“你是否了解 Facebook 的开源软件过程?”

Facebook 开源项目前负责人 James Pearce 在了解工程师为什么要加入公司时,通常会问他们这个问题。Pearce 在 O’Reilly 开源大会的演讲中透露,有三分之二的 Facebook 工程师在加入公司之前就已经知道 Facebook 的开源项目过程,有一半的工程师表示:“这对他们决定加入 Facebook 起到了积极的作用”。

Facebook 在这个方面并不孤独。无论公司规模如何,开源代码对他们来说都是招聘到顶级工程师的最佳方式之一。我们分析了 AngelList 上有史以来应聘最多的 30 家美国科技公司,发现其中一半以上有提供开源项目:

image

但将开源项目作为招聘手段其实是一门艺术——你需要做的不仅仅是向 GitHub 发布代码。要想从开源代码中获得招聘方面的好处,你需要以营销人员的心态来对待每个项目。

1. 编写任何工程师都读得懂的代码

开源软件的目的是让外部工程师能够看到它,并可能一起参与贡献。为此,代码必须让外部工程师能够看得懂。这意味着:

  • 重构你的代码,让它们尽可能简单;
  • 遵循名称、空格等样式约定;
  • 使用环境变量替代私有信息;
  • 注释好你的代码。

Atlassian 的 react-beautiful-dnd 项目(https://github.com/atlassian/react-beautiful-dnd) 就是一个用于在 React 中构建拖拽界面(像 Trello 那样)的工具,是这方面的一个很好的例子。

这个项目的结构是模块化的,代码加了很多注释,非常易于阅读:

image

在开源代码时,让阅读代码的人在没有看到代码库其余部分时仍然能够读懂它们——因为他们几乎肯定没有度过其余的代码。在上面的示例中,即使是一个简单的导出,Atlassian 的团队也用注释来解释每个函数的作用,选择能够准确反映它们的值的属性名称,并保持一致的样式。

这个代码库在 GitHub 上的 Star 数超过了 10,000,并且有数十个贡献者。道理很简单:外部工程师越容易理解你的代码,他们就越有可能参与贡献。

2. 编写好的文档

文档就是你的销售说明。工程师一看到它,就相信你的项目是值得他们做出贡献的。文档需要:

  • 阐明项目的价值主张;
  • 阐明你对贡献者的期望;
  • 列出技术规格、依赖关系和许可;
  • 为特殊用例提供易于访问的参考资料。

Spotify 的 Annoy 是一个“搜索空间中接近给定查询点的点”的库,它在这方面就做得非常好。它的 README 文件种提供了安装说明、项目背景、代码示例、许可证、依赖项以及深入了解底层软件逻辑的信息。

它还提供了 Annoy 与其他库在速度方面的测试基准对比:

image

只需一页文档,工程师就可以获得所需的信息,以确定 Annoy 是否是他们想要参与贡献的项目。

3. 像产品发布一样推广你的项目

2018 年,每天有超过 82,000 个代码库发布到 GitHub。要让你的代码库在众多其他产品中脱颖而出需要付出努力并制定好的战略,这与推出产品也有些相似的地方。为了提高知名度,请考虑在以下几个地方推广新代码库:

  • 高流量网站:Hacker News、Reddit、Tech Ladder;
  • 相关社区:Product Hunt、Gitter、Dev.to(注:AngelList 于 2016 年收购了 Product Hunt);
  • 相关频道:电子邮件、社交媒体等。

你还可以从其他营销策略中获得灵感。例如,Hack4Impact(一个为其他非营利组织开发软件的非营利组织)的团队在当地大学开设工程研讨会,要求学生使用他们的新库,增加早期的 Fork 和 Star 数。

对于需要从较小的领域招聘工程师的公司来说,推广代码库则更为重要。Wallaroo Labs 是一家帮助客户启动大规模数据运营的创业公司,他们的代码库使用了一种叫作 Pony 的语言。当这家公司于 2017 年和 2018 年之间公开所有代码时,开始进行大量推广、撰写博文、参加访谈,并在技术大会上介绍为什么他们要采用 Pony。

Wallaroo 工程副总裁 Sean Allen 表示:“与我们面谈的人中有相当一部分人是在使用 Pony 或对 Pony 感兴趣的同僚,我们的代码库是最大的公开 Pony 代码库。”

将你的代码库视为一种产品,并把你希望参与贡献的工程师视为你的市场。

为什么顶尖工程师需要开源

Artsy CTO Daniel Doubrovkine 说:“如果你想要招到最优秀的人才,公开性是必要的”。他解释说,原因在于“个人工程品牌对于个人贡献者来说真的非常重要。如今的工程师们不太愿意让他们的技能停留在一个地方而不能展示它们。他们希望提高可见度,而这样做可以给他们带来一些可见度。”

为了实现这个目的,Doubrovkine 让他的工程团队采用“默认”开源的工作方式——也就是说,除非工程师有理由不公开发布代码,否则就必须发布到公共代码库中。因此,Artsy 的大部分工程资料都是免费提供的。他说:“最好的公司将业务需求与个人贡献者的愿望结合起来,以创造他们的个人品牌”。

事实上,Artsy 的工程师需要公开分享他们的代码,并在代码中署名。在 Doubrovkine 的招聘宣传中,这些被作为一个卖点,而这一点对于其他公司来说也同样有参考意义。

GitHub 联合创始人 Tom Preston-Werner 说:“聪明的开发者喜欢与聪明的代码打交道。当你开源有用的代码,就会吸引到人才。”

英文原文:https://angel.co/blog/want-to-recruit-better-engineers-open-source-your-code

活动推荐


12 月 7 日北京 ArchSummit 全球架构师峰会上,来自 Google、Netflix、BAT、滴滴、美团 等公司技术讲师齐聚一堂,共同分享“微服务、金融技术、前端黑科技、智能运维等相关经验与实践。详情点击 https://bj2018.archsummit.com/schedule