第三章 站会恐惧症

一

王志远入职两周后,终于搞明白了一件事——每天早上九点十五分,是他一天中最难熬的时刻。

不是因为困。虽然他确实困,每天晚上回到出租屋还要看书补课,经常搞到一两点。但困可以靠咖啡扛过去。

真正让他难熬的,是站会。

云智科技的研发团队用的是 Scrum 敏捷开发流程。每天早上九点十五分,整个小组的人围在白板前站成一圈,每人轮流回答三个问题:

  1. 昨天做了什么?
  2. 今天打算做什么?
  3. 有没有什么阻塞?

听起来很简单。但对王志远来说,这三个问题就像三把刀,每天早上准时架在他脖子上。

因为他发现,自己经常无话可说。

不是真的什么都没做——他每天都在写代码、看文档、查资料。但他做的事情要么太琐碎,说出来显得没分量;要么进展太慢,说出来显得自己能力不行。

比如昨天,他花了整整一个下午在看订单模块的代码,试图理解一个复杂的状态机。他看了四五个小时,画了三页笔记,但最终也没完全搞懂。

这种事在站会上怎么说?

"昨天我看了一下午代码,没看懂。"

他光是在脑子里过了一遍这句话,就觉得脸上发烧。

二

站会的规矩是按工位顺序来,从赵北辰开始,顺时针转一圈。赵北辰旁边是苏薇,苏薇旁边是陈锐,陈锐旁边是马德华,马德华旁边就是王志远。

也就是说,他是倒数第二个发言。

这本来应该是个好位置——可以先听别人怎么说,学习一下话术。但实际效果恰恰相反:前面每个人说得都很流畅、很专业,轮到他的时候,对比就更加刺眼。

赵北辰的发言永远简洁有力:"昨天完成了支付网关的接口联调,发现了一个超时问题,已经定位到是连接池配置不合理,改了配置后压测通过。今天开始做异步回调的幂等处理。没有阻塞。"

苏薇更干脆:"昨天重构了用户鉴权模块,提了 PR,等 Review。今天开始写集成测试。没有阻塞。"

陈锐的发言总是带着一种不经意的炫耀:"昨天研究了一下 Spring Cloud Gateway 的限流方案,对比了几种算法,写了个技术调研文档,已经发到群里了。今天准备做 POC 验证。没有阻塞。"他说完还会看一眼周旋经理,确认对方有没有在听。

马德华最有意思。他的发言永远是一个模板:

"昨天在推进那个……呃……数据迁移的事情,跟 DBA 沟通了一下方案,还在对齐中。今天继续跟进。没有阻塞。"

王志远后来才知道,马德华所谓的"跟 DBA 沟通",就是在钉钉上发了一条消息,对方还没回。所谓的"对齐中",就是什么都没干,等着对方回消息。

但马德华说得云淡风轻,好像确实在推进一件很重要的事情。

然后就轮到王志远了。

"昨天我……呃……在看订单模块的代码。"他的声音不自觉地变小了。"看了状态机那一块,还没完全理解。今天继续看。没有……没有阻塞。"

他说完,感觉所有人的目光都在他身上停留了一秒。那一秒比一个世纪还长。

周旋经理在后面靠着墙,手里端着保温杯,面无表情地点了一下头。

站会结束后,王志远回到工位上,觉得自己像一个在课堂上被点名回答问题却答不上来的差生。

三

这种煎熬持续了一个星期。

到了第二周的周一,王志远在站会前十分钟就开始紧张。他坐在工位上,对着电脑屏幕,脑子里反复排练待会儿要说的话。

"昨天……不对,周五。周五我做了什么来着?"

他翻了翻 Jira,发现自己周五领了一个新任务——给后台管理系统加一个导出 Excel 的功能。他花了大半天时间在网上搜方案,试了两个开源库,一个报错一个太慢,最后选了 Apache POI,写了个 demo 但还没跑通。

怎么说呢?"周五试了两个库都不行,最后选了 POI 但还没跑通"?

这听起来像是:我折腾了一天,什么都没搞定。

