写点什么

如何攻克异地协作难题?看 Tower 的 72 个月远程工作实践

  • 2020-01-02
  • 本文字数:7393 字

    阅读完需:约 24 分钟

如何攻克异地协作难题?看 Tower 的 72 个月远程工作实践

12 月 9 日,TGO鲲鹏会武汉分会成功组织了第一次小组活动。在此次小组活动中,Tower 联合创始人 & TGO 鲲鹏会武汉分会会员徐峥带来了《Tower 团队 72 个月远程协作实践》的精彩分享。

在分享过程中,徐峥分享了 Tower 的成长经历,以及 72 个月远程工作的成功实践经验。以下为徐峥现场分享内容,Enjoy:



今天,我给大家带来的分享主题是 Tower 团队 72 个月远程工作的成功实践。


因为我也是初来乍到,所以想先给大家介绍至今为止 Tower 团队的成长历史,这和我们的远程协作也有极大的关系。


实际上,彩程设计成立的时间还挺早的。彩程设计成立于 2008 年,公司 CEO 是沈学良,我们都叫他“老沈”。


最早我们开始创业时,我们主要做的是用户体验设计外包。那时,国内还很少公司有「用户体验」「UCD」「UX」等概念,所以我们最开始是抱着当时上市公司——亚信联创的大腿,帮他们做一些运营商业务系统的用户体验设计优化。


因为他们的系统都用了很长时间,所以系统已经变得非常难用。实际上,那时已经是 Web 时代了,但是他们很多软件仍然在使用 CS 架构。


当时,我们主要负责的是四川、辽宁、北京 10086 网上营业厅、客服系统、网管系统、亚信海外的一个计费系统等等。在整个设计过程中,我们团队累积了不少产品设计上的经验。


2011 年,随着移动互联网的兴起,我们团队也开始为一些移动 App 做一些设计外包,包括成都本地的咕咚运动、易到用车等等。



在做了几年用户体验设计外包后,我们逐渐开始想要打造一款属于自己的产品。于是,从 2011 年开始,我们团队开始尝试做了两个比较小的产品,一个叫 TeamCola,另一个叫 DesignBoard。


实际上,这两个产品都是根据我们团队的需求做出来的。


TeamCola 是一款用于记录工时的产品;DesignBoard 是一款可以让用户对 PSD 设计图进行沟通、评论的产品。


在两款产品发布之后,我们在互联网上累积了第一波口碑,也收获了一批粉丝用户,让大家了解到原来成都有一个彩程设计,他们打造了一些好用的小工具。


2012 年左右,我们开始思考是否能做一款更通用的工具。


于是,我们就开始在内部进行了一番讨论。因为当时国内没有简单、轻量级的团队协作工具,同时我们自己团队内容做项目和任务协作是通过 Basecamp 工具,所以我们就想是不是应该把 Basecamp 工具引入国内,做一个国内版的项目协作产品呢?


说干就干,2012 年下半年,我们推出了 Tower 的第一个版本。


Tower 发布以后,它的成绩是出乎我们意料之外的,因为它在上线的第一天,注册用户数量就已经远远超过了 TeamCola 和 DesignBoard 的用户数总和。随后,我们在一个月之内就拿到了红杉的 A 轮投资。


后来,我们几个合伙人就商量了一下,是不是要把自己的精力 All in 去做 Tower。最后,我们思前想后,决定停止所有外包业务,转向 ToB SaaS 领域。


至今为止,Tower 已经拥有了 80 万的注册团队和 1000 万的注册用户,在 Alexa 上长期排名国内第一名。


这些结果都是我们整个团队在远程工作的模式下完成的,接下来我将和大家分享一些这几年远程工作的思考。

为什么要远程工作

2013 年,我们开始决定远程工作。


当时,我们的初衷是希望能更好地打造 Tower 这款产品。或许听起来会比较奇怪,想要打造一款好的产品,为什么不是聚在一起加班,反而是远程协作呢?


