跳到主要内容
阅微漫记
返回

一次向上汇报的接口重设计,带来了什么变化

以前我做汇报,有一个很明显的习惯。

我会把事情讲得很完整。

项目做了什么。

为什么这么做。

中间遇到了什么问题。

技术方案是什么。

目前进展怎么样。

下一步准备做什么。

我觉得这样才算“汇报清楚”。

毕竟作为技术人,我最擅长的就是把事情讲清楚。

所以我会准备很多材料。

很多页面。

很多数据。

很多过程。

甚至会提前猜测:

“领导可能会问什么?”

然后把这些问题也准备进去。

但有一次汇报结束以后,我突然意识到一个问题。

整个过程中,我讲了很多。

对方也听了很久。

最后却只问了我一句:

“所以,现在需要我做什么?”

那一刻,我突然意识到:

我可能一直在做一件事情。

把信息发送出去。

但我没有真正完成:

让信息产生作用。


那次汇报,其实没有出什么大问题

如果单纯看结果,那次汇报甚至可以算顺利。

材料准备得很完整。

数据也有。

项目进度也清楚。

风险也列了。

我甚至提前准备了几个可能被问到的问题。

但是结束之后,我自己感觉很奇怪。

因为我花了大量时间准备。

对方也花了时间听。

可是双方好像都没有真正得到什么。

后来我回到工位,把那份汇报材料重新打开。

我突然问自己:

如果把这份材料删掉80%,剩下的20%是什么?

我开始重新看。

项目背景。

过程。

技术细节。

实施过程。

各种截图。

各种数据。

然后我发现:

真正影响下一步决策的东西,其实并不多。

可能只有几个:

现在发生了什么?

为什么会这样?

有什么风险?

有哪些选择?

我建议怎么处理?

需要谁做什么?


我突然想到一个程序员很熟悉的东西

接口。

一个好的接口,不是把所有内部实现细节暴露出去。

调用方不需要知道:

数据库里面有多少张表。

代码里面有多少个类。

内部用了什么设计模式。

它真正关心的是:

输入是什么。

输出是什么。

有哪些约束。

可能出现什么异常。

调用之后能得到什么结果。

于是我突然意识到:

向上汇报,其实也是一个接口。

而我过去设计的这个接口,有一个很明显的问题:

把内部实现全部暴露给了调用方。


我以前的汇报,更像“日志输出”

我会把:

发生了什么。

做了什么。

怎么做的。

谁参与了。

遇到什么问题。

怎么解决。

全部讲一遍。

这其实很像系统日志。

日志当然有价值。

但如果一个系统把所有日志都直接丢给用户,让用户自己从几千行日志里面寻找真正的问题,那就不是一个好的产品。

后来我才发现:

汇报不是日志。

领导通常并不需要知道我这一天做了多少动作。

他真正需要知道的是:

这个事情现在处于什么状态?

有没有风险?

需要做什么决策?

需要投入什么资源?

如果不处理,会发生什么?

换句话说:

他需要的是经过处理的信息,而不是未经加工的原始数据。


所以我重新设计了自己的“汇报接口”

后来我尝试把一次汇报压缩成几个核心问题。

第一:

发生了什么?

不要讲十分钟背景。

先用一句话把事情说清楚。

第二:

为什么重要?

这个事情会影响什么?

业务?

项目?

成本?

风险?

时间?

第三:

现在是什么状态?

已经完成什么。

还有什么没有完成。

第四:

有什么问题或风险?

不是简单说“有风险”。

而是:

风险是什么。

发生概率怎么样。

可能造成什么影响。

第五:

有哪些选择?

如果存在多个方案,就把选择摆出来。

第六:

我建议怎么处理?

明确表达自己的判断。

第七:

需要什么决策或支持?

最后告诉对方:

你需要做什么。

这时候我才发现:

真正有效的汇报,不是把自己知道的东西全部讲出来。

而是:

把对方做决策所需要的信息,组织成一个可以被调用的接口。


最大的变化,是我开始敢于说“我的判断”

以前我特别害怕这一点。

因为技术人很容易陷入一个误区:

“我把事实讲清楚就好了。”

所以我们会说:

目前有A、B两个方案。

A有什么优点。

B有什么优点。

各自有一些风险。

最后:

“请领导决策。”

看起来非常客观。

但实际上,对方可能更困惑了。

因为:

你把信息传过去了,却没有提供判断。

后来我开始尝试:

事实是这些。

约束是这些。

我认为A更合适。

原因有三个。

如果选择A,需要承担这个风险。

如果选择B,则需要增加这些资源。

我的建议是A。

最后由对方决策。

这个变化对我来说其实挺大。

因为它意味着:

我不再只是信息搬运者。

我开始承担判断责任。


但“有判断”不等于“替别人决策”

这也是后来我慢慢找到的一个平衡。

技术人有时候会走到另一个极端。

以前不表达判断。

后来开始什么都要自己决定。

其实都不对。

真正好的向上沟通应该是:

把事实、判断和决策边界分开。

事实:

“现在系统有三个风险。”

这是客观信息。

判断:

“从技术成本和实施周期来看,我认为优先处理风险A。”

这是我的专业判断。

决策:

“是否接受剩余风险,需要业务负责人决定。”

这是决策边界。

这三个东西分开以后,沟通会清晰很多。


我还做了一个变化:开始主动暴露风险

以前我有一个很不好的习惯。

遇到问题以后,我会先自己解决。

实在解决不了,再汇报。

因为我潜意识里觉得:

把问题解决掉,才叫能力。

后来我发现,这种方式有一个很大的风险:

等我真的把问题暴露出来的时候,可能已经没有足够的时间处理了。

