MegaEase的远程工作文化

MegaEase的远程工作文化

MegaEase 是我创业的公司,主要是想把云计算(PaaS/SaaS层)的那些高可用高并发的分布式技术普及到那需要对技术自主可控的公司,这样就不需要去使用不能自主可控的闭源系统或是大公司的云平台。我于2016年开始成立MegaEase,从早期8个人,直到今天有20来个人,我们从一开始到今天都是在远程工作的公司文化。因为我很喜欢《Rework》这本书,写这本书的公司叫37signal(现名basecamp),这家公司在发《Rework》这本书的时候,整个公司只有16个人,分布在全世界8个城市,这种Geek的公司的文化很吸引我,所以,在我决定创业的时候,我就止不住地想成立这样能够远程工作的公司,于是,远程工作的团队文化就这样成为了MegaEase的基因。下面我会分享一下,我们公司的远程工作文化和其中的一些问题,最后还有一个工作协议

我们在早期的时候,8个员工来自5个城市,现在的20来个员工来自8个城市2个国家。虽然我们现在使用“共享办公室”,但是本质上,我们的整个文化是远程工作的文化。在2017-2018年度,我们公司产品商业化以来,公司早期的8个工程师在远程工作的状态下成功支持了得到的老罗的跨年演讲活动,以及其它几个客户,一方面验证了用户愿意付费购买我们的产品和服务之后,另一方面也有一些不错的收入,客单价都在百万左右。还记得当时,有几个投资人并不相信我们连个办公室都没有,而且8个人分布在5个城市,觉得我们是个骗子公司(哈哈)。在过去的一年,我们通过我们的产品和服务帮助银行电信互联网等公司进行了他们的系统架构的改造和升级,让复杂和高门槛的分布式技术和架构可以被更多的企业所掌握所应用。这说明,远程工作是没有什么问题的。实际上远程团队远程工作真的不新鲜,Github上有个Repo维护着一个支持远程工作的公司列表,还有一个跟远程工作相关的Awesome索引

当然,自从我创业以来,我身边就一直有好些不同的声音质疑远程工作。听过他们的理由后,我能够理解他们的疑虑和困惑,因为管理的确是一个很复杂的事,因为要面对的是极为复杂的人,所以,有这些疑虑也是正常的。下面是我的一些经验和分享。先说宏观管理,再说微观实践。

宏观管理

我发现很多人比较质疑远程工作的原因,更多的是表现在对宏观的管理上有问题。所以,我还是想先说一下宏观管理,这其实并不分远程办公还是集中式办公,如果能够解决好些这管理上的根本问题,其实,远程不远程都无所谓了。只不过,这些问题在“远程办室”的场景更更突显罢了

一、努力找到好的人

团队管理的头等大事是找人,没有之一。很多人都会跟我说,你的这种远程团队需要很好的人。是的,没错,人很关键。远程团队需要的人的一般需要有这些特质:

  • 能独挡一面的人。这样交给他的事能独立完成,没有路能自己找路,这样可以省很多管理成本。
  • 沟通能力很强的人。一方面,他们把模糊的事能变清楚,另一方面,他能有效地说服他人。不然就会非常扯皮和消耗时间。
  • 能自管理和自驱动。不能自管理和自驱的人,会增加大量的管理和教育成本。能自驱动的人,都是对负责的事情有认同的人。

如果你仔细思考一下,你会发现,这样的人是任何一家公司所渴望的人,和远不远程无关。只不过,如果是远程团队的话,你会被逼着要招到这样的人。

招到这样的人,你团队的执行力会非常的强悍。招不到这样的人,你只能为他们不能自管理和自驱而招“经理”,不能写出好的代码而招“测试”,不能很好的沟通而招个“项目经理”,不能独档一面,而要把好的人安排给他们当“教练”,而好的人则会被累死……

这个时候,你就需要计算一下了,是花时间精力在教育不好的人,还是花时间精力找好的人?无论远不远程,聪明的管理者都会选择后者。这也就是为什么Amazon的Bezos会说,“我宁愿面50个人一个人都招不到,我也不愿意降低我的面试标准”。

二、设定共同的目标和使命

对于远程团队来说因为见不到面,所以,缺乏交流和沟通。所以,需要团队里所有人能在同一篇上,能够对要做的事有一个统一标准的认识。也就是共同的目标和使命的认知。知道要要什么,不要什么。知道取舍,知道trade-off。这些东西都是需要团队一起达成的共识。如果没有这样的“Same Picture”的目标和使命,就会出现很多不必要的误解和冲突。另外,因为团队和业务也在迅速发展中,所以,也需要不断地调整和沟通。这都需要领导者花费时间统一目标和使命。

老实说,无论远程不远程,一个团队也是需要有共同的目标和使命的。没有共同的目标,就算是集中在一起办公,也一样没有效率的。

三、倾向使用小团队

因为沟通成本的问题,远程团队更为倾向使用小团队,但并不是说小团队会限制整个公司的规模。《人月神话》说过,只有小团队才能驾驭复杂的系统。Amazon 的 Two Pizza Team的文化(团队的大小只能到两张披萨就能喂饱的大小),就是把整个系统拆成“微服务”架构,这样可以导致整体效率的巨大提升。表现在,可以并行开发,专注于一个功能更利于解决复杂问题,简单可以更容易的运维,可以更容易的规模化……

我工作的这20多年来经历过很多公司,尤其是创业的这几年来,看过的公司更多了(50+以上了),我发现,人数越多的团队,基本上来说,就更偏劳动密集型。劳动密集型的一个特征就是,大家整天在想,得整点什么事给这么多人,好让他们忙起来。而人数少的团队,因为人不够,所以每天都在想,什么样的事更重要,什么样的事可以自动化,怎么做更有效率……小团队和大团队的关注点就这么不一样了,所以做出来的事也就不一样了……

当然,并不是说劳动密集型有什么问题,就像《软件团队的两种管理方式》一文所说的一样,远程团队工作更倾向于“电影工作组”式的每个人都是leader的知识密集型的团队。

微观实践

在远程工作中,我们需要有很多的微观操作来让大家能够更好的进行远程工作。因为远程工作也有一些问题(但是方法总比问题多,不是吗?)

  • 文档驱动。首先,远程的问题就是沟通不方便了,集中化的办公一群人可以在白板上进行讨论,然后远程工作这个事就变成很复杂了。所以,当要讨论什么事的时候,需要发起人先写一个文档,然后大家在这个文档上进行讨论(我们通常使用Github的issue,Pull Request或Google Doc)。另外,写文档的好处太多了,除了给后人有一个可以追溯的东西,更重要的是,写作是一种深度思考,当你把你脑子里想的东西写下来的时候,你就会发现你的思考更多了。所以,文档驱动我们团队能力非常重要的事。
  • 自动化和简化。自动化和简化是我平时追得最多的东西了,从软件的Unit Test, Functional Test, Performance Test 一直到用Kubernetes进行自动化部署,我要求的就是从一提交完代码后就自动化的上线。我们玩的是Amazon的“单分支”代码管理的玩法,一旦代码merge上master,就会直接上线(当然需要通过灰度)。因为远程团队如果没有自动化的工具,那么,就会导致整体效率的下降。
  • Owner文化。这个太重要的了,但是,这并不是在说,如果一个事没有owner,就会像“三个和尚”那样,事情就进了没人管的地步。这是因为很多人在工作中都是比较 nice 的,比较 nice 的人通常来说都不好意思跳出来对别人发号施令。所以,Owner 文化就是要求每件事都要定义一个Owner,而这个Owner是有权