他正在纠结措辞的时候,马德华端着咖啡晃过来,往他工位边上一靠。

"小胖,又在发愁站会说什么呢?"

王志远抬头看他,没说话,但表情已经出卖了他。

马德华笑了笑,压低声音说:"我教你个诀窍。"

他凑近了一点:"站会嘛,就是走个形式。你不用说得太具体,说具体了反而容易被追问。你就说——'昨天在调研 Excel 导出的技术方案,对比了几个开源库的性能和兼容性,初步选定了 Apache POI,今天开始编码实现。没有阻塞。'"

王志远眨了眨眼:"但是……我 POI 的 demo 还没跑通啊。"

"那你就别说没跑通嘛。"马德华理所当然地说。"你说'初步选定',这是事实吧?你说'今天开始编码',这也是计划吧?都没毛病。至于 demo 跑没跑通,那是细节,站会上不用说那么细。"

"可是如果有人问呢?"

"谁会问?"马德华往赵北辰的方向努了努嘴。"赵哥自己的事情都忙不过来,不会追着你问细节的。周旋更不会——他只关心大的进度,不关心你用什么库。"

王志远将信将疑。

马德华拍了拍他的肩膀:"小胖啊,职场不是学校,不用每句话都百分之百准确。站会的目的是让大家知道你在干活,不是让你交作业。你把话说得漂亮一点,大家都省事。"

说完他端着咖啡晃回了自己的工位。

四

九点十五分,站会开始。

轮到王志远的时候,他深吸一口气,按照马德华教的话术说了出来:

"周五在调研 Excel 导出的技术方案,对比了 EasyExcel 和 Apache POI 的性能和兼容性,初步选定了 Apache POI。今天开始编码实现。没有阻塞。"

他说得比平时流畅多了,声音也大了一些。周旋经理点了点头,没有追问。

站会结束后,王志远松了一口气。他觉得马德华的方法确实管用——不用说那么多细节,把话包装一下,听起来就专业多了。

接下来几天,他都用这个套路。

"昨天在实现 Excel 导出功能,完成了基础框架的搭建,今天继续完善细节。没有阻塞。"

实际上呢?他昨天花了大半天在解决 POI 的一个中文乱码问题,试了七八种编码方案都不行,最后在 Stack Overflow 上找到一个答案才搞定。所谓的"基础框架搭建",其实就是能导出一个空的 Excel 文件了。

"昨天在优化导出性能,处理大数据量的场景。今天做测试。没有阻塞。"

实际上呢?他发现导出一万条数据就内存溢出了,完全不知道怎么办,在网上搜了一下午也没找到好的方案。他确实有阻塞,但他不敢说。

他觉得自己学会了一种"职场语言"——把"我不会"翻译成"我在研究",把"我卡住了"翻译成"我在优化",把"我什么都没干"翻译成"我在对齐方案"。

这种语言让他在站会上不再那么难堪了。

但他心里隐隐觉得哪里不对。

五

转折发生在周四。

那天的站会上,王志远照例用包装过的话术汇报了进度:"昨天在处理导出功能的一些边界情况,今天继续完善。没有阻塞。"

站会结束后,赵北辰没有像往常一样回工位,而是端着茶杯走到王志远旁边,说了一句:"来,到会议室聊两句。"

王志远的心一下子提到了嗓子眼。

会议室里,赵北辰把门关上,坐下来,喝了一口茶,然后看着他:"志远,你那个 Excel 导出的任务,实际进度到哪了?"

王志远张了张嘴,想说"快完成了",但赵北辰的眼神让他把这句话咽了回去。

"……大数据量导出的时候会内存溢出,我还没解决。"他低下头。

赵北辰点了点头,表情没有任何意外:"我知道。"

"你知道?"

"POI 的 XSSF 模式是把整个 workbook 加载到内存里的,数据量一大肯定溢出。这是个很常见的问题,用 SXSSF 流式写入就能解决。"赵北辰说。"但这不是重点。"

他放下茶杯,看着王志远:"重点是——你卡了三天了,为什么不说?"

