当 Tubi 遇到 Ruby

有人说 Tubi 作为 RubyConf China 金牌赞助商,明明用极具吸引力的 Elixir 后端工程师岗位和高品质的 Elixir Meetup,“拐走了”一批又一批 Rubyist 投身于 Elixir 开发中,却依然让人想在 Tubi 展台前多停留一会儿。

为什么工程师、校友甚至 Ruby 社区颇具影响力的人物都愿意来为 Tubi 站台?为什么选择小众技术语言 Elixir 构建后端服务,并长期支持 Elixir 中国社区的建设?这是一个什么样的职场环境,让 RubyConf 现场观众惊叹每年有两次 Outing,还有着“有灵魂”的工作文化?

本文将从两个方面与你分享,Tubi 与 Ruby 的故事:

  • Rubyist 眼中的 Tubi
  • 加入 Tubi 的 Rubyist 后来怎么样了
  • Tubi 与 Ruby 的故事。

Rubyist 眼中的 Tubi

初印象:是一个专业稳定的科技公司

“我是在 RubyConf 2023 第一次知道 Tubi 这家公司的,Tubi 给我的整体印象是一个专业稳定的科技公司。最让我印象深刻的是 Tubi 展台上的小电视,相比其他参展商更吸引眼球,也和流媒体公司的定位十分契合。Tubi 还介绍了 Elixir 在产品上的应用,细节处透露着技术范儿和开源精神。”

—— Rubyist 张一

技术选型很有魄力

“疫情期间,没有几家公司会为了员工健康而支持完全远程办公的,Tubi 这样做了,我也是那个时候知道 Tubi 的。

后来进一步了解到 Tubi 的技术栈基于 Elixir 和 Scala,在 Java、Python、Go 流行的大环境下选择这么小众甚至名字都没有听说过的语言是真的很有魄力,之后我也会经常在 Ruby、Elixir 技术活动上看到 Tubi 的身影,不遗余力地推广函数式编程语言。

这次在 RubyConf 上还收到了 Tubi 版红宝书 - Tubi 的技术博客合集,很技术范儿,这也真正体现了 Tubi 工程师团队‘对运用先进技术改变人们生活这一美好愿望充满无限激情’吧。希望 Tubi 赞助的 Elixir Meetup 以后能来上海,自己可以作为志愿者出一份力。”

—— Rubyist 小白

Tubi 让我看到了自由

“在与 Tubi 团队成员交流中,我深深感受到了 Tubi 独特的工程师文化,那就是自由!自由!还是自由!

‘自由’在 Tubi 不仅仅是一个词,更是一种工作的哲学。这里的工程师不会仅仅为了实现某个功能而妥协,他们对整个产品都负有责任。在 Tubi,开发者不仅是编写代码的人,他们也是产品的参与者和建议者,每个人都有权利为产品提出更好的建议。这真的让人太激动了。

读了 Tubi 在 RubyConf China 上分享的 Tubi 团队文化和技术博客,我还惊喜地发现:

第一,Tubi 特别强调一个核心价值观 —— 信任。在许多公司担心员工在家工作可能会‘偷懒’的时代下,Tubi 对其团队成员有着这样的信任,支持远程和在家工作,也相信他们会尽职尽责。这种‘信任’文化在当前竞争激烈、内卷严重的环境中显得尤为宝贵

第二,Tubi 不是通过倒排期或强制性的目标来推动团队,而是通过建立合理的工作流程,来确保产品的正常交付和优质的用户体验。这种工作方式背后的核心理念是一种契约精神,团队成员之间互相信任,共同为一个目标努力,这样不仅高效,还非常人性化。”

—— Rubyist 韩先生

加入 Tubi 的 Rubyist 后来怎么样了

据说,Tubi Elixir 工程师团队中有一半曾是 Rubyist,他们转变为 Elixir 炼金术士的过程是什么样的?在 Tubi 做 Elixir 工程师,是一种什么体验?一起听听他们的心声吧。