第一个原因是,我们有一个大胆的设想——如果 Tower 可以完全支持一个远程团队的日常协作,那么它对于那些天天在一起的团队来说更是绰绰有余。


同时,因为我们是基于 37signals 的 Basecamp 做的,而 37signals 本身也是一个远程工作模式的团队,所以我们觉得是不是可以通过这样的方式,更好地打造产品。



第二个原因是,我们不想把时间浪费在通勤上


2008-2013 年,我们团队在一起差不多 4-5 年的时间。在这期间,我们团队更换过非常多的办公地点,这也是希望我们团队的小伙伴不要花太多的时间在路上。但是无论我们更换到哪一个地方办公,都会有将近一半的小伙伴每天平均花费 2 小时的时间在上下班通勤路上。


我们可以来计算一下,如果我们取平均值 1.5 个小时,每个成员一周在通勤的时间就是 7.5 个小时,扣除掉节假日和休假之类的时间,每年我们会有 300-400 个小时在路上。


我们觉得如果能把这个时间节省下来,那么大家可以用这个时间学习很多东西,或者做其他更有意义的事情。况且,当今城市交通状况越来越差,不管是乘坐公共交通工具还是开车,大城市的早高峰和晚高峰都让人心情沮丧。


第三个原因是,整个核心团队在一起工作 5 年左右的时间了,我们发现大家来到办公室,也是各自处理手头的事情


如果遇到需要沟通的时候,为了避免打扰别人,我们还会刻意的把讨论地点定在公司楼下,或者比较偏远的会议室。这也让我们考虑,是不是非要大家聚在一起才能做好 Tower。


于是,在 2013 年春节之后,我们就把团队“解散”了,开始远程办公。


远程工作的好处

不得不承认的是,远程工作确实会带来不少好处。


第一个好处,也是我认为最大的好处——个人生活质量会得到非常大的提升


在远程工作的前几年,我每天基本规律得像机器一样。每天早上 7:00 起床,然后走路去家对面的健身房游泳;8:30 开始工作,直到 12:00,接着吃午饭、睡午觉;14:00 继续开始工作,直到 19:00,之后再去家附近的一个社区图书馆看书;20:30 回家,最后洗漱睡觉。


每天早上,我从健身房回家的路上,看着早高峰行色匆忙的人,想着自己再也不用去挤公交地铁的时候,感觉自己幸福极了。


第二个好处是,可以让团队保持更加专注的状态


平时在办公室时,你可能常常会被周围说话、开会的声音打扰。同时,根据报告显示,当长时间在同一个环境工作时,你会因为自己的审美疲劳,导致自身注意力下降,让你影响到自身的工作效率。


因此,我们当年在提倡远程工作时,从来不是提倡在家办公,或者是旅行办公,而是不管你在哪个环境,只要是你能保持工作效率最高的地方就可以。



2014 年,我们曾经开源了一个叫 Simditor 的文本编辑器,它在 Github 上有 4.5k 的 stars,这也算是一个小有名气的开源项目。这个小东西就是我们团队里一个前端工程师,他自己跑到丽江待了两个月,独自开发的产物。


另外,我们在远程之后发现,超过 4 个人以上的会议时间会明显缩短,频次也会降低。


以前,你很容易不自觉地加入到一个会议,然后把会议变得比较冗长;当开始远程办公之后,因为人不在一起,大家说话的成本会变得非常高,所以在每次开电话会议之前,大家都会先在 Tower 上把想法写清楚后,再和大家做沟通,这也是在远程之后留下的好习惯。


第三个好处是,招人会比较方便


因为我们是一个小的创业团队,所以我们在薪资上肯定比不上大厂,那么我们怎么去吸引更多的人才加入呢?


远程就可以成为我们这种创业团队的吸引力。


同时,我相信敢于选择远程工作的小伙伴,大多数是都是技高人胆大的人,他们自身肯定也比较有实力的,所以他才敢选择一条比较困难的路。远程是在变相地帮助我们筛选候选人,这样招募进来的小伙伴普遍水平都比较高。


