设为首页|收藏本站|
开启左侧

[问答] 远程办公的编程模型

[复制链接]
64510 0
双子座的五毛 发表于 2022-5-11 18:29:27 | 只看该作者 打印 上一主题 下一主题
 
Tubi 中国团队成立伊始就是一支远程研发团队,和旧金山总部的小伙伴们密切协作,共同支撑公司的核心业务。为了最大限度地吸引优秀人才,我们也招募北京之外的其它城市的资深工程师。
继 Tubi 远程协作模式 的分享,本文将从技术的角度解剖 Tubi 实践远程办公的编程模型
关于 Tubi

Tubi 提供永久免费的高品质长视频流媒体服务。在旧金山总部之外,Tubi 组建中国研发团队是为了支撑快速增长的业务发展,并且在不降低员工要求的前提下,尽可能招募到更多人。
中国研发团队和旧金山总部共同支撑核心业务的发展,唯一的差别是在工作时间上;这样的协作方式在外企中并不常见。

远程办公的编程模型 第1张图片
Tubi 中国研发团队目前近百人,高级及以上工程师占比 80% ,还有一些伙伴在上海、南京、广州远程办公;因此, Tubi 不仅存在中国团队和美国总部的「跨时区」远程协作的情况,还存在中国团队北京和其他地点的同事「跨地域」远程协作的情况。
Tubi 拥有基于信任和主人翁精神的团队文化,从不打卡,同时提供灵活人性化的居家办公政策。疫情初次发生时,全员居家办公一整个月,没有降低开发的效率,所有项目都如期进展和交付。
远程办公的主要挑战

Tubi 在实践远程办公时,和大多数组织所面临的挑战是类似的:
>> 沟通延迟
和远程办公相对应的是非打断式沟通,因此,对方可能并不认为你期待收到即时的回复;另外,大家会通过 EmAIl、Slack 等各种渠道发送信息,因此消息更有可能被忽略;在 Tubi,我们还同时面临跨时区沟通的问题,从总部收到反馈常常是第二天了。
>> 信任危机
远程沟通时,我们不能看到对方细微的表情,也对同事在工作之外的其他方面了解不多,比如他的为人、做事方式、目前正做什么、当下是否有时间处理这个需求等,这些不了解无助于彼此的信任。
>> 当一个社会化的人突然被隔离在家,自然会产生孤独感。这也是远程办公需要面临的挑战之一。
>> 除此之外,Tubi 还面临中西方文化差异所带来的挑战,比如美国同事会在沟通需求时,用很客气的方式说“你可以做什么吗?”,他实际上表达的是非常希望你可以做这件事情,而我们有可能理解为“这件事情我可做可不做”。
分布式系统带来的启发

下图为 Tubi 后端服务的分布式系统网状结构,远程办公的挑战与我们在分布式系统中遇到的问题非常类似:

  • 分布式系统的节点相互独立;
  • 节点之间不共享状态,但可以通过接口完成请求;
  • 远程调用比本地调用慢得多;
  • 消息有时不可靠;
  • 消息在网络链条中会有丢失和不可达。

远程办公的编程模型 第2张图片
在分布式系统中,当选择远程调用时,如果继续采取阻塞式调用,成本会高出一到两个量级,而更好的解决方法是异步消息。异步消息在分布式系统中更为广泛使用的原因有三点:
>> 消息队列
Tubi 使用 Elixir 和 Scala 这两种编程语言处理内部不同的系统,这两种编程语言本质上是同一种编程范式——角色模式 Actor Model,如下图所示。

远程办公的编程模型 第3张图片
每一个节点都可以认为是一个角色,用以处理某一个领域的问题;不同的角色通过远程调用协作,节点之间通过异步消息实现沟通。每一个角色都有一个 Mailbox 接收消息,通常也需要一个缓和的状态 Isolated State 处理这些消息,这个角色如果对其他节点也有需求,使用同样的方式与其他节点进行协作。如此,可以带来很高的并发效应,这也意味着需要处理的事情会形成消息队列。
>> 协议
实现消息队列有多种协议,比如 AMQP、MQTT 等;协议是用来制定和规范整个消息传输操作和意外情况处理的规范,所有协议实现方都需要遵循同样的规则。
>> 消息格式
每个消息队列中的每个消息都要遵从一定的格式,比如首部元信息包括 live,durability,priority 等。
Tubi 远程办公实践

