工程师的沟通成本为什么总是被低估

博客分类: 

每个项目复盘的时候,技术负责人都会提一个问题:为什么又延期了?

然后大家开始列原因:需求变更、技术方案调整、第三方接口不稳定、测试环境问题……很少有人提"沟通"。

因为沟通好像不属于正经的工作。你写了一千行代码,那是产出;你开了三小时会,那是浪费时间。但实际情况是,你开的那三小时会,可能比写一千行代码对项目的影响更大——不管是正面还是负面。

 

沟通不是耽误开发,沟通本身就是开发

 

很多工程师有一种根深蒂固的观念:写代码才是正事,沟通是不得不做的打断。所以他们会尽量减少沟通——需求文档能不读就不读,能用文字说清楚的绝不开会,能自己决定的绝不找人讨论。

这种做法在个人项目里没问题。一个人写代码,沟通成本为零。但团队项目不一样。

一个五人团队,如果每个人对需求的理解偏差10%,最终集成出来的东西可能偏差50%。这不是数学平均,这是偏差的累积——前端理解的交互逻辑和后端理解的数据结构不一样,测试理解的验收标准和产品理解的验收标准不一样,等大家把代码合到一起才发现问题,修复的成本是开发阶段的十倍。

沟通不是耽误开发,沟通是在降低返工的概率。提前花半小时对齐一个模糊的接口定义,可能省下三天联调的时间。但很少有人算这笔账,因为省下的时间是不可见的,花掉的时间是实实在在的。

 

三个让沟通成本爆炸的场景

 

我观察下来,让沟通成本急剧上升的有三种典型场景,每种都有对应的解法,但大部分团队选择无视。

第一种是跨角色的理解鸿沟。产品经理说"用户要能看到收益",前端理解成"展示收益率",后端理解成"返回收益金额",测试理解成"收益数据不能为空"。四个人四种理解,谁都没错,但合在一起就是一个Bug。

这种问题的根因不是谁不认真,是自然语言本身就有歧义。解决办法也不是"加强沟通"这种正确的废话,而是把关键接口的定义从自然语言变成形式语言——接口文档写清楚每一个字段的含义、类型、边界条件,而不是写"返回收益信息"就完了。

第二种是决策链条太长。一个技术方案需要A评审、B审批、C确认、D备案。每个环节都可能提出异议,每个异议都需要重新沟通。方案改了三轮还没定稿,不是因为方案不好,是因为决策链条上有四个可以否决的人,而他们之间没有对齐。

解法很简单:能做决策的人越少越好。一个技术方案,一个技术负责人拍板就够了。如果他拍板错了,那是他的能力问题,可以用别的方式解决;但如果没人能拍板,那是流程问题,比能力问题更难修。

第三种是上下文不共享。新人加入项目,不知道之前的决策背景;其他团队来配合,不知道系统的约束条件;远程协作的同事,不知道白板上画的那张图已经改了三版。每个人都基于自己的信息做判断,结论自然不一样。

共享上下文最有效的手段不是开更多的会,是写下来。技术方案文档、架构决策记录(ADR)、接口变更通知——这些看起来费力不讨好的文档,真正的作用不是给将来的人看,是给现在的团队对齐信息用的。

 

远程协作不是沟通成本高的原因

 

很多人把沟通问题归咎于远程办公。但我的观察是,远程协作只是放大了已有问题,没有创造新问题。

坐在一起的时候,你转个椅子就能问一句"这个字段是前端算还是后端算",看起来沟通成本很低。但问题是,这种即兴沟通没有记录,其他人不知道你们达成了什么共识。一个星期后,另一个人按照自己的理解实现了同一个功能,冲突就来了。

远程协作倒逼你把沟通变得正式:写在文档里、发在群里、开有议程的会。这些形式成本看起来更高,但产出的信息是持久的、可追溯的、可共享的。

我见过沟通效率最高的团队,恰恰是远程团队。因为他们没办法靠"喊一嗓子"来协作,只能把所有共识文档化。结果是,任何新人花半天读文档就能理解系统全貌,而坐在一起的团队里,很多关键信息只存在于那几个老员工的脑子里。

所以问题不在远程还是坐班,在于你的沟通能不能沉淀成信息。

 

会议室里的沟通 vs 代码里的沟通

 

大部分团队衡量沟通成本,只算会议室里的时间。这是严重低估。

代码本身就是一种沟通——写代码的人和读代码的人之间的沟通。代码写得不清晰,阅读者需要花额外的时间理解,这也是沟通成本。注释写得有歧义,照着注释改代码改出Bug,这也是沟通成本。接口定义改了但没通知下游,下游按旧接口写了一周代码全部作废,这还是沟通成本。

更常见的是,代码评审变成了一种低效的异步沟通。一个500行的PR提交上来,reviewer在三个地方提了意见,作者每个意见都回一段解释,双方来回三轮还没定论。这种沟通的总时间,可能比两个人坐下来花十五分钟面对面过一遍还长。

所以减少沟通成本的另一个思路,不是减少沟通,而是选择更高效的沟通方式。复杂的技术讨论当面二十分钟能说清楚,在PR评论里可能要来回两天。简单的UI确认发个截图就够了,没必要开会。

选错沟通方式的代价,往往比沟通本身还大。

 

为什么工程师不愿意沟通

 

说到底,沟通成本被低估的根源,是工程师天然不愿意沟通。

不是不想沟通,是沟通的收益不可见、成本很可见。你花两小时跟产品经理对需求,这两小时是实实在在花了的;但你不花这两小时可能省下的返工时间,你永远看不到。

绩效评估也在强化这个倾向。你写了三千行代码,那是可以量化的产出;你花时间把一个跨团队接口对齐了,没人给你算绩效。所以理性的选择是:少开会,多写代码,出了问题再说。

这种激励机制不变,沟通成本就会持续被低估。技术管理者能做的,是在团队里建立一种认知:沟通是工程工作的一部分,不是对工程工作的打断。把关键沟通的时间计入排期,把接口文档的完善度纳入代码评审标准,把"减少了多少返工"作为技术方案的隐性收益来评估。

你不需要让每个人都变成沟通达人。你只需要让团队承认:沟通成本是真实存在的工程成本,跟写代码的时间一样重要。

低估它,不是省下了时间,是把问题推迟到了更贵的阶段。

Total votes: 2

添加新评论