最后,因为是远程,所以我们完全可以招募全国的人才,而不仅仅是局限于武汉,或者成都。当你撒的网够大时,你的鱼才会变多。


以上这 3 点,是我认为远程工作带来的最大好处。


如何保证远程的工作质量和效率

接下来,可能就是大家最关心的一点,远程工作团队该如何保证质量和效率呢?


根据我们多年的实践结果来看,最核心的无非 2 点:


  • 招募对的人;

  • 不断优化团队业务流程。


###招募对的人


不知道大家有没有看过丹尼尔·平克的这本书:《驱动力》?



丹尼尔·平克在书中谈到,在创意工作领域,如果想要激发员工动力,唯一靠得住的办法就是鼓励他们从事自己热爱的、在乎的事情,“胡萝卜”加“大棒”在创业公司,对激励员工是无效的。


因此,对于我们的团队来说,如果想要远程办公,那么找到自驱力强、专精、对我们的事情是热爱的人,就是至关重要的事情。


在创业的不同阶段,我们招聘的办法各有不同。


2008 年,刚回到成都开始创业的时候,我们的当务之急就是扩充团队。


那时,我们的团队既没有名气,也没有钱,如果贸然做各种广告,或者去招聘网站上发招聘帖子,可想而知,效果是很差的。


因此,这时最好的办法就是从熟人下手


那时,彩程有一半的员工都是成都电子科技大学里“栋力无限”学生社团的成员,因为老沈(沈学良,彩程 CEO)是社团发起人。我们会在“栋力无限”学生社团里,找到想要出来实习和锻炼的学生。



上图中的小伙伴就是我们当时找的同学,他现在也是我们团队中的 CTO。


那时,他是成都电子科技大学大四正在休学的学生。在休学期间,他跑到香港大学旁听。希望通过更多的学习,了解到在未来漫长的人生中,他真正想要的是什么。


当你了解到他的经历时,你会发现他是一个独立思考能力很强的人,所以他现在也成为了我们的公司合伙人。同时,在两年前,他就把我“踢下”了 CTO 的位置。


这是我们在创业最开始阶段找人的一个办法,随着公司的逐渐壮大,我们开始在成都当地举办了一个叫做“UCD 书友会”的活动。


每个月固定的周末,我们会邀请一些朋友,以及公司的小伙伴,用一个下午的时间,与对设计和产品感兴趣的同行进行交流。这样的活动,不仅帮助我们扩大了成都本土的人脉资源,也让很多对当时还不那么火爆的「用户体验设计」感兴趣的人能够进入到我们的视线里。



在这期间,我们认识了现在做 Tower 交互设计师的小伙伴。当时,他是西南民族大学大四辍学的学生,曾经一个人骑车去过西藏,爱好是开卡丁车,现在他是四川省业余组冠军。


也是这样的人,让我们看到,当一个人非常热爱一件事时,他会非常投入地完成它。



上图就是他大四时的手稿,看了他的手绘原型设计图,我们就知道,他就是我们要找的小伙伴。


这是我们在第二阶段,也就是当你团队处于稍微成长的阶段时招聘的秘诀


在我们推出 Tower 之后,团队逐渐有了一些口碑。这时,我们才能收到一些来自全国各地的简历。


可是,你仍然很难直接从简历上对候选人进行判断,因此我们确定了两点作为我们招募合适小伙伴的核心原则,这也是 Trello 的创始人 Joel Spolsky 在他的《面试指南》一文中所提到的:聪明,又能及时完成工作。


其实这是两个特别简单的原则,我们只需要在 Tower 上给应聘者一些具体的任务让他去执行,通过观察他在完成任务过程中的速度和质量,以及看应聘者在完成这件事的过程中,他对 Tower 产生哪些思考,然后简单地判断他是否是我们现阶段所需要的人才。


举一个最近我们才招募到的一名设计师的例子,当时我们给他的任务是,让他重新设计 Tower 的任务详情页。


