<audio id="audio" title="第78讲 | 陈晨：团队重组过程中踩过的坑" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/49/a3/49d248f11f5cf75c1e3c15f6f05062a3.mp3"></audio>

你好，我是陈晨，现在在Reddit担任Senior Director of Engineering。刚加入的时候，Reddit只有30多人，如今已经扩张到近300人的规模了。在Reddit，我经历了一家公司从小到大的成长过程，也经历了团队大了之后重组的过程，所以今天想跟大家分享一些关于团队重组的话题。

团队重组基本上是每一个发展壮大的团队都无法避免的选择。团队大了之后会遇到很多问题，比如流程混乱、产品规划不明确、团队之间内耗严重等，而一个比较好的解决方案就是团队重组。

## 团队重组

我刚到Reddit的时候，因为整个公司也就三四十号人，规模比较小，所以当时的技术团队是按照技术领域水平分割的，做Web的一个组、做iOS的一个组、做安卓的一个组等，这也是创业公司比较常见的团队划分方法。

这样的划分会存在一些问题，首先，当产品出问题的时候，你很难去找到一个负责人，负责把这个问题解决掉。其次，产品经理会很郁闷，他至少要跟三个团队打交道，一个简单事情的推进都要开一堆会。最后，多个项目同时进行的时候，工程主管也会变成流程的瓶颈，他需要在无数的项目之间切换，同时要协调好工程师之间的资源，这是一件很深奥的事情。

除了这些流程上的问题，更严重的问题是团队之间的信任关系会被破坏。一个好的管理者必须要把团队之间的依赖关系弱化，否则团队一旦过载，一个团队进度就会依赖于另一个团队的进度，比如说后台API开发延期，前端工程师的进度就会受到影响，继而产品进度就会受到影响。

而产品进度一旦出现问题，没法按时交付，整个技术团队就会受到高层的问责。面对这种情况，技术团队之间就极有可能互相推诿，把责任推给对方，久而久之，团队之间的摩擦变多，信任关系也就越来越差，而这对于公司的文化是致命的。

为了解决这些问题，我们的做法是将团队进行重组，按照业务方向做了垂直分割，如视频、搜索、社交、增长等，每个业务都有自己的团队，从设计、产品到开发人员，各个角色都有，组成一个极其完整的团队。

如图中所示，在整个技术组织架构中，中间是各个业务线团队，上面是一个共享的团队，负责整个公司的产品发布，下面是中间层和基础层的东西，这些东西没办法分开，我们就划分出专门的团队来负责他们，包括API Services、Native Core、Web Core等。

<img src="https://static001.geekbang.org/resource/image/63/65/6338d60f1efe1a6b402a9b431ade1d65.png" alt="">

## 团队重组的难处

这样重组团队的好处是，首先，项目需求决定人员需求，减少人员浪费；其次，彼此分工明确，团队间的交流损耗降低；最后，能消除团队之间的差距，加强凝聚力。但要做好团队重组也并非易事，会面临两个主要的难题，分别是人心和时机。

**1.人心**

人是管理中最困难的环节，不管怎么管，总会出现一些让你措手不及的事情。我还在Instagram的时候，也遇到过类似的难题。当时Instagram到了400人的规模，也需要进行团队重组，只是在执行过程中没有很好的考虑到团队成员的心理因素，直接造成的后果就是，每两个星期就有一个iOS工程师辞职。到最后，当年跟我一起打下iOS江山的那些老员工，在半年时间里全都走光了。

很大程度上是因为他们感到不开心了。举个例子，他之前为Instagram APP付出极大心血，也全情投入，结果团队重组之后，被分到广告组去做广告了，这并不是他感兴趣的领域，而接手他工作的新人，在他看来又没有好好珍惜他之前写的代码，导致代码质量直线下降，可想而知他心里是个什么感受，必然不会好。

工程师做产品的时候，他们追求完美的性格会让他们为了一个产品而呕心沥血，也会对自己所做的东西感到自豪。而当你重组团队，把他做的事情交给别人，又让他去负责并不感兴趣的工作，他一定是感到不开心的。这时，如果管理层不跟他好好沟通，必然会导致他们失望直至最后选择离开。

所以，团队重组的时候，一定要考虑到人心，多多跟团队成员做深度沟通，在可能的情况下，尽量照顾到他们的需求。

**2.时机**

团队重组这件事是迟早要做的，只是早做和晚做、早痛和晚痛的区别。晚做会会影响员工的快乐程度，造成团队成员流失，就像上面提的Instagram的例子，它到团队400人规模的时候再做团队重组其实已经有点晚了。

