Tubi 远程办公实践指南

Original Tubi 比图科技
比图科技

比图科技是 TubiTV 中国团队的注册企业。我们是一群对运用先进技术改变人们生活这一美好愿望充满无限激情的工程师,希望可以借助这个渠道相互了解,共同进步!

2/2

2020 年开局,新型冠状病毒的疫情牵动着全国人民的心。1 月 26 日,国务院发布了国务院办公厅关于延长2020年春节假期的通知,其中提到延长春节假期至 2 月 2 日,2 月 3 日起正常上班。同时,大多数互联网企业迅速响应疫情防控机制,为员工提供了远程办公的选择。早在春节假期开始之前,Tubi 北京团队就为大家提供假期前后 work from home 的方案。鉴于 Tubi 北京团队有着长期 remote / WFH 的“优良传统”,跨越地区与时区的双重障碍与美国团队每天密切协作,北京团队积累了大量的远程协作的经验。在去年团队内部的远程办公分享会上,我们邀请了两位北京工程师以及 Tubi 技术副总裁,分别为团队小伙伴分享“如何与工程师远程协作”、“如何与产品/设计/ QA 等团队远程协作”以及“远程协作之如何高效参与项目会议”。以下是整理的要点汇总,希望将之前积累的远程办公经验分享给大家,能帮助到第一次接触远程办公的小伙伴们。

远程办公的编程模型

 — by Chiyu Zhong, Tubi Backend Engineer 

Tubi 北京团队成立伊始就是一支远程研发团队,和旧金山的小伙伴们密切协作,共同支撑公司的核心业务。为了最大限度地吸引优秀人才,我们也会考虑招募北京之外的其它城市的资深工程师。作为一个如此大规模的远程协作团队,在日常工作中必然面临诸多方面的挑战,例如沟通延迟、团队成员之间缺乏信任、容易产生误解和孤独感等。

具体来说,沟通延迟意味着和面对面的沟通不同,消息大概率不会被立刻回复。在 Tubi, 因为成员分布在中国、美国和欧洲,有时候需要等待一天才能得到答复。甚至在某些时候消息可能因为某些原因没有被接收方注意到。因为语言和文化背景的差异,加上团队成员在一起面对面闲聊的机会有限,可能会导致团队成员相互之间因为不熟悉而缺乏信任,容易产生误解。比如我不知道对方是否知道某事,我也不知道对方现在是否在忙某事,是否有空帮我解决一个问题。

把上面的问题对应到计算机系统中,会发现它们和分布式系统中遇到的问题非常类似。在分布式系统中:

虽然分布式系统和单节点系统相比实现上更复杂,但是公司成长到一定程度都必须投入解决这些问题以支撑更大规模的业务发展。

那么在分布式系统中我们是怎么解决这些问题的呢?当远程调用的延迟太大,我们通常使用异步调用而不是同步调用,因为同步调用会阻塞双方的资源而造成浪费。具体到异步调用的实现层面,发送方和接收方都需要维护一个消息队列,并且处理超时、错误、重试逻辑。对应到远程办公中,Tubi 采用 Slack,Email 等渠道作为主要的沟通方式,这些消息不需要接收方立刻回复,接收方可以选择在最合适的时间处理这些消息。

例如我在 Slack 收到一个消息,因为当前的任务不希望被打断,可以借助 Slack 的消息延时提醒功能过段时间再做处理。

这种异步的工作方式意味着沟通双方都需要维护自己的任务队列,接收方可以利用这个任务队列按照优先级处理任务,当任务完成后接受方必须通知消息发送方,如果遇到瓶颈不能在预定时间完成任务(TTL)需要及时通知发送方。

我是这样维护任务队列的:将所有待处理任务转发到 Email 中,如 Github,Google Calendar。并且只保留要采取行动的 email 在 inbox 中,因为太多邮件等于没有邮件

Slack 中需要在未来处理的消息,我会将它们加入到 Slack 的提醒中:

在分布式系统中,我们通过定时同步数据减少节点之间状态的不同(Anti-Entropy),在 Tubi 远程工作的同学会每月到北京总部和大家一起工作一周,北京团队每年也会定期访问美国总部

在我看来,定期的访问重要的不止是一起工作,还有一起侃大山,并且积极参加集体活动(在 Tubi 我们有定期的德州🎴,狼人杀🐺,桌上足球⚽️ 和电影之夜🎬等活动),我们还用 Google Photos 将这些美好的回忆记录下来。这些看起来和工作完全无关的行为能够促进团队成员的相互了解,为未来合作建立信任的基础。

如何与产品/设计/QA等团队远程协作?

 — by Kobee Wang, Tubi Android Engineer 

跨部门的远程协作是一件比较有挑战性的事情。因为部门不同,看待问题的角度不同,所以需要解决分歧,达成共识;因为距离的因素,顾虑也会比较多,比如对方有没有时间,会不会打扰到对方等,不像面对面沟通那么随意、高效。如果处理得不好的话可能会严重影响工作效率。对于 Tubi 北京团队来说,因为产品、设计、QA 团队都在总部旧金山,这种沟通显得尤为重要。下面我从四个方面分享一下我的一些经验。

协作发起方的角度

如果是你在寻求解决问题和确认问题,请认真做好准备,让问题变得简单明了,比如借助数据、图像、视频等形式,我想这应该是产品、设计、QA 团队非常愿意看到的,因为大家都会关注用户的体验,而数据、图像、视频是很好的描述手段,这样便于理解,能够节省大家的宝贵时间。