这位设计师,不仅很快就把作品交了上来,而且还交了一份 18 页的 Report:



他根据自己以前使用 Tower 的经验,以及身边一些朋友的可用性测试,做出了一份完整的 Tower 任务详情页重构的方案。通过这样的方式,你可以感受到,他具备我们目标成员的所有基本素质。


或许,我们不能说所有时候都能招到这种很好的小伙伴,但是很坦率地讲,我们公司的成员都能在团队中发挥出最大的价值。


因此,我认为我们应该像《奈飞文化手册》中谈到的那样,如果想要在公司做最核心的事情,那么公司人才密度一定要高。


我们人生中最宝贵的年华几乎有一半的时间都在工作,那么我们希望能和卓越的人共事,一起做出卓越的产品。对于彩程来说,这比我们能把公司做到多大规模更加重要。

不断优化协作流程

找到对的人只是第一步,第二步就需要我们提高远程团队的协作效率。因此,我们持续不断地优化我们打造产品的流程。


目前,我们打造 Tower (产品)的主要流程总结起来有 6 个步骤:反馈收集、需求梳理、方案设计、迭代开发、功能测试、功能发布。



因为 Tower 是一款围绕用户去做的产品,所以我们一切都是以用户为起点,用户会通过各种各样的渠道向我们反馈在使用过程中所遇到的问题。而这些问题首先汇总到我们的客服团队,客服团队会尝试帮助用户,解决他们当前所遇到的问题。


当客服解决不了时,我们就会把问题分为两种类型,一种是用户遇到 Bug,另一种是用户向我们提出一个潜在的新需求。


对于两种不同类型的声音,客服都会在不同的项目里创建任务,然后交给产品部门的同事处理。


对于 Bug 类的任务,工程团队会快速修复上线;而对于新需求,产品经理会经过一些判断来决定是否实现。如果确定需要实现,产品经理会写下完整的问题背景、解决方案和实现方式,然后放到需求池里,等待工程团队开发。


工程团队会以一个固定的周期进行迭代开发。在开始迭代之前,工程师会从需求池里,按照优先级评估每个任务的规模 ,并且创建对应的迭代任务,直到迭代周期的资源被分配完毕。


功能迭代开发结束后,产品负责人会进行测试;在测试通过后,团队会安排上线计划,有些功能我们会开放给部分用户内测,有些功能会直接全量发布。


每个工程迭代周期结束后,我们会开会总结这次迭代遇到的问题和改进的方法。


新功能推送到用户手中,又开始新的循环:收集反馈、整理需求、设计方案、迭代开发、测试上线,周而复始。


对应上述流程,我们团队会用到以下几个核心项目:



「VOICE 2019」项目中,主要是用来收集用户新需求。从这个项目名称可以看出,我们每年都会为当年的用户反馈建立一个新的项目,每年都是一次全新的开始。



客服在创建用户反馈时,需要将用户问题背景了解清楚,比如用户的团队规模、对应的使用平台、反馈所属的功能模块等等,并建立好对应的任务。


Tower 的客服比较特殊,因为 Tower 的客服基本上都是我们的工程师,他们每周会有一天的时间轮岗专门做客服,所以他们对自己的产品比较了解,对用户的需求也比较了解。


接下来,产品经理每天会花固定的时间查看「VOICE 2019」里用户的反馈,区分哪些不做、哪些要做,哪些要深入了解场景后再做决定。


产品经理对用户需求了解清楚以后,会在「What’s Next」项目里创建具体的需求任务,设定任务优先级,并进行方案设计。


整个「What’s Next」项目有几个阶段:原始需求、设计中、待估点、迭代中、已发布。



那些评估通过的用户反馈会首先放在原始需求中,产品经理会预估一个优先级,然后针对高优先级的需求设计方案。我们对前期产品方案的设计要求比较仔细,一般每一个需求都会形成一篇固定的方案文档:



比如要更新在线编辑器,我们可以从目录看出,产品经理会写清楚用户使用场景、产品在各个终端下的方案、工程团队预计的资源投入,以及产出的目标。因为这份文档是后续团队讨论的基础,所以我们希望产品经理写得尽可能详尽一些。


