每日精读 · READ 904

《一道优雅的难题》

An Elegant Puzzle: Systems for Engineering Management · 威尔·拉尔森 (Will Larson) · 2019

EN →

一句话

这本书教你别再把管理当成一件件孤立的救火事件来应付,而是把你的组织当成一套有存量、有流量、有反馈回路的系统去看、去调——找到那个能改变整体行为的杠杆点,而不是把精力耗在按下此起彼伏的警报上。

坐标

作者威尔·拉尔森(Will Larson)是硅谷一线的工程领导者,先后待过 Digg、Uber、Stripe,后来又在冥想应用 Calm 和金融服务公司 Carta 做过 CTO。他长期经营一个在工程管理圈影响很大的博客「Irrational Exuberance」(非理性繁荣),这本书本质上就是他多年博文与「系统」的精选合集,而不是一本从头讲到尾的线性叙事——它更像一本可以随时翻到某一节的参考手册。

副标题「Systems for Engineering Management」(工程管理的若干系统)已经点明了它的调性。它在北美大科技公司的工程经理必读书目里是一块常见的基石,读者画像很清楚:处在高速增长(hypergrowth,指公司规模和人数在短时间内成倍膨胀)公司里的经理,以及「管理经理的经理」。它不太关心你怎么带三五个人的小作坊,它关心的是当组织在半年里从 30 人涨到 300 人时,你怎么不被冲垮。

核心论点

核心概念,逐个讲透

系统思维:存量、流量与反馈回路

全书的脊椎是系统思维(systems thinking,把事物当成相互连接、彼此反馈的整体来分析,而不是孤立地看单个事件)。拉尔森借用的核心工具是存量与流量(stocks and flows):存量是某一刻积累下来的总量,流量是单位时间里的流入和流出。他真的会拿存量-流量图去画组织问题。

举个具体的账。假设你的团队有一个「未完成工作」的存量,也就是待办事项池子里积压的活。流入是新需求进来的速度,流出是团队消化完成的速度。你天天盯着「今天又冒出一个 bug」这种事件去救火,是没有尽头的——因为只要流入长期大于流出,池子的水位(存量)就会一直涨,你按下一个警报,两个新的又亮起来。系统思维让你把眼睛从水面移到水龙头和排水口:要么拧小流入(砍需求、减范围),要么开大流出(加人、去瓶颈)。

更麻烦的是系统里有延迟(delay,原因和结果之间隔着一段时间)反馈回路(feedback loop,系统的输出会反过来影响它自己的输入)。招一个人到见效往往要三个月,这就是延迟;团队一忙就顾不上写文档,文档缺失又让新人上手更慢、更忙,这就是一个会自我强化的恶性回路。延迟尤其阴险:因为原因和结果隔着好几个月,你很容易在数字刚开始变好时就撤掉投入、或在没见效时反复变招,结果永远踩不准节拍——真正懂系统的人会认下这段延迟,先按住不动,等它走完。系统思维给你的最大回报,是让你不再对着症状拼命,而是去找那个「一改就能改变整个系统行为」的杠杆点。这套看问题的方式,是理解后面所有具体招式的前提。顺带一提,这也决定了他给的一条经验法则:一个经理大致支撑 4 到 8 个工程师最合适——少了经理会闲得发慌、忍不住微观管理(micromanagement,事无巨细都插手),多了则根本顾不过来每个人;团队本身则六到八人、有一块清晰归属的领域,且尽量保持稳定,别一冲动就重组(reorg)——每一次重组都是往系统里重新注入延迟和混乱。

团队的四种状态,以及怎么救一个被压垮的团队

拉尔森把团队按承压能力分成一条清晰的阶梯,四个台阶:

管理者的核心任务,就是把团队沿着这条梯子往上搬。关键在于救「被压垮的团队」时的反直觉之处。救一个越陷越深的团队,手上只有三根杠杆:加人、减在制品/缩范围(work-in-progress,指同时在做的活)、给时间(让团队停下来把东西夯实、整合)。