当一个问题有多种理解的时候,可以将它们全部列举出来,逐个进行讨论。比如,设计出图的时候,有些图形元素,你可以认为它是相对布局的,也可以认为是绝对布局的,不同的理解有着不同的实现方式,我们可以事先将它们罗列出来,方便讨论。这样也可以提高沟通的效率。

作为协作的发起人,我们还需要有一种主人翁的态度,珍惜每一次沟通的机会,把握问题的走向。同时要有主见,必要的时候,作出自己的决定。

记得刚来公司的时候,在 TubiTV Android 客户端上做 accessibility 这个 feature 或者说支持 TalkBack,开启这个功能的时候,让系统能够读出应用焦点区域的内容,方便有视觉障碍的人使用。按照一般的开发习惯,总以为产品应该给定 accessibility elements 和阅读出来的文字内容,然后开发去实现。实际开发的时候发现文档上只有目的并没有这样的细节,问产品,产品说 iOS 已经实现了这个 feature,QA 可以帮忙确认。于是去问QA的同事,沟通后发现他们并没有 accessibility elements list,他们只关心能不能读出来。这种情况下,我开始意识到,我不应该问“哪些 ui 要加(TalkBack 的内容),加什么内容”,而是准备好自己的方案,通过“可不可以这样加”来征求意见。果然,沟通变得顺利多了。

化被动为主动,提出自己的方案征求别人的意见,有时能极大的提高协作效率。当然,我们也需要主动同步进展,主动推动问题的解决。

Partner的角度

作为客户端团队,我们需要经常性地和产品、设计、QA 团队协作。需求讨论阶段我们需要和产品设计团队讨论和确认细节,开发阶段要实现需求,测试阶段又要与 QA 团队一起发现和解决 bug。由于距离的原因,可能在整个开发阶段我们都专注于 coding,和产品设计很少沟通,这种情况下,前期的需求讨论就显得非常重要了,如果有不理解的地方或有不同的意见,要及时表达出来,尽早达成一致,避免在开发周期结尾的时候才发现需求理解错误或者不到位,让自己手忙脚乱。

为了弥补远程沟通的时间成本,让 QA 团队有足够的时间测试,给自己留有充足的时间完善代码修改 bug,我们可以提前将功能开发完毕,然后提交测试,给自己预留一定的缓冲时间。如果功能比较庞大,可以将功能进行拆解,阶段性的提交测试,边开发边完善。比如UI开发、功能开发和统计这三部分还是相对独立的,我们可以分开进行测试。

协作内容的角度

远程协作往往围绕着问题进行的,如果我们能把自己的工作做好,让问题少一点,就可以减少一些不必要的沟通。比如典型的就是测试阶段的 bug 发现和处理。如果我们能少一点 bug 的话就能减少和 QA 团队不必要的沟通。

当出现问题的时候,我们要积极的去解决。当一个问题成为 blocker,要灵活一点,不要一味地死磕,必要的时候把问题抛出来,或许别人的一句点拨就能让你事半功倍,或许问题的优先级并不高,不需要马上去解决。

协作方式

对于 Tubi 来说,由于中国和美国时差问题,我们需要利用好早上和晚上两个时间段:下班之前(美国凌晨)把自己的问题罗列出来,通过邮件或者 Slack 的方式告知美国同事,在北京早上(美国下午)沟通解决问题。

另外,如果问题涉及到多个人并且比较重要或者紧急,可以建立一个 Slack 讨论组一起讨论,让相关的人都能知道问题在哪,怎么样处理的,一方面能够提高沟通的效率,另一方面也方便以后跟踪问题的解决。尽量不要单独和每一个人寻求共识,因为这样效率并不高,而且不利于问题的跟踪。特别提到一点,如果和跨部门的同事直接沟通的时候发现对方响应速度慢,可以考虑把 leader 添加进讨论组以便协助推动。

灵活运用多种沟通方式,Email、Slack、Zoom、Google calendar、Google doc、Clubhouse 都可以成为我们远程有效沟通的手段。

远程协作之如何高效参与项目会议

 — by Chang She, Tubi VP of Engineering 

结语

在知名团队 37Signals 所著《Remote》一书的序言中有这样一段话:

科技已经到来,与不同地方的人们在任何时间沟通和协作从未像现在这样轻而易举。但是还有一个基础性的关于人的问题——人们的思路需要进行升级

这本书面世 7 年来,越来越多的团队开始尝试和推广远程办公。从 Tubi 的实践来看,虽然我们面临很多困难,但是只要有自我驱动的员工 + 信任包容的文化 + 高效的协作工具栈,远程办公的的确确有效提高了员工幸福感和公司的整体效率。在国内,随着人们生活水平的不断提高,广大互联网从业者对于生活工作平衡的追求越来越迫切,完全有理由相信这种模式可以在神州大地遍地开花。希望这篇文章能够帮助你更好地理解和实践远程办公,更希望有志之士能够积极地推进远程办公在自己部门的落地实施。


最后,希望大家在协作办公愉快的同时,无病无灾,平安是福。

::...
免责声明:
当前网页内容, 由 大妈 ZoomQuiet 使用工具: ScrapBook :: Firefox Extension 人工从互联网中收集并分享;
内容版权归原作者所有;
本人对内容的有效性/合法性不承担任何强制性责任.
若有不妥, 欢迎评注提醒:

或是邮件反馈可也:
askdama@googlegroups.com



蟒营®编程思维提高班 Python版/第14期 正在报名

精品小班/ 永久答疑

扫描报名: 101camp14py

蟒营®式 原创课程

theory101camp_v3

官网: py.101.camp


任何问题可先进入知识星球(免费)咨询:
FAQ

关注公众号, 持续获得相关各种嗯哼:
zoomquiet

...::