于是后来我开始改变。

如果一个问题已经影响到:

范围。

时间。

成本。

质量。

或者关键路径。

我会尽早让它进入汇报。

不是为了甩锅。

而是为了让风险尽早进入决策系统。

我会说:

“目前发现一个风险。”

“现在还没有造成影响。”

“但是如果在这个时间点之前不处理,后面可能影响上线。”

“目前有两个处理方案。”

“我建议采用方案A。”

这样,对方获得的不是一个已经爆炸的事故。

而是一个:

还有机会处理的风险。


这时候我才真正理解了“向上管理”

以前我听到“向上管理”这个词,总觉得有点别扭。

好像是在研究:

怎么让领导满意。

怎么汇报得漂亮。

怎么展示自己的工作。

后来我慢慢发现:

真正有效的向上沟通,并不是这些。

它更像:

帮助整个组织的信息流动得更顺畅。

你在一线。

你掌握大量细节。

领导在更高的位置。

他掌握的是更大的范围。

两边的信息天然是不对称的。

所以你的价值之一,就是:

把底层复杂信息翻译成上层可以理解、可以决策的信息。

这其实是一种非常重要的技术能力。

甚至可以说:

技术人做到一定阶段以后,真正的能力差距,很大一部分来自“翻译能力”。


汇报接口重设计之后,我发现了一个意外变化

以前汇报以后,经常会出现这种情况:

领导听完。

问几个问题。

我回去补材料。

然后再汇报。

再问。

再补。

循环几次。

后来当我开始按照“事实—判断—选择—建议—决策”来组织以后,沟通明显变得短了。

不是因为事情变简单了。

而是:

信息的结构变清楚了。

对方不需要再从大量信息里面自己寻找重点。

问题、风险和选择被提前整理好了。

所以讨论开始从:

“到底发生了什么?”

逐渐变成:

“那我们选择哪个方案?”

这其实是一个很明显的变化。

沟通从信息同步,开始变成决策协作。


我也开始重新理解“材料”

以前我觉得一份好的汇报材料应该:

完整。

漂亮。

信息丰富。

现在我的判断标准变了。

我更关心:

这份材料能不能帮助一个人做出更好的决定?

如果不能。

再漂亮也没有太大意义。

所以现在我会刻意减少一些东西。

没有必要的背景,不讲。

不会影响判断的过程,不讲。

已经解决的问题,不占太多篇幅。

大量技术细节,放到附录。

真正需要决策的内容,放到前面。

因为我越来越相信:

汇报材料不是工作成果本身。

它只是帮助工作继续往前走的一个工具。


这也改变了我看待“表达能力”的方式

以前我以为:

表达能力好,就是:

说得清楚。

讲得完整。

逻辑严密。

后来我发现,还不够。

真正重要的是:

你的表达有没有改变对方对事情的理解?

有没有让对方知道真正的问题?

有没有让对方理解风险?

有没有让对方看到选择?

有没有让对方知道你建议什么?

有没有让对方知道下一步应该做什么?

如果都做到了。

哪怕只讲五分钟。

也可能比讲半个小时更有效。


当然,我现在还是会犯错

有时候一涉及自己熟悉的技术领域,我还是会不自觉地讲很多细节。

尤其是当我觉得:

“这个地方如果不讲清楚,别人可能理解错。”

于是开始解释背景。

解释原理。

解释过程。

然后越讲越多。

后来我会提醒自己:

先把接口说清楚。

如果对方需要内部实现,再展开。

这其实和设计软件接口很像。

默认暴露最必要的信息。

需要更多细节的时候,再深入。

不要一上来就把整个内部系统打开。


我后来发现,真正被重设计的其实不是汇报

而是我的角色。

以前我把自己定位成:

执行者。

领导问:

“做到哪里了?”

我回答进度。

“有什么问题?”

我回答问题。

“下一步是什么?”

我回答计划。

现在我开始尝试把自己定位成:

一个能够发现问题、分析问题并提出选择的人。

这时候汇报就自然发生了变化。

因为你的工作本身已经不只是:

“我做了什么。”

而是:

“我发现了什么。”

“我判断意味着什么。”

“我建议怎么处理。”

“需要什么决策。”

这其实就是从执行走向判断的一个过程。


写在最后

我以前一直以为:

向上汇报,就是把自己的工作讲清楚。

现在我越来越觉得:

向上汇报真正解决的问题,是信息如何从一个复杂系统,流向另一个决策系统。

你掌握一线信息。

对方掌握更大的资源和决策权。

中间真正缺的,不是更多数据。

而是:

翻译。

把事实翻译成问题。

把问题翻译成风险。

把风险翻译成选择。

把选择翻译成建议。

最后,把需要对方做的事情说清楚。

这次“接口重设计”之后,我最大的变化不是:

我学会了怎么汇报。

而是开始意识到:

一个技术人真正的价值,不只是把事情做出来。

还包括:

看见问题。

理解问题。

判断问题。

然后让别人也能够基于这些信息做出正确的下一步动作。

以前我努力证明:

“我做了很多事情。”

现在我更希望让别人看见:

“这件事情现在到底意味着什么。”

可能这就是一个程序员开始从“写代码的人”,走向“解决复杂问题的人”之后,需要慢慢补上的另一种能力。

不是让自己说得更多。

而是让每一次信息传递,都真正产生一次有效调用。


我是语霖。
执笔为语,心落成霖。
希望用文字和声音,记录一个40岁程序员重新设计人生系统的过程。
我们下期接着聊。


分享这篇文章:

上一篇
一个「超级救火员」,是如何学会说不的
下一篇
一份坚持了三个月的「人生代码审查」日志复盘