反直觉的一点是加人。不要往一个已经在溺水的团队里加人——要往「就差一口气就能上岸」的团队里加。这背后是布鲁克斯定律(Brooks's law,「向一个已经延期的项目增派人手,只会让它更晚」——因为新人需要老人抽身来带,短期内反而拖慢进度)。给溺水团队加人,等于让本就喘不过气的人再分神去做入职培训,团队沉得更快。正确做法是把人集中投放,而不是像撒胡椒面一样每个团队匀一两个——匀薄了谁都救不动。集中火力把一个濒临上岸的团队推过临界点,让它转入「偿还欠债」,它一旦缓过来,又能反过来帮别的团队。

对着政策做事,别对着例外做事

当需求长期大于供给时——比如人人都想要更多招聘名额(headcount)、都想转岗、都想升职,而这些资源就那么多——新手经理最容易掉进的坑,是逐个去谈、逐个开例外。「对着政策做事,别对着例外做事」(work the policy, not the exceptions)说的是:与其没完没了地和每个人单独议价,不如定一条清晰、经得起推敲的政策,然后守住它。

为什么例外是陷阱?因为开例外当下显得很善良,却扩展不了、还会悄悄腐蚀公平,并且把你的时间吃干抹净。你给 A 破一次例,B 和 C 立刻会来问凭什么,你要么继续破(政策名存实亡),要么解释为何 A 特殊(既尴尬又显得偏心)。举个例子:一个团队想从别的组挖一个抢手的工程师转岗,你心一软放了,接下来一个季度你会收到十几个同样的请求,每一个都得你亲自权衡、亲自谈,你的日历就这么被例外填满了。做法是:把「转岗需要满足什么条件、多久一次、走什么流程」写成明文政策,默认按政策来;真要开例外,就把它当成一个罕见的、有意识的决定明确地做出来,而不是让例外变成常态。

推动变革:先示范,再文档,后传播

想在组织里铺开一个新做法,拉尔森的顺序是示范→文档→传播(model, document, share):先自己示范(model,亲自去做,把它做出效果、证明可行);然后文档化(document,把怎么做写下来,让别人能照着来);最后传播(share,让它扩散出去)——而不是自上而下一纸命令强推。

机制在于:命令能让人照做,但不能让人相信;而没人相信的做法一旦你不盯着就会回弹。比方说你想推行「代码评审必须在一天内回复」,与其发通知,不如自己先带头做到、拿出「这样做之后合并变快了」的证据,把流程和话术写成一页文档,再让早期认可的人把它带到别的团队。先证明它有效,再让它自己长腿走出去,比强推一个没人信服的规定要牢靠得多。

迁移:大规模管理技术债的唯一办法

拉尔森有一句被反复引用的话(大意):随着公司变大,迁移是唯一能有效管理技术债的机制。这里的迁移(migration)指的是把整个组织从一套旧系统/旧模式,整体搬到一套新的上去——比如全公司从旧的数据库方案换到新的、从一种服务框架换到另一种。

为什么迁移这么关键?因为公司一大,你没法靠某个团队某个下午顺手把债还了;旧模式散落在几百个服务里,只有一场协调好的迁移才能把它们统一搬走。拉尔森给的分三步走:去风险(de-risk,先在小范围验证这个新方案真的靠谱)→ 赋能(enable,把迁移做得足够简单——配好工具、写好文档、让各团队能自助完成)→ 收尾(finish,追着长尾把最后那批啃下来)。

最容易被低估的是收尾。一场只完成了 90% 的迁移,几乎交付不了它承诺价值的多少——因为只要还有旧模式残留,你就得同时维护新旧两套,省不掉的复杂度全在那条长尾里。举例:你要把 200 个服务从旧鉴权库迁到新库,前 180 个团队积极、一周就搞定了,剩下 20 个要么没人管、要么是最刁钻的边角。很多迁移就烂尾在这 20 个上——于是新旧库并存,两头维护,当初做迁移想省的复杂度一点没省下来。所以真正的功夫在于有人专门追着长尾把它清零。

会用的目标:目标值 + 基线 + 趋势 + 时限

一个真正能拿来导航的目标,不是甩一个数字了事。拉尔森说它得凑齐四样:目标值(target,你想达到的水平)、基线(baseline,现在的水平)、趋势(trend,什么都不干预它会怎么走)、时限(time frame,到什么时候)。

为什么要这么全?因为缺了基线和趋势,你根本不知道一个数字是野心还是躺赢。比如「把页面加载做到 2 秒」听着挺好,但如果现在(基线)就是 2.1 秒、且在自然变快(趋势向好),那这目标等于白设;反过来如果现在是 5 秒、且在持续变慢,那「2 秒」就是一场硬仗。加上基线和趋势,数字才有了参照系,你才知道自己是在逆水行舟还是顺水推舟。

他还区分两类目标:投资型目标(investment goals,主动去改变未来、把某件事推到新高度的投入)基线指标(baseline metrics,守住不许倒退的下限,比如可用性不能掉、延迟不能涨)把这两类分开,你才不会一边喊着要创新、一边默默让基本盘滑坡。四要素齐了,模糊的愿望才变成一个你能真正操舵的东西。

拉尔森还有一整套配套的「系统化」思路值得一并提纯。招聘,他当成一道系统题/数字题来解:不是靠面试官的一时直觉,而是刻意设计整条漏斗(funnel,从投递、初筛、面试到发 offer 层层收窄的流程)和面试环节,把标准统一下来以压低偏见(bias),并舍得在入职培训上投资——把招聘的质量和吞吐量当成一个可以调优的系统,而不是一连串拍脑袋。职业发展,他主张立明文的分级标尺(leveling rubric / career ladder,把每一级要什么能力写清楚的成长阶梯):让晋升变得可读、可预期、也更公平,别让「谁该升」沦为暗箱;同时提醒你也要经营自己的职业和精力,别只顾着燃烧。这些和前面的招式是同一个信念的延伸——凡是重要的事,都值得从「靠个人感觉」升级成「靠一套谁来都能跑的系统」。

把你心爱的乐高交出去

拉尔森引用了 Molly Graham 的一个说法:「把你的乐高交出去」(give away your Legos)。意思是:公司一长大,你必须把那些你最擅长、最享受、最舍不得放手的活交出去,腾出位置给新来的人、也让组织能扩展。

这话戳中的是一种很人性的挣扎。你亲手搭起来的那座乐高城堡——某个你从零做起来的系统、某块你了如指掌的业务——正是你的成就感来源,交出去像割肉。但拉尔森的机制很清楚:你攥着乐高不放,既卡住了组织的扩张(新人无事可做、成长受阻),也卡住了你自己的晋升(你被焊死在现在这层,因为你还在干本该由下面人干的活)。举例:你带团队做起了核心支付系统,现在招了个能干的新经理,你舍不得把这块交给他,事事还要过问——结果新经理无从证明自己、团队两个头、而你也永远腾不出手去接更大的盘子。把乐高交出去当下是失落的,长远却是组织和你个人同时向上的唯一通道。

精华骨架

把整本书拧成一条主线:规模是一切的隐藏变量,而系统思维是应对规模的唯一靠谱姿势。

公司小的时候,靠人情、靠英雄、靠一事一议就能转;一旦进入高速增长,人数与复杂度成倍翻,所有「靠个人硬扛」和「逐个开例外」的做法都会在某个规模点崩掉。拉尔森的整套工具,本质上都是同一个动作的不同侧面——把「靠人」换成「靠系统」,把「治标」换成「找杠杆」。

于是:看组织,用存量-流量而不是逐个事件;配人,按 4-8 人的可支撑跨度、把团队沿四状态阶梯往上搬、集中而非撒薄;分资源,立政策而不是开例外;还技术债,靠分阶段迁移而不是一次性重写;定方向,用目标值+基线+趋势+时限四件套;而作为管理者本人,要不断把乐高交出去,让系统(和你自己)能继续往上长。它证成的东西只有一句:能扩展的做法才活得下来,而让做法可扩展,就是把它从依赖某个具体的人,变成一套谁来都能跑的系统。

常见误读 & 批评争议

十句话精华

① 别把管理当成一连串孤立的救火,把组织当成一套有存量、有流量、有反馈的系统去看去调。

② 存量是某刻的积累,流量是单位时间的进出;水位一直涨,说明该动的是水龙头和排水口,不是水面上的警报。

③ 系统里有延迟和会自我强化的回路,最大的回报是找到那个「一改就改变全局」的杠杆点。

④ 团队有四种状态——越陷越深、原地踏步、偿还欠债、创新;管理者的活就是把它沿这条梯子往上搬。

⑤ 救被压垮的团队只有三招:加人、缩范围、给时间;但别往溺水的团队加人,要往就差一口气上岸的团队加,并且集中投放而非撒薄。

⑥ 需求长期大于供给时,对着政策做事,别对着例外做事——例外当下显得善良,却扩展不了、腐蚀公平、吃光你的时间。

⑦ 推变革靠先示范、再文档、后传播,别靠自上而下一纸命令;先证明有效,它才会自己长腿走出去。

⑧ 随公司变大,分阶段迁移(去风险→赋能→收尾)是唯一能有效管理技术债的机制;烂在长尾里的迁移交付不了价值。

⑨ 能导航的目标要凑齐目标值、基线、趋势、时限四样,并分清「主动投资」和「守住不倒退的下限」。

⑩ 把你心爱的乐高交出去——攥着不放,既卡住组织扩张,也焊死你自己的晋升。(大意,引自 Molly Graham)