王志远的脸一下子红了。

"你这几天站会上说的那些话,'处理边界情况'、'继续完善'——我都听着呢。你以为我听不出来?"赵北辰的语气不重,但每个字都很清楚。"你在用话术糊弄站会。"

王志远低着头,不敢看他。

"是马德华教你的吧?"

王志远没说话,但沉默本身就是回答。

赵北辰叹了口气:"马德华那一套,在站会上确实能混过去。但你想过没有——你混过去了,然后呢?"

"你卡了三天,没人知道。如果你第一天就说'我遇到了内存溢出的问题,不知道怎么解决',我五分钟就能告诉你用 SXSSF。三天的时间,你本来可以把功能做完,开始写测试了。"

王志远的脸更红了。他算了一下——三天。他浪费了整整三天。

赵北辰站起来,走到白板前,画了一个简单的图:

站会的目的
├── ❌ 不是:向领导汇报表演
├── ❌ 不是:证明自己很忙
├── ❌ 不是:比谁说得漂亮
└── ✅ 是:团队信息同步
    ├── 让队友知道你在做什么(避免重复劳动)
    ├── 让队友知道你卡在哪里(及时获得帮助)
    └── 让团队知道整体进度(发现风险)

"站会只有十五分钟,每个人只有一两分钟。这一两分钟不是让你表演的,是让你同步信息的。"赵北辰说。

"你说'没有阻塞',但实际上你有阻塞。这个错误信息传递给了整个团队——大家都以为你的任务在正常推进,没人来帮你,你自己也不好意思开口。结果就是任务延期,到了 Sprint 结束的时候才暴露出来,那时候就不是你一个人的问题了,是整个 Sprint 的计划都要调整。"

他转过身,认真地看着王志远:

"说不会,不丢人。不说,才丢人。"

六

王志远坐在会议室里,脑子里翻来覆去地想着赵北辰的话。

他想起大学的时候,有一次数据结构课上,老师问了一个关于红黑树旋转的问题,全班没人举手。他其实知道答案,但不敢说——怕说错了被笑话。结果老师自己讲了,跟他想的一模一样。

他从小就是这样。不是不会,是不敢说。

小时候在班上,老师提问他总是低头。不是因为不知道答案,而是怕答错了被同学笑。父亲是中学老师,对他要求严格,每次考试没考好就会说:"你怎么这么笨?"他渐渐学会了一种自我保护的方式——不出头、不表态、不暴露自己的弱点。

这种方式在学校里勉强管用。考试只要闷头做题就行,不需要跟人沟通。但到了职场,这套就不灵了。

职场是一个协作系统。你不说,别人就不知道。你不问,别人就以为你会。你把问题藏着掖着,最后爆出来的时候,伤害的不只是你自己,还有整个团队。

他想明白了这一点,但想明白和做到之间,还隔着一道坎。

那道坎叫"面子"。

七

第二天的站会,王志远决定试一次。

轮到他的时候,他攥了一下拳头,说:

"昨天在做 Excel 导出功能。遇到了一个问题——大数据量导出的时候内存溢出,我查了一些资料,发现可能需要用 SXSSF 的流式写入模式,但我之前没用过,还在学习。今天打算先写一个 SXSSF 的 demo 验证一下。有一个阻塞——我不确定 SXSSF 模式下能不能支持单元格样式的自定义,如果有人了解的话,希望能指点一下。"

他说完,心跳得很快。他觉得自己刚才说了一大段"我不会",所有人一定在心里笑他。

但实际情况跟他想的完全不同。

苏薇第一个接话:"SXSSF 支持样式,但有限制——不能用 CellStyle 的 clone 方法,要自己创建。我之前踩过这个坑,待会儿把代码片段发给你。"

赵北辰点了点头:"SXSSF 是对的方向。另外你可以看看 EasyExcel,阿里开源的,底层也是 SAX 模式,API 比 POI 友好很多,性能也不错。"

马德华在旁边"嚯"了一声:"EasyExcel 好用,我之前用过。"——虽然王志远怀疑他所谓的"用过"大概率是让别人用过。