产品经理完成方案设计后,会把这个任务放到待估点阶段,等待下一次迭代启动的时候进行评估。


我们的工程团队以前每 3 周处理一次迭代,现在已经改为每 6 周一次迭代了。


在每个迭代启动之前,我们会用一周的时间对上个迭代周期进行总结和全量发布,然后讨论下个迭代需要做的任务。在迭代启动会上,产品经理会和工程师会按照优先级,共同 Review「What’s Next」项目的「待估点」清单里的需求:



产品经理会讲解需求背景和设计方案,工程师会在这个过程中反复追问用户的需求场景,问清楚潜在的坑,然后进行任务估点。


接下来,工程团队会在迭代项目「福克斯 RS」里进行协作。项目名称是一赛车的型号,而「福克斯」代表了专注,「RS」代表了速度,我们希望工程师在迭代周期里,用最快的速度,专注于自己的需求的交付。


这个项目我们首先分成了四个阶段:待处理、执行中、测试中、已完成:



在工程迭代过程中,我们会每天开视频会议,确定是否有新的「待处理」清单里的任务可以挪到「执行中」;已经完成的任务,挪动到「测试中」阶段,交给产品经理进行测试。


在迭代周期里,我们会要求工程师尽快地将功能推进至「可以品尝」的阶段,达到这个阶段后,负责人会把任务卡片从「执行中」清单里拖动到「测试中」阶段里,并且把产品功能部署到内测服务器上,供不同的团队内测。


在内测阶段,我们会使用灰度机制实现。早期,我们会用一些独立的服务器来搭建内测环境。使用这种方式最大的问题是,它和实际的生产环境是隔离的,因为这种独立的服务器上没有正式的数据。因此,团队内的同事往往只是走过场一样的在里面去「玩玩」就结束了测试,这并不是我们预期的目的,所以我们改进了内测的方式。


我们有一台和生产环境数据库直联的 Web 服务器,这台 Web 服务器会部署内测分支。我们会在后台给我们自己的团队增加一个内测的 Cookie 标志位,这样 Nginx 在收到每个 HTTP 请求时,就会根据这个标志位判断是否把请求转发到特定的内测服务器上。



当产品经理和团队其他成员在真实环境里测试了产品功能,并觉得产品功能没有问题之后,我们会发布给部分用户进行测试。


实际上,这个地方也会存在一定风险——因为 Tower 已经有几千个付费用户,当某些功能改动比较大时,我们很难确定直接开放给用户会引起什么后果,所以我们会把功能放在一个叫做「实验室」的栏目里,开放给用户申请试用:



通过这样的方式,首先我们可以判断出哪些功能需求是用户比较渴望的,如果申请人数寥寥无几,那就说明需求源头有问题,也就不必浪费时间继续下去;其次,申请的用户一般都是对这些功能非常渴望的,这些用户愿意容忍功能在发布初期的一些缺陷,也乐于在试用过程中给予我们更多的反馈。如果我们围绕这些用户的需求进行改进,那么后续的成功率会更高。


基本上,我们会用以上两种方式进行发布,以此保证我们的小团队不会跑偏。


同时,在迭代三周结束后,我们会用一周的时间来做迭代复盘,发布这个迭代对应的功能。


关于迭代的复盘,我们会在 Tower 的知识库里写一篇对应的文档来统计这个迭代周期团队的输出效率,类似这样:



根据这个迭代周期每个成员的负荷,以及最终实际可以发布的任务对应的点数,我们可以计算出每个成员在这个迭代周期里的输出效率。输出效率比较低的成员,我们可以在回顾周单独与他分析遇到的问题和改进方案,我们希望每一次迭代结束后,团队的输出效率都能有所提升。


以上就是我们团队打造 Tower 的几个主要流程。


团队虽小,但是流程仍在不停地优化,只有这样才能保证我们在远程工作时的工作效率。