基于分布式系统的经验,Tubi 在远程办公中做了如下实践:
>> 追踪所有相关任务
首先,我们需要清楚有哪些沟通渠道需要追踪。
在工作中,我们会使用 Gmail 收发邮件,通过 Slack 即时通讯,在 Calendar 上记录日程,也会用 Clubhouse(现在也被称为 Shortcut )追踪任务。其中,Clubhouse 的界面如下图。

远程办公的编程模型 第4张图片
对于 Tubi 而言,它的优势是可以列出不同的任务状态,也可以和 Github 紧密结合。比如当我们 push 一个远程分支,分支名称包含任务的关键字和 id,就可以自动关联,如果我们基于这个分支创建 pull request 就会自动更新任务的状态为 waiting for review,拥有很好的协同性。
其次,需要注意不滥用沟通渠道。有些伙伴喜欢使用群广播,在某些情况是没有必要的,我们期望遵循一些像安全领域的最小特权原则等来推进日常工作。
最后,善用工具追踪所有的消息队列。
当我们远程办公,尤其是高效率思考或编程时,我们不希望被打断,因此也不能对所有的消息队列即时响应。为了更高效地追踪所有的消息队列,我们可以借助一些工具。
比如 Slack,当收到一位同事发来的消息,希望我做一件事情,我可以设置延时提醒;另外,也可以借助 Slack 的机器人,每天定点查看任务队列的基本情况,做相应的处理。

远程办公的编程模型 第5张图片
针对邮箱,我们也可以充分运用过滤器功能将任务分类。如果一个代码的提交没有我的审核通过,对方的行动就被阻塞了,那我就要更优先地去完成这个任务。

远程办公的编程模型 第6张图片
在 Tubi,几乎所有人的日历都是共享的,如果 HR 安排面试给某位同事,不需要问对方什么时间合适,只需要看他/她的日历,直接发出邀约。这对于双方来说都是很有帮助的。
通过以上这些方式,我们可以高效地追踪到各个渠道的所有任务。
>> 排列优先级
对于邮箱,我们可以选择添加不同的标签以注明优先级;在 Slack 中,我们可以选择将信息固顶或者星标,提醒自己及时看到重要信息。在 Shortcut 中,我们可以通过拖拽不同的任务顺序,让相关同事都知道接下来我会做什么。
下图展示了 Tubi CTO 整理的 iOS 和 Andriod 团队之间的敏捷开发之道,其中也是有优先顺序的。

远程办公的编程模型 第7张图片
比如,当一位同事提前完成了一个任务,他可以在优先任务队列中找到自己力所能及的其他任务继续工作,团队效率会大大提高。  Tubi 敏捷开发之道 原文在这里。
>> 保持响应
远程办公时,领导同事们都不在身边,我们需要靠自己保持驱动力。同时,每个人也可以根据自己高产出时间 —— Core Time 的不同,安排自己的工作节奏,并在自我监督下完成工作。当我们总是能及时交付,我们也能持续从团队和同事中得到信任。
在 Tubi,我们有非常重要的一条价值观——主人翁精神,这是我们可以实现远程工作的决定性基础。Tubi 开放公司所有的数据给所有人,让每个人都能更好地评估自己的工作,当每个人都没有门槛去参与公司经营时,我们就不再需要 KPI 去管理团队,每个人会主动地找到自己可以贡献的方面,主动地去工作。当然,这也要求每个人都能真正将自己定义为公司的合伙人,而非被雇佣者,做真正有利于团队的事情。