而早做的问题在于会降低效率。团队早期的时候，很多代码是共享的，工程师之间的协同是很重要的。这时，你把他们拆分到不同的业务小组里，那么他们之间协同的成本就会直线上升。这么做可能降低了产品团队之间的内耗，但却增加了工程师之间的沟通成本，降低了效率。

因此，对于领导者来说，要找到一个恰当的团队重组的时间点，过早或过晚都不好。我的经验是，在工程师团队达到200人规模左右的时候开始分割重组是比较合适的，千万不要等到400人规模，这算是我的血泪教训了。

这里大家常常会面临的一个问题是，比如原来iOS团队就是iOS团队，大家聚在一起，遇到问题可以一起讨论，也可以一起研究新技术，但重组之后，他们被分散到不同的业务团队里面，少了原来共同成长的氛围，比较孤单，可能话语权也会变弱，心里就会有些抵抗。

这时，短期的解决方法是依靠文化，比如我的做法是，每周组织一次亲友会，把原来iOS团队的同学都叫回来，大家聚在一起交流，分享最近做了些什么、遇到什么难题，大家可以出谋划策，另外，还可以组织一些技术分享，一起学习进步。总之，要让大家感到，虽然团队散了，但心没有散，大家还是一家人，而这就需要你作为leader多花费一些心思和精力了。

长期的解决方法是用老人带新人，给每个拆分后的业务团队都配备一个至5年工作经验以上的人，把他培养好之后再让他去培养、带领下面的成员，这样每个团队会有一个领头羊，团队其他成员的成长也会有方向。所以，垂直分割对于人员的要求非常高，这也要求你跟公司在招人环节协调好，找到合适的人才加入。

## 技术转型的困境

最后想跟大家分享一下技术转型过程中的注意点。团队扩大到一定规模之后，很多技术大牛都会或主动或被动的选择转型做管理，而在这个过程中，他们往往会面临3个难题：

1. 凡事依旧亲力亲为，大量参与具体的代码编写工作，最后发现自己更像是一个技术领袖，而不是经理。
1. 按技术直觉做事而忽视了流程，导致团队为了按期交付而大量加班。
1. 缺乏规划和项目交付的经验，容易对项目产生乐观情绪，最后极有可能导致项目延期，或者在deadline之前加班赶工。

那么该怎么提高管理效率呢？以我培养Engineering Manager的经验来看：首先，要熟练使用工具，利用大量的工具，尽量把流程自动化，用工具管人而不是用人管人，这样管理压力会小很多。

其次，要分清主次，把重要的事情先解决掉，而那些不那么重要的事情就可以往后排。然后，让团队每人明确自己的职责和所有权，如果有人不清楚，你作为管理者就有责任跟他们讲清楚，一遍不行就讲十遍。

最后，让工程师驱使部分管理任务，激发他们的主观能动性，不要把很多事情都揽在自己身上亲力亲为，要学会放权。这样，也能更好的培养他们的能力。

对很多团队leader，尤其是新手leader来说，准确预估项目开发时间是一件非常困难的事情，因为项目执行过程中的各种可变因素太多了。

跟大家分享一个30%法则，即一个新项目启动的时候，你可以先让团队中有经验的老员工预估需要多长时间，然后将他预估的时间除以30%，也就是0.3，得到的时长就是项目完成开发大概需要的时间。比如他预估需要4个星期，除以0.3后大概是13个星期，也就是这个项目我大概需要一个季度的时间才能做完。在我的实践中，这个方法预估出的时间是非常准的。

一般新手管理者的系数都在30%左右，真正有经验的管理者能达到70%，但我至今还没有遇到过超过70%的人，究其原因可能在于项目开发中的不确定性太多了。如果感兴趣，不妨尝试一下。

**结语：** 团队重组基本上是每一个发展壮大的团队都无法避免的选择，将团队从原本的按技术方向水平划分，重组为按业务方向垂直划分是一个不错的选择。另外，在重组的时候，一定要注意把握好人心和时机，否则极有可能会事倍功半。

## 作者简介

陈晨，Reddit Senior Director of Engineering。Instagram 最早的华人工程师，经历了 Instagram 从5000万注册用户规模到4亿月活用户的巨大转变。2015年年底加入 Reddit，用90天时间从0到1推出了 Reddit 官方移动应用，建立了移动团队，重构了公司的技术和业务平台。

（本文整理自陈晨在ArchSummit全球架构师峰会上的分享，有删减。）