TGO鲲鹏会,是极客邦科技旗下高端技术人聚集和交流的组织,旨在组建全球最具影响力的科技领导者社交网络,线上线下相结合,为会员提供专享服务。目前,TGO 鲲鹏会已在北京、上海、杭州、广州、深圳、成都、硅谷、台湾、南京、厦门、武汉、苏州十二个城市设立分会。现在全球拥有在册会员 800+ 名,60% 为 CTO、技术 VP、技术合伙人。


会员覆盖了 BATJ 等互联网巨头公司技术领导者,同时,阿里巴巴王坚博士、同程艺龙技术委员会主任张海龙、苏宁易购 IT 总部执行副总裁乔新亮已经受邀,成为 TGO 鲲鹏会荣誉导师。


2020-01-02 11:325433

评论 1 条评论

发布
用户头像
很想知道迭代中的负荷点数是通过什么方式计算出来的,望指教
2020-01-03 01:24
回复
没有更多了
发现更多内容

华为轮值董事长郭平2020全联接大会主题演讲:永远面向阳光,阴影甩在身后

华为云开发者联盟

5G ICT huawei

跟着B站UP主小姐姐去华为坂田基地采访扫地僧

华为云开发者联盟

华为 技术 大牛 扫地僧

架构师训练营 1 期第 2 周:框架设计 - 总结

piercebn

极客大学架构师训练营

因材施教,阿里腾讯大牛耗时7天,整理不同人群适合的面试题合集

小Q

Java 编程 程序员 架构 面试

JAVA JDBC

Isuodut

云小课 | 不小心删除了数据库,除了跑路还能咋办?

华为云开发者联盟

数据库 数据恢复 dba

虚拟卡兑换架构设计

孙志平

从『用户』到『客户』,企业服务平台如何实现高效转化?

易观大数据

架构师训练营---第二周课后练习

Jacky.Chen

一周信创舆情观察(9.14~9.20)

统小信uos

架构师训练营第 1 期第二周总结

Leo乐

极客大学架构师训练营

进击的无源光网络:产业园区里的“追光者”

脑极体

Rust所有者被修改了会发生什么?

袁承兴

rust 内存管理 智能指针

RN运行项目报错:Unable to resolve module `./debugger-ui/debuggerWorker.js` from ``

凌宇之蓝

ios android React Native

数据库-技术专题-SQL编写规范

洛神灬殇

四年开发经验从美团、360、陌陌、百度、阿里、京东面试回来感想

Java架构师迁哥

关于招聘的一些思考

石云升

面试 考核 招聘 下放招聘权

c++基础——杂谈2

菜鸟小sailor 🐕

c++ 语言

机构进场区块链安全基础设施准备好了么?

CECBC

区块链 数字资产

AI小白必读:深度学习、迁移学习、强化学习别再傻傻分不清

华为云开发者联盟

人工智能 学习 迁移

一文快速入门分库分表

程序员小富

Java 分库分表

一个草根的日常杂碎(9月25日)

刘新吾

社会百态 生活随想 日常杂碎

传销资金盘挂靠区块链热点 肃清整顿热潮拉开帷幕

CECBC

区块链 金融

娱乐圈套路多?看区块链如何来破解

CECBC

网红 娱乐圈

SpringBoot-技术专题-提升服务吞吐量

洛神灬殇

来不及解释了,快上车!快速开发平台,助力企业搭乘万物互联顺风车

Philips

敏捷开发 企业开发 互联网革命

架构师训练营 1 期 - 第二周 - 设计原则

三板斧

极客大学架构师训练营

Git 操作

老菜鸟

git

为什么海外服务器打开网站会卡呢?

德胜网络-阳

某大厂一位核心技术人员不小心泄漏的公司内部培训以及工作笔记内容,手慢无。

Java架构师迁哥

框架设计:作业

Nick~毓

如何攻克异地协作难题?看 Tower 的 72 个月远程工作实践_技术管理_TGO鲲鹏会武汉分会_InfoQ精选文章