连陈锐都难得说了一句有用的话:"如果数据量特别大,可以考虑分页查询 + 流式写入,别一次性把数据全捞出来。"

整个过程不到两分钟。

王志远回到工位上,钉钉上已经收到了苏薇发来的代码片段,还有赵北辰转发的一篇 EasyExcel 的技术博客。

他盯着屏幕,愣了一会儿——他花了三天没解决的问题,在站会上说出来之后,两分钟就有了方向。

三天。两分钟。

他突然觉得之前那些精心包装的话术,蠢透了。

八

那天下午,他用 EasyExcel 重写了导出功能。API 确实比 POI 友好太多——几行代码就搞定了基础的导出,流式写入天然支持大数据量,内存占用稳定在几十 MB。

苏薇发来的代码片段帮他解决了样式自定义的问题。陈锐说的分页查询他也加上了——每次从数据库捞一千条,写入 Excel 后释放内存,再捞下一批。

到下班的时候,功能基本完成了。他写了几个测试用例,导出一万条、五万条、十万条数据,都没有内存溢出,速度也在可接受范围内。

他提交了代码,在 PR 描述里写了详细的技术选型说明:为什么从 POI 换成了 EasyExcel,性能对比数据是多少,大数据量场景下的处理策略是什么。

苏薇 Review 的时候只提了两条小问题——一个是异常处理不够完善,一个是建议加一个导出进度的回调接口。改完之后,PR 顺利合入。

从"卡住"到"完成",只用了一天。

如果他在第一天就说出来呢?

他不敢想。

九

从那以后,王志远在站会上的表现慢慢变了。

他不再花十分钟提前排练措辞,不再把"不会"翻译成"在研究",不再把"卡住了"翻译成"在优化"。他开始说实话。

"昨天在写用户导入功能,遇到了一个 CSV 编码的问题,GBK 和 UTF-8 混在一起,还没找到好的自动检测方案。今天继续查,如果下午还没解决,我会找赵哥请教。有阻塞。"

"昨天在改支付回调的接口,改完之后发现有两个测试用例挂了,还在排查原因。今天的目标是把测试修好。没有新的阻塞,但昨天说的那个 CSV 编码问题,苏薇给的方案可以用,已经解决了。"

他发现,当他开始说实话之后,站会反而变得轻松了。

不用再费心思编话术,不用再担心被追问时露馅,不用再在心里计算哪些该说哪些不该说。就是老老实实地说:我做了什么,我要做什么,我卡在哪里。

更重要的是,他发现团队的反馈变了。

以前他说"没有阻塞"的时候,没人理他。现在他说"有阻塞"的时候,总有人会在站会后主动来帮忙。苏薇会发代码片段,赵北辰会推荐文章,甚至陈锐偶尔也会分享一些有用的信息——虽然陈锐的动机可能是为了在大家面前显示自己懂得多,但客观上确实帮到了他。

他渐渐理解了赵北辰说的那句话:站会不是汇报表演,是信息同步。

当你把真实的信息同步给团队,团队才能真正帮到你。当你用话术把信息包装过,团队收到的就是假信号,帮也帮不到点子上。

十

有一天站会上,发生了一件让王志远印象深刻的事。

那天轮到马德华发言。他照例用那套万能模板:"昨天在跟进数据迁移的事情,跟 DBA 沟通了方案细节,还在对齐中。今天继续推进。没有阻塞。"

赵北辰突然问了一句:"德华,数据迁移这个事情你跟了两周了,现在到底是什么状态?DBA 那边的方案定了没有?"

马德华愣了一下,笑容不变:"呃……基本定了,还有一些细节在确认。"

"什么细节?"

"就是……迁移的时间窗口,还有回滚方案。"

"时间窗口定了吗?"

"还在协调。"

"回滚方案写了吗?"

"……还没。"

赵北辰的表情没有变化,但语气变得认真了:"德华,这个任务 deadline 是下周三。今天周四,还有不到一周。你跟了两周了,回滚方案没写,时间窗口没定。这哪叫'没有阻塞'?这叫'快黄了'。"

