CategoryResourceRepost/极客时间专栏/技术领导力实战笔记/第78讲 | 陈晨:团队重组过程中踩过的坑.md
louzefeng d3828a7aee mod
2024-07-11 05:50:32 +00:00

80 lines
9.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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全球架构师峰会上的分享有删减。