如何通过贡献开源项目来提升你的职业生涯

真实故事:一位招聘人员辞掉工作,贡献开源项目,获得软件工程师职位。
179 位读者喜欢这篇文章。
Shaking hands, networking

我 16 岁的儿子 Prahlad 刚刚走进我们的公寓。“他怎么说???”我问。“他说‘是的’。”

他轻描淡写,装作很酷,就像许多青少年对父母那样。但我知道他内心非常激动,可能还有点害怕。他刚刚在澳大利亚布里斯班的公寓楼隔壁的桌面和角色扮演游戏商店找到了一份工作。

我指导他如何得到这份工作。我看到他对他们那里卖的游戏很感兴趣。他和他的朋友在那里玩万智牌 (MTG),几周前我回家时,发现我们公寓里有 20 个青少年(是的,二十个!)在玩这个游戏。他参加了最近的 MTG 预发布活动,玩了一整天。

“你为什么不问问肖恩你是否可以在店里做兼职?”我建议道。肖恩是店主。

Prahlad 问了肖恩,肖恩说他那里没有任何工作需要做。

“回去告诉他你想获得工作经验,”我告诉他。 “告诉他你愿意免费做。这样你就可以向他学习。他经营着一家成功的企业,你可以学习到这些。你可以学习如何成为地下城主,如何举办活动,以及如何进行客户服务。你可能会找到扩展业务的方法。如果这没有变成一份有报酬的工作,当时机成熟时,你可以根据你的经验在另一家商店找到工作。”

所以他进行了那次谈话,他明天开始上班。

GitHub 目前对你的软件职业生涯的影响

2017 年,我写了迄今为止最受欢迎的文章,“GitHub 目前对你的软件职业生涯的影响…”,发表在 Medium 上。在那篇文章中,我展望了如何通过开源贡献来发展你的职业生涯。它显然引起了共鸣——在 Hacker News 上获得了 382 个赞和 237 条评论。许多评论都强烈反对——他们不同意我的主要前提——但我认为他们没有抓住重点。当时我是一名在 Red Hat 工作的招聘人员,拥有 10 年的工程经验。

他们说

  • 我在工作中的经历是非典型的。没有其他类似的机会。
  • 我不知道自己在说什么,因为我是一名招聘人员(他们一定跳过了我的“在 Red Hat 工作 10 年工程经验”部分)。
  • 对于在 BitBucket 工作的公司中从事日常工作的开发人员来说,这是一个不切实际的建议。
  • 对于在金融行业中工作且监管和安全性高的公司中的开发人员来说,这是不可能的。
  • 如果你不愿意牺牲工作之外的生活,这是不可能的。
  • 这根本不可能。

没有什么比挑战更让我喜欢的了,所以我进行了“卧底”。我辞去了招聘人员的工作,在一家纯粹的闭源公司找到了一份软件工程师的工作,该公司使用 BitBucket 并具有符合 PCI 标准的安全性。十四个月后,我被 Camunda 聘为 Zeebe 的开发者布道师,Zeebe 是一个用于编排微服务的 Workflow 引擎,这完全是基于我在那份工作期间的开源贡献。我只是做了我在最初的 Medium 文章的评论中建议读者做的一切。

当我这样做的时候,我没有牺牲我的爱好和我的家人。事实上

  • 我继续发展我的副业 Magikcraft.io
  • 我为 Minecraft for Type 1 Diabetes 举办了一个发布活动,该活动被 Mojang 的 YouTube 频道拍摄了下来。
  • 我和我的妻子一起训练并参加了三场形体比赛——赢得比基尼模特比赛是她的人生愿望清单之一。她赢得了她的组别,而我最终在州级比赛中获得了第二名。
  • 我接受了领导个人发展课程的培训。
  • 我和我的儿子一起上了一个为期三个月的课程。

我这么说不是为了吹嘘,只是想表明这不是一个零和游戏,就像有些人描绘的那样:“哦,这很容易说,但这优待了那些愿意免费工作并牺牲与家人共处时间的人。