马德华的笑容终于有点挂不住了:"赵哥,这个主要是 DBA 那边排期紧……"

"DBA 排期紧是阻塞,你应该在站会上说出来,我来帮你协调。你不说,我怎么知道?"赵北辰说。"你每天说'没有阻塞',我以为一切正常。结果到了 deadline 才发现做不完,那时候整个 Sprint 的计划都要调整。"

马德华不说话了。

赵北辰环顾了一圈,对所有人说:"我再强调一次——站会上说'有阻塞'不是丢人的事,是负责任的表现。真正丢人的是明明有问题却不说,拖到最后爆雷。"

他看了一眼王志远。王志远觉得那个眼神里有一丝鼓励的意思——好像在说:"你看,不只是你,老员工也会犯这个错。"

站会结束后,马德华回到工位上,脸上的笑容消失了。他对着电脑发了一会儿呆,然后打开钉钉,开始认真地跟 DBA 沟通方案。

王志远看着马德华的背影,心里有一种复杂的感觉。他想起马德华教他话术的那天,那套"职场语言"确实让他在站会上不再那么窘迫。但现在他明白了——那套语言是一种麻醉剂,让你暂时不痛,但伤口一直在溃烂。

十一

又过了一周,王志远在站会上遇到了一个新的挑战。

那天他在做一个用户权限相关的功能,涉及到 RBAC(基于角色的访问控制)模型。他看了两天文档和代码,大致理解了原理,但在实现的时候遇到了一个设计上的困惑:权限校验应该放在 Controller 层还是 Service 层?

两种方案各有道理。放在 Controller 层,逻辑清晰,但每个接口都要写一遍校验代码;放在 Service 层,可以复用,但会让 Service 层的职责变得模糊。

他在站会上说了这个困惑。

说完之后,他以为赵北辰会直接给答案。但赵北辰没有。

"这个问题很好。"赵北辰说。"大家都说说自己的看法。"

苏薇说:"放在 Controller 层,用 AOP 切面统一处理,不用每个接口都写。"

陈锐说:"我觉得放在 Service 层更合理,因为权限是业务逻辑的一部分。"

马德华说:"我觉得都行。"——这是他的万能回答。

赵北辰听完,说:"这个问题没有标准答案,看你们项目的架构风格和团队约定。但志远能在站会上把这种设计层面的困惑提出来,说明他在动脑子,不是闷头敲代码。这就是站会的价值——不光同步进度,也同步思考。"

他看着王志远:"你把两种方案的优缺点整理一下,下午我们开个小会讨论。"

王志远点了点头。他注意到,这是他第一次在站会上提出一个"有质量的问题",而不是"我卡住了"。

从"不敢说话"到"敢说不会",再到"能提出好问题"——他觉得自己在站会上的角色,正在悄悄发生变化。

十二

那天晚上回到出租屋,王志远坐在床上,翻开笔记本。

他把这两周关于站会的经历和感悟写了下来。写着写着,他突然想到一个问题——站会这个东西,到底是怎么来的?为什么要站着开?为什么是每天?为什么是三个问题?

他打开电脑,搜了一下"Scrum Daily Standup",看了几篇文章,又翻了翻赵北辰推荐的《Scrum 指南》。

原来站会是 Scrum 框架中的五个事件之一,正式名称叫 Daily Scrum。之所以站着开,是为了控制时间——站着不舒服,大家就不会啰嗦,十五分钟之内结束。之所以每天开,是为了保持团队的节奏感和信息透明度。

至于那三个问题,其实不是强制的格式,而是一种常用的引导方式。Scrum 指南里说的是:Daily Scrum 的目的是检视 Sprint 目标的进展,并根据需要调整 Sprint Backlog。怎么开、用什么格式,团队可以自己决定。

但三个问题的格式之所以流行,是因为它简单有效:

  1. 昨天做了什么?——同步进度,让团队知道整体推进情况
  2. 今天打算做什么?——明确计划,避免方向偏离
  3. 有没有阻塞?——暴露风险,及时获得帮助

