团队分工的思考
先说结论,免得你白看
从前分团队,按手艺分:前端、后端、产品设计。 现在分团队,按阶段分: 原型师 —— 抓住第一个想法,飞快试错 构建者 —— 把原型做成能推向市场的产品 维护者 —— 软件跑到规模之后守住它 扩展者 —— 把跑通的产品放大 10 倍、100 倍 收尾人 —— 打磨产品和代码,把毛刺磨掉 至于为什么现在才这么分,答案跟 AI 有关,往下看。
分工的两种分法
从前我们分团队,是分前端、后端、产品设计。这种分法有个隐含前提:软件是一栋房子,有人砌墙、有人装窗户、有人画图纸,各管一摊,把房子盖完,事儿就完了。
把软件比作房子,是程序员的自我安慰。房子盖完就能住人,软件写完只是个开头。你养过狗就知道,把狗买回来不算本事,难的是之后每天遛它、喂它、给它铲屎,还要在它咬坏沙发的时候忍住不把它炖了。软件就是那条狗,买回来那天,是它一生中最安生的时刻。
所以"你负责哪一块"这种分法过时了。更诚实的问法是:你负责它的哪个阶段。
前端、后端、产品设计,是按"你碰什么"来分,这是解剖学的思路:这是心脏科,这是骨科,这是牙科。五种角色是按"你什么时候碰"来分,这是畜牧学的思路:配种、接生、催肥、宰杀。解剖学描述尸体,畜牧学描述生命。我不是说前端后端产品设计不重要,我是说,它们是给死人用的学科,而软件是活的。
为什么偏偏是现在,旧分法开始显得过时?因为写代码这件事,变便宜了。
以前写代码是一门手艺,跟木匠、铁匠、劁猪匠一样,讲究十年磨一剑。你师父教你三年,才敢让你碰生产环境。现在大模型出来了,写代码跟写请假条一样容易,一个实习生带着 AI 能顶以前一个组。手艺的门槛塌了,按手艺切的地盘也就跟着塌了。这不是谁的错,这是时代把桌子掀了。
稀缺的从"写"变成了"判断":试哪个方向、承诺什么、什么东西不能动、哪里会塌、哪里还不够好。这五种判断,恰好就是那五个角色。
团队实际分化出来的,是五种角色。
一件软件的一生
团队的分化不是计划出来的。第一个想法冒头的时候,总有一个人先动手,别人还在开会讨论可行性,他已经把页面戳出来了。等他玩腻了,另一个人把它收拾成人样,能给别人用了。再往后它跑起来了,有人开始守夜。它被越来越多的人用,又有人开始重新想架构。最后,总有一个人在看所有人都不看的地方——那个错位的像素、那句像报错一样的话术、那个点了没反应的按钮。
一件事要活下来,五双手都要伸出来。但五双手不是五个部门,它们是同一个东西的五个阶段。这一点,绝大多数团队要到吵过很多次架、摔过好几次门之后才明白。有的团队永远不明白,也没关系,他们只是换一拨人再吵一次。
原型师:先动手的人
原型师抓住第一个想法,飞快地试错。他的产出不是代码,是答案:这个方向对不对,值不值得继续往下走。说得学术一点,他是在用最小的成本,购买"此路不通"这个情报。
原型师最重要的本事是舍得扔。最好的原型就是被扔掉的那个,就像最好的实验就是失败的那个——它完成了任务,它的任务就是被证伪,然后被扔进历史的垃圾堆。一个原型师如果发现自己的代码活过了一个月,他会觉得那不是他的了,是别人捡去养大的。他的文件名通常叫 data_final_true_final_v3,因为他从一开始就没打算让它活太久。给死人化妆是不道德的行为,他深谙此道,所以连名字都懒得起好。
原型师讨厌一切让事情变慢的东西:文档、规范、命名评审、写单元测试。别人觉得他邋遢,其实他不是邋遢,他是诚实。就像外科医生不会给手术台上的临时切口绣花,他也不会给注定要死的代码写注释。
原型师最怕的不是失败,是别人把他的原型当成产品。一个本该被扔掉的东西,被认真地维护起来、认真地向用户承诺,那才是真正的灾难。方向错了可以换,被一个错的方向绑架住,就换不了了。这种事每天都在发生,原理很简单:扔东西需要勇气,而团队最缺的就是勇气,他们宁可抱着一个错的方向一起淹死,也不肯承认当初选错了船。
构建者:把它变成承诺
构建者把原型做成能推向市场的东西。原型和产品的区别,说穿了只有一个字:承诺。
原型是一堆碰巧能跑的巧合。产品是一个承诺——对用户承诺它能干什么,对团队承诺它今天能交付,对下一任接手的人承诺它看得懂。把"在我机器上能跑"翻译成人话,就是"除了我谁都用不了";构建者的工作,就是把这句屁话变成一句真话。
构建者干的活全都不起眼:错误处理、空状态、断网的时候、加载失败的时候、用户乱点的时候。你知道断网的时候页面应该显示什么吗?这个问题没人记得是谁定的,但全世界用户都见过它。构建者就是那个在没人注意的地方,替全人类做出决定的人,而且决定得好了,没人感谢他。
构建者和原型师天生紧张。原型师觉得构建者把好东西做丑了,构建者觉得原型师画的图纸没画地基。他们都没错,只是站在同一栋楼的两个阶段上,一个负责上梁,一个负责打地基,偏偏顺序是反的,所以两个人互相觉得对方脑子有病。
维护者:让一切都别发生
软件跑起来之后,真正的成本才开始。行业内有个说法:绝大部分代码是维护代码,新功能只是其中一小部分。翻译一下:绝大多数人干了一辈子,干的是给前人擦屁股的活。这话难听,但数据支持。
维护者的成功标准是:今天什么都没发生。系统好好的,用户毫无感觉——而用户毫无感觉,就是他工作了。你想想守夜人:守夜人最大的成功就是一夜无事,但没人给他发奖状,因为没有任何事发生。可要是那夜出了事,责任全是他的。这叫负收益博弈,从数学上讲,当守夜人是全世界最不划算的职业。凌晨两点的告警是他的闹钟,别人留下的烂摊子是他的日常,代码里那些没人能解释的注释、三个已经离职的人做出的决定,都是他在记着。别人离职了,他们的记忆留在他脑子里了,而且没有加班费。
维护者保守,不是因为他古板,是因为他每天面对的是风险。他每改一行代码,都可能成为压垮系统的那根稻草,所以他学会了说"不"。这让他不讨人喜欢。所有想改东西的人都觉得他是绊脚石,只有系统挂了的时候,大家才想起他,然后用他的名义开复盘会。
维护者的报酬是隐形的:系统没有死在他手上。这件事没人会写进感谢信,但它每天都在发生,就像空气。人活着不感谢空气,但空气没了,五分钟人就没了。维护者就是软件行业的空气。
扩展者:让数字换个量级
把跑通的产品放大十倍、一百倍。有人说这是努力的问题,我告诉你,这是物种问题。一只鸡放大十倍,还是鸡,顶多算只大公鸡;但一个支撑一百人的系统放大到十万人的时候,它已经不是原来的系统了,它变成了另一种生物,像蝌蚪变青蛙——还得把自己的尾巴吞掉,才能变成一只呱呱叫的东西。
扩展者不看功能,看瓶颈:那条在 100 行数据时好好的 SQL、那台一直没换过的老服务器、那个从来没想过会出现第二个实例的架构。他愿意拆掉正在工作的东西——因为它现在能工作,不代表以后能。这句话反过来说就是:他要在系统还没死的时候,先把它拆了,防止它死。从外面看,这跟破坏没什么两样,所以扩展者通常是团队里最招人恨的。
扩展者和维护者的矛盾是结构性的,没法调和:一个守,一个拆。守的人花几年把系统养稳,拆的人用几个月把它重新拼一遍,拼完守的人又得重新养。你要是问他们俩谁对,我告诉你,都对,但你必须二选一,选完还得准备承担后果。不拆的下场是:产品成功了,然后被自己的成功压死。这种事情一点也不罕见,史书上管这叫盛极而衰,做产品的人管这叫"我们没想到用户这么多"。
收尾人:磨掉毛刺
收尾人打磨产品和代码,把毛刺磨掉。他看别人都看不见的地方:页脚那个错别字、加载时那一下闪烁、点了没反应的按钮、退出时那句冷冰冰的"确定吗?"。在座各位都是做产品的,你们肯定知道我说的这些东西。它们说出来谁都觉得是小事,但它们天天在用户眼皮底下晃,就像你鼻梁上沾了一粒饭,你自己看不见,全世界都看见了。
收尾人常被当成吹毛求疵的人——“这就是个细节”。但细节恰恰是用户摸到的产品本身。用户分不清"功能完成"和"产品完成",他能感觉到的只有一件事:这个东西用起来是顺手,还是别扭。那个"别扭",就是收尾人在填的坑,而且他填坑的时候,全世界都不知道有坑。
收尾人是最后一个碰作品的人,他继承所有人的偷懒。别人赶工期留下的每一个捷径,最后都是他来擦。他说"还差一点",不是客套,是真的差那一点,只是那一点只有他一个人看得见。你管他叫强迫症也行,但你要知道,一个产品最后的体面,就是这种人撑起来的。
AI 不会替掉这五双手
到这里会有人问:代码都是 AI 写的了,这五个角色还在吗?
在,而且比从前更清楚。因为这五个角色从来不是关于写代码,是关于判断。AI 接管的是手,留在人这边的全是判断:
- 原型师:AI 让试错便宜一百倍,但"试哪个"还是人拍板。坏主意现在可以死得更快,好主意也一样,这很公平。
- 构建者:实现可以交给 AI,但"承诺什么、标准是什么"得人定。AI 不会替你对用户负责,出事的时候它也不会替你挨骂。
- 维护者:AI 能写测试、能修 bug,但"什么东西不能动"得人定。系统里最贵的知识不是怎么写,是哪里碰不得。这个知识 AI 学不会,因为它是用离职的人的血换来的。
- 扩展者:瓶颈不再是写出高效的代码,是看懂系统。AI 看得懂语法,看不懂一家公司的架构史,就像它能读史书,但读不懂你们公司为什么有十七个版本的用户表。
- 收尾人:AI 的产出是平均的,平均成了地板,审美成了天花板。人人都会用 AI 做出"差不多"的东西,差的那一点,就是收尾人。
所以 AI 放大的不是角色,是产能。判断还是那些判断,只是产能越大,判断错了,死得越快。很多团队 AI 用得风生水起,产品却没什么起色,多半就是这个原因:代码产量翻倍了,那五种判断没跟上。这就像给你配了一台跑车,但方向盘还是原来那个——不,方向盘也没了,原来那套还是手摇的。
接力赛死在交接棒
这五个人不是团队的五个岗位,是同一件东西的五种状态。一个人可以在不同时期戴上不同的手套,一个五人团队也可能五个人都是原型师——那样的话,他们会在第五个原型上吵起来,因为每个人都想试自己的方向,而且都觉得别人的方向是错的。
接力赛最容易输在交接棒上。四个人各跑一百米,成绩好坏全看交棒那一下。我见过跑得最快的队伍,因为交棒掉在地上,输给了隔壁跑得最慢的。软件的死法,大多不是死于竞争,是死于换手:
- 原型师放不下手。那个想法是他生的,别人接手像抢他的孩子,他一次次回来改,产品就永远停在原型阶段。这跟父母溺爱孩子是一个道理,孩子都三十了还当婴儿养。
- 构建者交不出手。他的架构从没想过要跑十万用户,等要扩的时候,等于把地基掀了重盖。他当年盖的是平房,现在要盖楼,他坚持说平房挺好。
- 维护者接不住手。系统出事之前,所有人觉得他可有可无;出事之后,所有人又都怪他。两头都不落好,所以他学乖了,学会推诿了——这不能怪他,这是被系统训练出来的。
- 最惨的一种:没人接棒。原型做完就没人管了,demo 永远躺在演示录屏里。这是软件的夭折,而且是溺死——不是没人救,是救生员都在开会,讨论该派谁去救。
缺了谁,东西死在哪
缺任何一个角色,东西都会死,只是死法不同:
- 没有原型师:团队精心打磨一个没人验证过的东西。这让我想起一个笑话:一群人花十年盖了一座非常漂亮的楼,结果盖在流沙上。楼塌的时候,大家不后悔选址,后悔的是楼不够漂亮。没有原型师的团队,就是在流沙上盖楼,而且盖得很用心。
- 没有构建者:永远在演示。什么都是概念验证,什么都不是产品。这跟一个人永远在相亲、永远不结婚是一个道理——每次都有火花,每次都无疾而终,最后年纪大了,连相亲对象都懒得见了。
- 没有维护者:死于凌晨两点。所有系统都喜欢在凌晨两点死,仿佛它们生前和深夜有仇。一个人走了,代码的秘密也跟着走了,没人懂那堆复杂的旧东西。这时候大家才发现,原来维护者不是可有可无,是系统唯一的遗嘱执行人,而他还没来得及立遗嘱。
- 没有扩展者:产品被喜欢,然后死于被喜欢。这是最讽刺的一种死法:一家饭店因为客人太多,把厨房挤塌了。老板临死前还在想:我们到底做错了什么?你们做错了"没想过会来这么多人"这一件事。
- 没有收尾人:什么都不坏,但什么都不对。用户说不上来哪里不对,只觉得别扭。这种缺最阴险,因为尸检都查不出死因,大家只能怀疑是产品经理的建议。
报酬是反的
这五个角色在公司里的名声,和他们的重要性恰好是反的。原型师、扩展者最风光,一个代表创新,一个代表增长,都是能写进 PPT 的。构建者还行。维护者和收尾人最没存在感——他们的优秀是"坏事的缺席",而缺席是没有新闻的。没有新闻,就没有汇报;没有汇报,就没有绩效;没有绩效,就没有年终奖。这是完整的因果链,环环相扣,缺一不可,可惜这条链子通向的地方,不是他们该待的地方。
组织的激励会把人推向看得见的两头,这符合经济学里的理性人假设:人们只做有回报的事,回报只发给看得见的功劳。于是出现一个奇观:一个正需要维护者的系统,没人愿意去守,因为守得好也看不见;一个正需要收尾人的产品,收尾的人被调去写新功能,因为新功能可以写进汇报里。
大部分软件不是死于竞争,是死于没人愿意做那些看不见的事。这句话值得重复一遍,虽然重复也改变不了什么,但至少能让读到的人心里咯噔一下。咯噔完之后,该看不见的,还是看不见。
问自己两个问题
所以别问"哪个角色最重要"。五个角色缺了任何一个,东西都会在某个阶段死掉,只是死法不同。问这种问题的人,就像问"肺和心脏哪个重要"——答案是都重要,但你要是非让我选一个,我选先跑。
要问的,是两个别的问题。
第一个:这个东西现在在哪双手里? 团队一半的吵架,吵的都是"现在该干哪一阶段的活"——原型师想再验证一下,构建者想快点交付,维护者想让它别再变了。三个人都对,只是他们不知道自己说的是不同阶段的事。这就像三个人争论一只鸡是煎着吃、炖着吃还是养着下蛋,其实鸡只有一只,三个人都饿着,而且鸡还活着。
第二个:我自己是哪双手? 答案藏在你做哪件事时感觉不到时间在走。注意,不是哪件事你做得好——被夸出来的好不算数,老板夸你是为了让你多干活——而是哪件事你没人看也在反复做。原型师会在洗澡时推演新想法,维护者会忍不住去修那个一直存在的别扭,收尾人在关电脑前还会再调那两像素。这两像素没人看得出来,但他调完了,睡得香。
一个人被迫待在手感不对的角色里很多年,会得一种说不出来的病:什么都没错,就是不顺。这不是矫情,是手和活对不上。就像让一个屠夫去绣花,他也能绣,只是绣出来的花都带着杀气,而且他自己也知道,这不叫花,这叫刀工展示。
最后
最后说点不合时宜的话。这五双手,也是一个软件从业者自己的职业生涯。年轻时多半像原型师,什么都想试,觉得天高地大;被交付磨成了构建者,学会了写注释和处理边界情况;再往后,要么守一个东西守到退休,要么去更大的舞台上做扩展者;而收尾人的审美是越老越值钱的——年纪越大,越忍不了毛刺。我见过不少四十多岁的人,年轻时也是热血青年,现在最大的乐趣是修好一个别人都不在乎的 bug,或者在深夜把一个按钮往左移两个像素。你问他值不值,他说值。你别笑话他,一个人能在没人看见的地方,心甘情愿地磨掉一根毛刺,这是很大的福气。
这行干久了你会明白:人生是个缓慢受锤的过程。锤完之后,你还认得自己是谁,还知道自己这双手该干什么,还想把手里的活干好,那这一辈子,就算没白锤。要是锤完之后,你连自己喜欢干什么都忘了,那才叫亏。
最好的团队,是五双手都知道自己是谁,也知道现在该谁上。更重要的是,他们都愿意在交接棒的时候,把手松开。松手这件事,比接棒难多了。人这一辈子都在学怎么抓牢,很少有人教我们怎么松开。可你想想,接力棒攥在自己手里不撒手,队伍是跑不远的。