我 16 岁的儿子普拉拉德刚刚走进我们的公寓。“他怎么说???” 我问。“他说‘好的’。”
他轻描淡写,装作很酷,就像许多青少年对父母那样。但我知道他内心非常激动,可能还有点害怕。他刚刚在澳大利亚布里斯班,我们公寓楼隔壁的桌面和角色扮演游戏商店找到了一份工作。
我指导了他如何得到这份工作。我看到他对他们店里卖的游戏很感兴趣。他和他的朋友在那里玩《万智牌》(MTG),几个星期前我回家时,发现我们公寓里有 20 个青少年(是的,二十个!)在玩这个游戏。他参加了最近的 MTG 预售活动,玩了一整天。
“你为什么不问问肖恩你是否可以在店里做兼职?” 我建议道。肖恩是店主。
普拉拉德问了肖恩,肖恩说他那里没有任何需要完成的工作。
“回去告诉他你想获得工作经验,” 我告诉他。 “告诉他你愿意免费工作。这样你就可以向他学习。他经营着一家成功的企业,你可以学习到这些。你可以学习如何成为地下城主,如何举办活动,以及如何进行客户服务。你可能会找到扩展业务的方法。如果这份工作最终没有变成一份有报酬的工作,那么当时机成熟时,你可以根据你的经验在另一家商店找到一份工作。”
所以他进行了那次谈话,他明天开始上班。
GitHub 目前正在对你的软件职业生涯产生影响
2017 年,我在 Medium 上写了我(到目前为止)最受欢迎的文章《GitHub 目前正在对你的软件职业生涯产生影响…》。在那篇文章中,我展望了你如何通过开源贡献发展你的职业生涯。它显然引起了共鸣——在 Hacker News 上获得了 382 个赞和 237 条评论。许多评论都强烈反对它——他们不同意我的主要前提——但我感觉他们没有抓住重点。当时我是一名在红帽公司工作的招聘人员,拥有 10 年的工程经验。
他们说
- 我在工作中的经历是非典型的。没有其他类似的机会。
- 我不知道自己在说什么,因为我是一名招聘人员(他们肯定跳过了我“在红帽公司工作 10 年工程经验”的部分)。
- 对于在 BitBucket 中工作的公司中从事日常工作的开发人员来说,这是一个不切实际的建议。
- 对于在高监管和安全性的金融部门公司工作的开发人员来说,这是不可能的。
- 如果你不愿意牺牲工作之外的生活,这是不可能的。
- 这根本不可能。
没有什么比挑战更让我喜欢的了,所以我进行了“卧底”。我辞去了招聘人员的工作,在一家纯粹的闭源公司找到了一份软件工程师的工作,该公司使用 BitBucket 并具有符合 PCI 标准的安全性。十四个月后,我被 Camunda 聘为 Zeebe(一个用于编排微服务的流程引擎)的开发者布道师,这完全是基于我在那份工作期间的开源贡献。我只是做了我在最初的 Medium 文章的评论中建议读者做的一切。
当我这样做的时候,我没有牺牲我的爱好和家人。事实上
- 我一直在构建我的副业 Magikcraft.io
- 我为 Minecraft for Type 1 Diabetes 举办了一场发布活动,该活动被拍摄并上传到 Mojang 的 YouTube 频道。
- 我和我的妻子一起训练并参加了三场形体比赛——赢得比基尼模特比赛是她的人生目标。她赢得了她的组别,我最终在州级比赛中获得了第二名。
- 我接受了领导个人发展课程的培训。
- 我和我的儿子一起参加了一个为期三个月的课程。
我并不是在吹嘘,只是想表明这不是一个零和博弈,就像有些人描述的那样:“哦,这很容易说,但这优待了那些愿意免费工作并牺牲与家人共处时间的人。”
假的。
当然,对于一开始就得出“这不可能”结论的人来说,再多的证据也永远不够——对于那个人,我想说:“你现在想看到什么?” 这不是为了改变他们的想法,而是因为这对我来说是一个丰富的灵感来源。
误解和稻草人论证
在概述如何做到这一点之前,我想明确指出一些常见的异议,这些异议没有抓住重点
- 你无法从开发人员在 GitHub 上的贡献图中看出任何东西。
- 我雇佣了很多开发人员,但从没看过他们的 GitHub 个人资料。
我只想说:你不会通过你的开源贡献被这些人雇用。这就是这些话的全部含义。关于这一点我还可以说更多,但我不会进一步讨论它们。我还想明确一点:我不是说你必须这样做。只是说你可以。
我是如何做到的
正如我在最初的 Medium 文章中向评论者指出的那样,在你的日常工作中,你可以使用开源库,或者可能可以在新项目中引入一些到你的技术栈中。如果你没有日常工作,那么你可以轻松地将它们引入你的技术栈。
在为我日常工作中的一个新项目做研究时,我尝试了许多不同的项目,包括一个 TypeScript gRPC 服务器。我在其中发现了一个错误,并打开了 一个 issue。然后我为此编写了一个补丁,该补丁被 合并了。我们没有使用那个项目,但这只是作为一个全球社区成员的一部分,就像捡起我们公寓楼或街道走廊里的一张纸。我们最终确实使用了 gRPC 库,并且我们需要它来支持 gRPC 流。所以我为此编写了一个补丁,它被合并了。那次贡献足以让我在 npm 上的贡献者名单中获得提及。

