上回,我们谈到了 Tubi 招聘高水平小众技术语言开发者的有效方法;之后,我们采访了 Tubi 小众技术语言工程师们,了解他们如何做出了技术语言的选择,在学习、求职和个人技术影响力打造方面的经验。 本文将从求职者 / 开发者的角度出发,与你分享:
2018 年前后,Tubi 正要重构 Ad Server 和后端服务,陈天回忆当时的场景是这样的:“当时 Tubi 的主要技术栈是 PHP 和 Node.js,在评估的过程中,我们首先划掉了 Java 和 Node.js,虽然这两种技术语言的人才供给量很大,但鱼龙混杂,与大公司相比,当时的 Tubi 大浪淘沙,能招到顶尖工程师是很有困难的。 接着,我们划掉了 Python,当时 Python 处在 Python 2 到 Python 3 迁移的混沌过程中,主流的框架还在观望,而我们自己还缺乏大规模实践 Python 的底蕴。对于新兴语言,Go 并不讨喜的语法、有限的表达力和很多实现都倾向于短平糙的社区习惯,使得我们很担心项目做大后,容易产生意大利面条似的代码,重蹈我们使用 PHP 的覆辙;而当时尚处在襁褓之中的 Rust,虽然惊艳,但它太过小众,又偏底层,太考验开发者的学习能力,我们很难把赌注压在它身上。 最终白板上留下的选择是 Elixir 和 Scala,这两种技术语言相对小众,公司一般不会选用这样的语言作为主要技术栈,而我们在 Tubi 内部已经做了一些反响很好的尝试,所以我们很有信心用好它们,同时,缺少了主流公司的竞争,我们也有更大的机会招聘到顶尖的工程师。” ⬇️ 点击图片,Tubi 正在招聘 Scala/Java 工程师 ⬇️ 同样地,一位程序员选择使用小众语言,可供选择的工作机会数量不一定多,但这也意味着与你形成直接竞争关系的开发者数量相对较少,更多的岗位机会和工作中的项目机会可以流向你。同时,在较少人涉足的小众语言中探索并深入,意味着你有更多的可能性成为某个特定领域的专家,在某一细分方向保持竞争优势。选择小众技术语言,会增加自身的独特优势,但同时会不会带来视野的窄化? Tubi 后端工程师 Dave 在从事技术开发工作多年之后,加入 Tubi 时决定从 Go 语言转到 Elixir,他坦言这一转变在同行友人看来是有风险的,比如公司会不会只是短期选择 Elixir,在一个小众技术语言上投入的时间和精力会不会白费?但这些疑问在 Dave 学习和使用 Elixir 的过程中烟消云散,他说:“我立刻被 Elixir 的简单所吸引,感到被电击中一样。对这门新技术语言的探索本身就是很有收获的一段经历。” ⬇️ 点击图片,听 Dave 的更多分享 ⬇️ 与 Dave 经历了同样转变的后端工程师 Yilong 则是被 Elixir 本身的功能和开发体验所俘获,他说:“使用了 Elixir 一段时间后,我感受到了它浓郁的函数式编程风格和 immutable 变量的好处,可以避免很多不必要的麻烦。同时,Elixir 生态系统中有许多共享的库和 convention。例如,我目前所见的第三方库都使用集成 Ecto 进行数据库操作,这对于 Elixir 的生态发展非常重要。学习一个新的库,只需要掌握其独特部分,其余部分都是熟悉的。总的来说,除了动态类型可能导致重构代码时有点困难外,使用 Elixir 的体验非常不错。”与中途选择小众技术语言的工程师相比,在职业初期便使用小众语言的工程师自带一份从容。 Tubi Director of Software Engineering, Taotao 当被问及“成为小众语言开发者会有什么优势和挑战”时,他说:“我自始至终都在使用较为小众的技术语言,早年也会担心这会不会影响我的职业发展。但是,随着工作经验的增加,尤其是在基础知识、系统知识、架构设计和解决问题方面的积累,我认为使用哪种技术语言并不会成为职业发展的阻碍。相对于使用何种技术语言,更关键的是解决问题的能力。真的不需要将语言看的太重,语言只是一门工具,用得趁手就行。” Elixir-gRPC & Elixir-Protobuf 作者 Tony Han,也是从 Tubi 毕业的校友,他也认同“相对于技术语言本身,自身的技术水平与影响力也很关键”,他进一步解释说:“任何一门技术语言都有适用的场景,一家公司会选择使用小众语言,说明了这家公司认为这门语言比较契合它的生产场景,而一位精通这门语言的开发者一定也是想做这些场景的事情的,如此来看,开发者反而更容易找到合适的工作。当然,前提是这位开发者的技术能力很强,其他能力也强,你刚好会公司所需要的这门小众技术语言有时候只是一个加分项。”⬇️ 点击图片,阅读 Elixir-gRPC 技术博客 ⬇️ 学习一门小众技术语言的独特路径你会开始学习一门小众语言,通常是因为你被它的某些独特特性所吸引,或者是它能解决某些问题。在 Erlang / Elixir / Rust 都有不错积累和技术影响的 Tubi 校友 Tony Han 在谈及自己掌握一门小众技术语言的经验时,分享说:“我学习 Elixir,是因为它可以提供基于 Erlang 的强大并发能力以及简洁易用的语法等。在学习过程中,我会将 Elixir 与我了解的其他语言做比较,辨别 Elixir 的优势与不足。随着进一步深入学习,最好可以写一些具体的项目。”这一学习路径,其实与掌握一门主流技术语言的路径几乎一样。不同之处在于,小众技术语言可供开发者学习与研究的生产实践用例、工具和库方面的支持会相对较少,甚至很多资源都是英文的,学习难度再次增加。此时,开源社区便可以在这些方面发挥一些补充作用。在 Tubi 赞助组织 Elixir & Scala Meetup 之前,Elixir 和 Scala 中文社区已经有了不少活跃用户。Tubi 作为使用 Elixir / Scala 的最大公司之一,在这两个技术社区中贡献了大量的生产实践用例和开源项目,为这两门技术语言的爱好者补充了丰富的学习资源。 ⬇️ 点击图片,阅读 Scala Meetup 往期回顾 ⬇️ 小众技术语言通常具有较小的生态系统和社区支持,这意味着开发者可以更轻松地掌握这些语言的基础知识,并在项目中快速应用;但同时,因为小众语言社区的友好与灵活,很多开发者有机会在早期深度参与到各种开源项目中,技术语言的迭代速度也会更快,需要持续地学习。Tubi Senior Tech Lead, Yiming 在解决了一个潜藏在 Elixir 代码库里 7 年的性能问题时,坦言:“向 Elixir 贡献 PR 可能是一个开发者能享受到的最好的开源体验了—— 10 分钟不到,你的代码就被合并进主干分支了!” Yiming 也在一次又一次的贡献中建立了自己在 Elixir 领域的技术影响力,成为了中国地区多个 Elixir Meetup 的分享嘉宾,甚至成为了 2022 Elixir US Conf 大会上唯一的中国分享者。 ⬇️ 点击图片,观看 Yiming 分享 ⬇️ 综上,掌握甚至精通一门技术语言,最好的方法还是参与甚至贡献开源社区,找到有着同样感兴趣的人,在交流与实践中深入自己的理解。对函数式编程有兴趣的开发者,尤其是 Elixir / Scala 开发者,欢迎留言,加入 Tubi 赞助与组织的 Meetup 中! 技术语言小众求职之路也不传统 如果你还记得 Tubi 针对团队使用的技术栈小众带来的招聘难而采用的方法,你便会十分清楚,作为使用小众技术语言的开发者,你可以去哪里找到合适的工作。 第一,“混社区”。参与与你使用的小众技术语言相关的开源项目和社区,积极贡献代码和参与讨论,不仅可以帮助你快速学习提升自己,也有可能引起潜在雇主的关注。许多公司在搭建服务时会从开源项目中获益,对于开源项目的重要贡献者自然会产生很好的印象。事实上,通过这种途经被雇主发现并邀请加入团队是很常见的。 较早期加入 Tubi 写 Elixir 的 Tony Han 在学习 Elixir 时,对优秀的开源项目都会积极关注,其中就包括 Maru 这个项目。Tony 分享说:“我发现 Maru 这个项目原来也是国人写的,就会特别留意,甚至后面找到了机会与这一项目的作者成为了‘网友’,而这位作者当时就在 Tubi 美国总部工作,通过他我知道了 Tubi 中国团队正在招聘 Elixir 工程师。我自己其实也有开发 Elixir-gRPC 相关的项目,起初这个项目偏实验性质,我自己将它当作一个学习项目来写的;后来听说 Tubi 想尝试将 Elixir-gRPC 用在公司内部项目中,经过与一些 Tubi 优秀工程师的交流,我感觉会很有意思,干脆直接加入了 Tubi ,全职写 Elixir。” 第二,与使用小众技术语言的公司或项目建立直接联系,这也是获得就业机会最高效的路径了。Tubi 赞助并组织的 Elixir Meetup 中,每一场活动都有 3-4 位来自不同公司或项目的开发者带来分享,通过这些项目我们可以认识很多运用 Elixir 构建的系统和服务,也认识这些项目的核心负责人,快快留言加入 Tubi 赞助与组织的函数式编程 Meetup,为自己创造更多的职业机会! 第三点是最值得你关注的。因为无论你有多少求职路径、使用哪一门技术语言,持续积累技术经验与能力,并逐步打造个人技术影响力总是最关键的。 欲知如何有效地打造个人技术影响力,请听下回分享!🌟星标关注公众号,听 Tubi 中国团队的同事们讲故事。 点击原文,加入Tubi! 上一篇:编译器工程师眼中的好代码(1):Loop Interchange 下一篇:大疆 VS “白帽子”,到底谁威胁了谁? |