错。

当然,对于一开始就得出“这不可能”结论的人来说,再多的证据也永远不够——对于那个人,我想说:“你现在想看到什么?” 这不是因为它会改变他们的想法,而是因为它是我灵感的肥沃来源。

误解和稻草人论证

在概述如何做到这一点之前,我想明确指出一些常见的异议,这些异议没有抓住重点

  • 你无法从开发人员在 GitHub 上的贡献图中看出任何东西。
  • 我雇佣了很多开发人员,但从未看过他们的 GitHub 个人资料。

让我这样说吧:你不会通过你的开源贡献被这些人雇用。这就是所有这些话的意思。关于这一点我还可以说更多,但我不会再进一步讨论它们。我还想明确一点:我不是说你必须这样做。只是你可以

我是如何做到的

正如我在最初的 Medium 文章的评论中指出的那样,在你的日常工作中,你可以使用开源库,或者可以在新项目中引入一些到你的技术栈中。如果你没有日常工作,那么你可以轻松地将它们引入到你的技术栈中。

在为我日常工作中的一个新项目做研究时,我尝试了许多不同的项目,包括一个 TypeScript gRPC 服务器。我发现了一个错误,并打开了 一个 issue。然后我为此编写了一个补丁,该补丁被 合并。我们没有使用那个项目,但这只是成为全球社区成员的一部分,就像在我们公寓楼的走廊或街道上捡起一张纸一样。我们最终确实使用了 gRPC 库,我们需要它来支持 gRPC 流。所以我为此编写了一个补丁,它被合并了。这一贡献足以让我在 npm 上的贡献者中获得提及。

Screenshot of node-grpc-client authors

我打开 issue 并向 Netflix Conductor 提交了 补丁。没什么惊天动地的事情,只是为我所居住的环境做出贡献。

我向管理层解释的事情之一是,我们应该采用哪些技术的关键决策因素是 issue 得到解决的速度,以及如果我们为自己的生产用例修补了某些东西,维护者对接受我们的拉取请求到主流有多大的接受度。在 Camunda 聘用我的过程中,没有人看过这些(回调给那些说他们从不看人们在 GitHub 上的贡献的人:“X-Factor”评委也不会看你在镜子前练习,只是说说而已)。但是,我要说的是,Google 和 Facebook 的聪明招聘人员会根据我的活动来联系我。这不足以找到一份工作,但它确实会让人们来寻找你,尤其是在你建立起历史之后。

重大突破

当我们决定使用 Zeebe 作为我们新的微服务项目的编排引擎时,重大突破来了。我欣喜若狂,因为 Zeebe 有一个官方支持的 Go 客户端,这是我让我们的团队用 Golang 编码的机会。我用它做了一些概念验证和副项目,但我们通常用 JavaScript 编码。然而,六人团队中没有人热衷于做出这一转变,因此我们需要一个 JavaScript 客户端。

我设法就为新项目使用 TypeScript 达成了共识,所以我创建了一个 TypeScript 客户端库。作为公民义务/评估的一部分,我已经记录了一些 issue 并向 Zeebe 贡献了一些小补丁。现在,我向管理层提出了将客户端库开源的想法。我对它的论证分为两部分

  1. 这意味着我们的库有机会成为使用最广泛的库,这意味着它会获得更多的关注,并有可能从更广泛的社区获得补丁。换句话说,我们最终不会在内部维护某些东西,然后在稍后发现有一个更广泛使用/支持的库,我们必须基于它进行重新构建。
  2. 这是一个很好的开发者营销工具,可以提高我们的知名度,建立我们的工程品牌,并在招聘时使我们与众不同。

我获得了共识。但是,该公司没有 GitHub 存在。我通过解释我们需要一个 GitHub 组织才能与 Camunda 的工程师协作来解决了这个问题。这是一家以前没有开源经验的公司。我拥有的优势是我花了 10 年的时间从事开源工作,所以我既知道它有效,也知道它如何有效。回顾过去,如果我对“评论中的喷子”有丝毫怀疑,我可能就不会像我那样坚持下去了。