王志远在笔记本上画了一个表格,把自己这两周的站会发言做了一个对比:

第一周(话术模式) 第二周(实话模式)
信息质量 低(包装过的假信号) 高(真实的进度和问题)
获得帮助 无(没人知道你需要帮助) 多(团队主动提供方案)
心理压力 高(怕被追问露馅) 低(说实话反而轻松)
任务进度 慢(卡三天没人知道) 快(卡一天就有人帮)
团队信任 降低(大家觉得你在糊弄) 提高(大家觉得你靠谱)

对比太明显了。

他又想起赵北辰在白板上画的那个图,把它重新抄了一遍,旁边加上了自己的注释。

然后他在笔记本的最后写了一行字:

Day 15

马德华的话术能让你混过一次站会,但混不过一个 Sprint。赵哥的方法看起来笨,但省下来的是三天、三周、甚至三个月。

笨功夫才是真功夫。

写完这行字,他愣了一下——"笨功夫才是真功夫",这不是赵北辰的口头禅吗?

他笑了笑,合上笔记本。

窗外传来隔壁外卖骑手的闹钟声,又响了一下就灭了。楼下的烧烤摊飘来孜然味。出租屋的灯管还是有点闪。

但他觉得,今天的灯光好像比昨天亮了一点。


:::{admonition} 小胖的笔记 :class: tip

本章知识卡片:Scrum 站会(Daily Scrum)

1. 什么是站会?

站会是 Scrum 框架中的一个日常事件,全称 Daily Scrum。每天固定时间、固定地点,全体开发团队成员参加,时长不超过 15 分钟。

为什么站着开? 站着不舒服 → 大家不啰嗦 → 控制时间。

2. 站会的三个经典问题

问题 目的 示例(好) 示例(坏)
昨天做了什么? 同步进度 "完成了导出功能的编码,提了 PR" "在推进那个事情"
今天打算做什么? 明确计划 "写导出功能的单元测试,目标覆盖率 80%" "继续昨天的工作"
有没有阻塞? 暴露风险 "大数据量导出内存溢出,需要技术方案支持" "没有阻塞"(实际上有)

3. 站会的常见误区

❌ 误区                          ✅ 正确姿势
─────────────────────────────────────────────────
把站会当汇报表演                  把站会当信息同步
只对领导说                        对整个团队说
用话术包装进度                    说真实的进度和问题
说"没有阻塞"(实际有)            勇敢说"有阻塞,需要帮助"
汇报做了多少小时                  汇报完成了什么、还差什么
一个人讲十分钟                    每人一两分钟,简洁有力
站会上讨论技术细节                记下来,会后单独讨论

4. Scrum 框架速览

Scrum 有 3 个角色、5 个事件、3 个工件(简称 3-5-3):

3 个角色: - Product Owner(产品负责人):决定做什么 - Scrum Master(敏捷教练):确保流程顺畅 - Development Team(开发团队):决定怎么做

5 个事件: - Sprint(冲刺):固定时长的迭代周期(通常 2 周) - Sprint Planning(计划会):Sprint 开始时,确定这个 Sprint 要做什么 - Daily Scrum(站会):每天 15 分钟,同步进度 ← 本章重点 - Sprint Review(评审会):Sprint 结束时,展示成果给利益相关者 - Sprint Retrospective(回顾会):Sprint 结束后,团队反思如何改进

3 个工件: - Product Backlog(产品待办列表):所有待做的需求 - Sprint Backlog(Sprint 待办列表):本次 Sprint 要做的需求 - Increment(增量):Sprint 结束时交付的可用产品增量

5. 站会发言模板(新手友好版)

"昨天我完成了 [具体任务],进度是 [百分比/状态]。 今天我计划做 [具体任务],目标是 [可衡量的成果]。 [有/没有] 阻塞。[如果有:具体是什么问题,需要谁的帮助]。"

记住:说"有阻塞"不丢人,藏着不说才丢人。

:::