远程办公的编程模型 第8张图片
>> 定期面对面
多个节点或者多个数据库之间会自然而然地出现不同,我们需要定期面对面以实现反墒,达到最终一致性。在面对面的时间里,我们处理需要深度讨论的问题,也会有丰富的活动去建立更广泛多维的人际关系。
Tubi 中国团队成员每月在北京办公室集结一周,中国同事们也有去美国出差的机会,每半年有一次 Outing,工作之余也会一起打德州扑克、打羽毛球等,以增强团队成员之间的互相信任。
当人与人之间有了更多的联系,变得更熟悉,合作也就更容易了。

远程办公的编程模型 第9张图片
>> 形成惯例
当大家都有一致的行为准则,每个人的行为都会是可预估的,这会带来更高的协作效率,增强每个人的归属感和幸福感。
在 Tubi,我们约定要对每个任务都要采取行动,当邮件的直接收件人是我,我需要回复;当我是某个代码、文档的所有者,我需要对他人提出的 request 有所行动,不能延迟到两天后。
另外,我们拥有一致的工作流。比如之前,我们在 Tubi 上线某个服务或功能时,需要通知所有相关同事,如今我们有了一个内部发布系统,只要发布在这个系统中,一条提醒就会自动分享到相关的 Slack Channel 中,这样可以有效地避免重复信息,提升效率。

远程办公的编程模型 第10张图片
总结核心

高效的远程办公可以成为现实,最基础且最重要的是人,也就是分布式系统中的节点。因此,Tubi 在招聘时,除了关注候选人是否有过硬的技术,最关注的就是大家在文化价值观上是否和 Tubi 契合,是否有足够的主人翁精神,是否能够在至暗时刻坚守某些准则。

远程办公的编程模型 第11张图片
其次重要的是文化,Tubi 拥有以信任、主人翁精神为基础的团队文化,大家拥有共同的行为准则。如下图,通过 CTO 发给大家的一封邮件,我们可以更深入地理解这一文化。

远程办公的编程模型 第12张图片
邮件的主题是 On Trust —— 基于信任,邮件的大意是:
Tubi 有慷慨的年假政策,也很少有 Manager 会驳回同事的年假申请,在 Tubi 大家可以选择在家工作,也可以中途离开办公室去处理私事,Tubi 尽可能地支持同事去参加婚礼、生孩子、葬礼这样的重要时刻,而以上都是基于彼此的信任—— Tubi 相信每个人都非常理性,也有很好的价值判断;同样,当我们有了这样彼此信任的文化,我们自然可以有更加宽松的工作环境,让每个人有更多的精力专注于构建真正好用的服务。
第三层是机制和策略,Tubi 的敏捷开发之道、年假政策、激励机制都让远程办公成为可能。最上面的是表现层,这一层很重要但不是最关键的,比如 Gmail、Slack、Shortcut 之类的工具。37 Signals 所著的《 Remote 》让我们看到十几年前人们就已经可以很好地远程工作了,而这十几年以来,工具一直在迭代。当我们抱怨工具上的不如意时,或许可以再往更深层处思考,是否有可能在更深层找到更好的解决方法。
最后分享《Remote》这本书中最为感慨的一个章节——工作产出才是最重要的。

远程办公的编程模型 第13张图片
如果你渴望既能远程工作,又很高效;既有舒适的办公室可去,又有宽松的居家办公机制,点击这里,投递简历,让我们看见你。
Tubi 的更多远程办公实践

  • 远程办公这座围城,我们打破了它
  • Tubi 敏捷开发之道
  • Tubi 远程工作实践指南



上一篇:2022大湾区普通高中毕业班联合模拟考试
下一篇:2023考公资料长期整理|国考省考|事业编|教师|三支一扶|基层等 ...
@



1.西兔生活网 CTLIVES 内容全部来自网络;
2.版权归原网站或原作者所有;
3.内容与本站立场无关;
4.若涉及侵权或有疑义,请点击“举报”按钮,其他联系方式或无法及时处理。
 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

排行榜
活跃网友
返回顶部快速回复上一主题下一主题返回列表APP下载手机访问
Copyright © 2016-2028 CTLIVES.COM All Rights Reserved.  西兔生活网  小黑屋| GMT+8, 2024-6-28 05:19