一旦到位,我们就将 该库 发布上线,并将其发布到 npm。随着时间的推移,参与开源作为公民成员可以培养的一种能力是对机会的第六感。我可以看到,这是一项令人兴奋的技术,它注定要登上上升浪潮——我们也将搭上这股浪潮。而且没有 JS 客户端。

因素对齐花了一年多的时间,但如果我坐在办公桌前提交到 BitBucket(是的,我也在向私有 BitBucket 仓库提交代码),那么我 10 年内都看不到这样的机会。

我写了一篇 关于 Medium.com 的文章,宣布了该库。实际上我因此惹上了麻烦。我操之过急,在发布之前没有获得共识。吸取教训。然而,该库、文章以及我参与 issue、补丁和 Slack 频道引起了 Camunda 人员的注意。足以让我在寻找另一个职位时,他们迅速采取行动,聘请了他们在澳大利亚的第一个员工——比当地公司行动更快,即使当地公司拥有时区和既定的基础设施优势。在与 Camunda 的联合创始人 Berd Rücker 的一次通话中,我分享了为什么我认为这是一个很好的匹配:在 Red Hat,我们经常从社区雇用或收购(将整个项目、人员和技术都带入——它是“收购”和“雇用”的混合词)。

我们会找到已经这样做的人,然后付钱让他们为我们做。通常当你雇用某人时,你会找到某人,付钱给他们,并希望他们会喜欢他们正在做的事情并且擅长它。雇用开源贡献者可以降低风险。他们仍然可能被证明是很难共事的人,但你已经对你们如何一起工作有了了解,并且你知道他们的工作是什么样的。

这是一个普遍原则

所以,我的儿子也是一样。他有机会在游戏商店展示价值、建立信任和获得技能。当时机成熟时,他将开始获得报酬——无论是在那里还是在其他地方。

在 2004 年 Red Hat 的招聘会上,我带来了一份我写的 20 页的论文,我在其中预测了科技的未来:开源吞噬世界;设备缩小到手持设备;涌现的网络效应。那是在我做服务台工作期间的休息时间写的,当时我在旧电脑上安装 Linux,这些旧电脑是我花 20 美元买来的。

在最近的一次 Slack 讨论中,有人说:“开源贡献的问题在于它优待了那些有时间去做的人。” 首先,那是开源的机会,而不是问题。其次,每个人都有时间——如果他们使用开源,我会说他们有公民责任贡献一些东西。最后:是的,没错。这就像那些有时间每周五晚上在俱乐部和酒吧演出并在卧室里练习技巧的人,他们很荣幸能够被 A&R 星探发现并获得唱片合约。

披头士乐队 在汉堡连续演奏了两年,以磨练他们的技能。作为一名专业的软件开发人员,如果你无论如何都要磨练你的技能,你最好以一种有助于更大的公民利益和你自己的可移植的公共声誉的方式来做。

或者不。随便。我只是说这可能的。


本文最初发表于 DEV Community,经修订并经许可转载。

标签
User profile image.
关于我:我是 Zeebe.io 的开发者布道师,Zeebe.io 是一个用于微服务编排的开源 Workflow 引擎;Red Hat 校友;CoderDojo 导师;Magikcraft.io 的创始人;MCT1 “Minecraft for Type 1 Diabetes” 项目的贡献者;以及一位父亲。

2 条评论

有时我看到公司或招聘人员要求查看开源项目和工作。人们可以反过来要求查看或搜索公司的开源贡献!

比这更好的是研究公司并为他们的开源项目做出贡献。这就是你如何在那里找到工作的方式。你不会有机会询问最好的公司——因为他们已经雇佣了积极贡献的人。

回复 作者 Châu (未验证)

© . All rights reserved.