Rubyist 迁移到 Elixir 可能更有优势

“在最初接触 Elixir 时,我注意到 Elixir 有很多地方是受到了 Ruby 的启发,因为 Elixir 之父 José Valim 之前是 Ruby on Rails 的作者之一,这在一定程度上降低了我学习 Elixir 需要做的心理建设和学习成本。

Ruby 和 Rails 最让我欣赏的部分就是对开发者体验和开发效率的关注,而 Elixir 在这两个方面的表现也是相当出色的。Elixir 最让我欣喜的还是项目在实际应用中所表现出的卓越性能和稳定性。在我看来,这可能使最终让我的团队从 Ruby 切换至 Elixir 为主开发语言的最关键的因素。

Ruby on Rails 在‘用很少的代码实现很多的功能’这件事上树立了行业标杆,一直被业界认为是快速启动一个 Web 项目的最佳技术选择。Elixir 的 Phoenix 框架在很大程度上受到了 Rails 的启发,近几年也开拓了一些新的领域,例如一出现就广受关注的 Phoenix LiveView,以及随后出现的其它语言框架。相比 Rails,Phoenix 的确让人感到有一点上手难度,但在我看来,这一点难度的增加所带来的效率提升,绝对值得!

对于已经熟练 Ruby on Rails 的开发者来说,适应 Elixir 和 Phoenix 的过程是非常顺畅的,这比起从其他语言迁移到 Elixir 来说可能有更显著的优势。”

—— Tubi Elixir 高级工程师 Horvo

“刚开始使用 Elixir 时,我感觉两种技术语言的语法比较像,写起来都很舒服,只不过 Elixir 是函数式语言,刚开始写需要有一点风格的转换,但是不会有太大的不适应。当我逐步了解到 Elixir / Erlang 背后强大的 OTP 生态,不禁赞叹 Elixir 真的别有洞天啊!”

—— Tubi Elixir 工程师,Tristen

Elixir 和 Tubi 带给我属于工程师的双倍快乐

“我在读书期间,业余时间开始学习 Ruby 和 Elixir;毕业第一份工作就选择了 Tubi,也直接投身到了 Elixir 的开发上,这份确信至今未变。事实证明,很多之前没有接触过 Elixir 的同事们都能快速适应新的开发生态,而且在 Tubi 可以遇到一群和 Elixir 一样优雅的小伙伴啊。”

—— Tubi Elixir 工程师,Tristen

“在 Tubi 写任何语言都会是非常开心的,Elixir 本身又带给我很多属于工程师的快乐,这两者叠加在一起就是双倍的喜悦。对于喜欢一门语言的开发者来说,最幸运的就是刚好有一家很棒的公司正在用这门语言(并且你还有机会在那里工作)。我很庆幸能有在 Tubi 写 Elixir 的机会。

Tubi 有很多需要解决高并发、高复杂度的业务场景,这些比较有挑战性的项目让我在技术上收获了很多宝贵经验。另外,在应对这些复杂、高并发、实时性强的需求时,Elixir 总会给我更多的信心,我因此可以分出更多精力到架构设计和代码质量上。”

—— Tubi Elixir 高级工程师 Horvo

Tubi 与 Ruby 的故事

2019 年中旬,Tubi 正在紧锣密鼓地筹备第一场 Elixir Meetup,为了让更多中国开发者有机会了解 Elixir 这门小众但表现惊艳的技术语言,我们在 Tubi 工程师的帮助下,与 Ruby China 建立了联系。

当时负责 Tubi 中国团队招聘的 Doris 分享道:“Ruby 社群非常开放和包容。虽然我们招聘的是 Elixir 后端工程师,但我还是受邀加入了 Ruby China 的几个群组,有机会去介绍 Tubi 及工作机会,并分享与 Elixir Meetup 相关的活动信息。这次参加 RubyConf China,我见到了许多一直以来帮助 Tubi 的网友,激动万分。”