我打开了 issue 并向 Netflix Conductor 提交了 补丁。没什么惊天动地的,只是为我所处的环境做出贡献。
我向管理层解释的一件事是,我们应该采用哪些技术的关键决策因素是 issue 得到解决的速度,以及如果我们为自己的生产用例打补丁,维护者对接受我们的 pull request 到主分支的意愿有多大。在 Camunda 聘用我的过程中,没有人看过这些(回应那些说他们从不看人们在 GitHub 上的贡献的人:“X音素”的评委也不会看你在镜子前练习,只是说说而已)。但是,我要说的是,Google 和 Facebook 的聪明招聘人员会根据观察我的活动来联系我。这不足以找到一份工作,但它确实让人来找你,尤其是在你建立起历史之后。
重大突破
当我们决定使用 Zeebe 作为我们新的微服务项目的编排引擎时,重大突破到来了。我欣喜若狂,因为 Zeebe 有官方支持的 Go 客户端,这是我让我们的团队用 Golang 编写代码的机会。我用它做了一些概念验证和副项目,但我们用 JavaScript 编写代码。然而,六人团队中没有人热衷于进行这种转变,所以我们需要一个 JavaScript 客户端。
我设法在为新项目使用 TypeScript 上达成一致,所以我创建了一个 TypeScript 客户端库。作为公民义务/评估的一部分,我已经记录了一些 issue 并向 Zeebe 贡献了一些小补丁。现在,我向管理层提出了将客户端库开源的想法。我对它的论点有两部分
- 这意味着我们的库有机会成为最广泛使用的库,这意味着它会获得更多关注,并有可能获得来自更广泛社区的补丁。换句话说,我们最终不会维护一些内部的东西,然后在以后发现有一个更广泛使用/支持的库,我们必须基于它进行代码库调整。
- 这是一个很好的开发者营销工具,可以提高我们的知名度,建立我们的工程品牌,并在招聘时使我们与众不同。
我得到了支持。然而,公司没有 GitHub 存在。我通过解释我们需要一个 GitHub 组织才能与 Camunda 的工程师协作来解决了这个问题。这是一家以前没有开源经验的公司。我拥有的优势是我花了 10 年的时间在其中工作,所以我既知道它有效,也知道它如何有效。回顾过去,如果我对“听信评论中的喷子”有丝毫怀疑,我可能就不会像我那样坚持了。
一旦到位,我们就将 该库 发布上线,并将其发布到 npm。随着时间的推移,作为一名公民成员参与开源可以培养出一种对机会的第六感。我可以看到这是一种令人兴奋的技术,它正准备登上蓬勃发展的浪潮——而我们也即将搭上这股浪潮。而且没有 JS 客户端。
因素的调整花了一年多的时间,但如果我当时只坐在办公桌前向 BitBucket 提交代码(是的,我也在向私有的 BitBucket 仓库提交代码),那么我 10 年内都不会看到这样的机会。
我写了一篇 在 Medium.com 上宣布该库的文章。实际上我因此惹上了麻烦。我抢跑了,没有在发布前获得支持。吸取的教训。然而,这个库、这篇文章以及我参与 issue、补丁和 Slack 频道,让我受到了 Camunda 员工的关注。足以让我在寻找另一个职位时,他们迅速采取行动,聘请了他们在澳大利亚的第一个员工——比当地公司行动更快,即使当地公司有他们的时区和已建立的基础设施优势。在与 Camunda 的联合创始人 Berd Rücker 的一次通话中,我分享了为什么我认为这是一个很好的匹配:在红帽公司,我们经常从社区招聘或收购招聘(将整个项目、人员和技术都引入——它是“收购”和“招聘”的混合词)。
我们会找到已经这样做了的人,然后付钱让他们为我们做。通常当你招聘时,你会找到某人,付钱给他们,并希望他们会喜欢他们正在做的事情并且擅长它。招聘开源贡献者可以降低风险。他们仍然可能被证明是很难合作的人,但你已经对你们如何一起工作有了一种感觉,并且你知道他们的工作是什么样的。
这是一个普遍原则
所以,这对我的儿子来说也是一样。他有机会在游戏商店展示价值、建立信任和获得技能。当时机成熟时,他将开始获得报酬——无论是在那里还是在其他地方。
在 2004 年红帽公司的招聘会上,我带了一份我写的 20 页的论文,我在论文中预测了科技的未来:开源吞噬世界;设备缩小到手持设备;涌现的网络效应。我是在工作台工作期间的休息时间写的,当时我在帮旧电脑安装 Linux,这些旧电脑是我花 20 美元买来的。
在最近的一次 Slack 讨论中,有人说:“开源贡献的问题在于它优待了那些有时间去做的人。” 首先,那是开源的机会,而不是问题。其次,每个人都有时间——如果他们使用开源,我还会说他们有公民责任——贡献一些东西。最后:是的,没错。这就像那些有时间每个星期五晚上在俱乐部和酒吧演出,并在卧室里练习技巧的人,他们有幸被 A&R 星探发现并获得唱片合约。
披头士乐队 在汉堡连续演出了两年,以磨练他们的技能。作为一名专业的软件开发人员,如果你无论如何都要磨练你的技艺,你还不如以一种有助于更大的公民利益和你自己可携带的公共声誉的方式来做。
或者不。随便。我只是说这是有可能的。
本文最初发布在 DEV Community 上,经修订并获得许可转载。
2 条评论