在本次 RubyConf China 中,Tubi 第一位 Ruby 开发者也亲临现场。虽然他已经离开 Tubi,但仍然全力以赴地为我们提供支持。

人们常说 Rubyist 是一群为爱发电的人,这一点不假。或许正因为 Tubi 同事们和 Rubyist 有着共同的技术热情,才让我们有幸相遇并携手共进。

关注 Tubi,创造更多可能性

Tubi 中国团队热招岗位持续更新中,欢迎点击查看。让我们在 Tubi,一起为了“让人人都能免费享受高品质的视频内容”而高效工作,也有品质的生活!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/55133.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android JNI修改Java对象的变量

在JNI中,本地代码(C/C)中修改了Java对象的变量,并且将其传递回Java端,那么Java端会看到变量的修改,尝试以下两种方式进行修改: 添加native方法 data class MyData(var key:Int,var value:String…

GIthub 无法访问使用Watt Toolkit加速

一、使用 Watt Toolkit Watt Toolkit 是一款加速软件,原名是 Steam,后来改名为 Watt Toolkit,其可以让原本无法访问的 Steam 游戏社区、 GitHub 、谷歌验证码等国内难以访问的网页正常访问。 三种下载方式: Watt Toolkit 官网下…

软件设计师学习笔记7-输入输出技术+总线+可靠性+性能指标

目录 1.输入输出技术 1.1数据传输控制方式 1.2中断处理过程 2.总线 3.可靠性 3.1可靠性指标 3.2串联系统与并联系统 3.3混合模型 4.性能指标 1.输入输出技术 即CPU控制主存与外设交互的过程 1.1数据传输控制方式 (1)程序控制(查询)方式&…

VScode使用SSH连接linux

1、官网下载和安装软件 https://code.visualstudio.com/Download 2、安装插件 单击左侧扩展选项,搜索插件安装 总共需要安装的插件如下所示 3、配置连接服务器的账号 安装完后会在左侧生成了远程连接的图标,单击此图标,然后选择设置图标…

JDK介绍

JDK,JRE和JVM之间的关系 JVM是运行环境,JRE是含运行环境和相关的类库,跟node环境是一个意思 JDK目录介绍 目录名称说明bin该路径下存放了JDK的各种工具命令。javac和java就放在这个目录。conf该路径下存放了JDK的相关配置文件include该路径下存放了一些…

裸露土堆识别算法

裸露土堆识别算法首先利用图像处理技术,提取出图像中的土堆区域。裸露土堆识别算法首通过计算土堆中被绿色防尘网覆盖的比例,判断土堆是否裸露。若超过40%的土堆没有被绿色防尘网覆盖,则视为裸露土堆。当我们谈起计算机视觉时,首先…

BUGFix:onnx -> TensorRT转换过程失败

先附上相关的onnx2trt的部分代码&#xff1a; def onnx2trt(onnx_path):logger trt.Logger(trt.Logger.ERROR)builder trt.Builder(logger)network builder.create_network(1 << int(trt.NetworkDefinitionCreationFlag.EXPLICIT_BATCH))parser trt.OnnxParser(netw…

删除ubuntu开始菜单中的图标

背景 本来是很好看干净的界面 更新谷歌浏览器后出现了Gmail&#xff0c;幻灯片&#xff0c;谷歌硬盘等跟谷歌相关的乱七八糟东西搞得界面就很丑 解决问题 删掉那个图标 输入命令 sudo nautilus /usr/share/applicationssudo nautilus ~/.local/share/applications可以…

react18+antd5.x(1):Notification组件的二次封装

antdesign已经给我们提供了很好的组件使用体验,但是我们还需要根据自己的项目业务进行更好的封装,减少我们的代码量,提升开发体验 效果展示 开起来和官网的使用没什么区别,但是我们在使用的时候,进行了二次封装,更利于我们进行开发 MyNotification.jsx,是我们的业务页面…

内存管理框架 --- 基础知识

文章目录 一、内存管理1.1 内存管理的出现1.2 内存管理的用途1.2.1 虚拟内存和物理内存的定义1.2.1.1 什么是虚拟内存&#xff1f; 1.2.2 虚拟内存的划分&#xff1a;用户空间与内核空间 1.3 操作系统和MMU1.3.1 OS和MMU的关系1.3.2 虚拟地址到物理地址的映射流程 1.4 物理内存…

Unity 类Scene窗口相机控制

类Scene窗口相机控制 &#x1f354;效果 &#x1f354;效果 传送门&#x1f448;

【网络基础实战之路】基于三层架构实现一个企业内网搭建的实战详解

系列文章传送门&#xff1a; 【网络基础实战之路】设计网络划分的实战详解 【网络基础实战之路】一文弄懂TCP的三次握手与四次断开 【网络基础实战之路】基于MGRE多点协议的实战详解 【网络基础实战之路】基于OSPF协议建立两个MGRE网络的实验详解 【网络基础实战之路】基于…

oracle 12c怎样修改varchar2允许的最大长度

12C单实例测试&#xff0c;varchar2在早期版本中最大长度限制为4000&#xff0c;当字段长度指定的比较长的时候会报错&#xff1a;ORA-00910: specified length too long for its datatype。 早期版本中虽然SQL数据类型限制为4000&#xff08;如表中的列的varchar2类型&#x…

spring cloud gateway中出现503

spring cloud gateway中出现503 当搭建网关模块的时候出现503的错误的最大的可能就是没有设置负载均衡的依赖包 原先搭建的时候采用的是下面的方式进行设置的 gateway:discovery:locator:enabled: true #可以从nacos进行服务的发现 上面的这种方式可以直接进行注册和发现&…

机器学习实战14-在日本福岛核电站排放污水的背景下,核电站对人口影响的分析实践

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下机器学习实战14-在日本福岛核电站排放污水的背景下,核电站对人口影响的分析实践。 近日&#xff0c;日本政府举行内阁成员会议&#xff0c;决定于2023年8月24日启动福岛核污染水排海。当地时间2023年8月24日13时&am…

带你了解Python的重要性,就算做测试也要会Python(文末送书)

名字:阿玥的小东东 学习:Python、C/C++ 主页链接:阿玥的小东东的博客_CSDN博客-python&&c++高级知识,过年必备,C/C++知识讲解领域博主 目录 人生苦短,我用 Python 在测试工作中用好 Python

若依上传文件及后端解析

1.前端设计导入 <!-- 用户导入对话框 --><el-dialog :title"upload.title" :visible.sync"upload.open" width"400px" append-to-body><el-upload ref"upload" :limit"1" accept".xlsx, .xls" :he…

JAVA中如何知道某项目使用什么数据库类型

文章目录 1. 前言2. 先说结论3. 代码案例 1. 前言 最近在写第三方工具的时候&#xff0c;需要判断使用方项目具体使用了什么数据库类型&#xff0c;从而进行不一样的实现逻辑。当然可以让用户在YML中配置说明项目用什么数据库&#xff0c;但用户不一定填写正确。因此需要想其他…

【C语言】操作符大全(保姆级介绍)

&#x1f6a9;纸上得来终觉浅&#xff0c; 绝知此事要躬行。 &#x1f31f;主页&#xff1a;June-Frost &#x1f680;专栏&#xff1a;C语言 &#x1f525;该篇将详细介绍各种操作符的功能。 目录&#xff1a; &#x1f4d8; 前言① 算术操作符②移位操作符③位操作符④赋值操…

go-基础-1-变量-记录

go 变量 变量定义 var 变量名 变量类型 变量赋值 var 变量名 变量类型 变量值 变量名 : 变量值 package mainimport "fmt"func main() {var name string "chang"fmt.Println(name) }package mainfunc main() {var (name stringage intsex string…