有时候我会想:
一个人在公司里,到底怎样才算“有价值”?
以前我的答案很简单。
事情交给我,我能搞定。
别人解决不了的问题,我能解决。
项目卡住了,我能推进。
系统出故障了,我能找到原因。
复杂的问题到了我手里,最后总能落地。
这种能力,我用了很多年。
甚至很长一段时间,我对自己的职业价值感,恰恰就建立在这里。
哪里有问题,哪里就有我。
但到了40岁以后,我开始慢慢意识到:
这可能是一种能力。
也可能是一种陷阱。
因为当一个人越来越擅长救火以后,很容易出现一个结果:
所有的火,最后都会烧到你这里。
而真正的职业成长,也许不是让自己变成一个更厉害的救火员。
而是有一天开始思考:
为什么这个系统需要这么多救火员?
我曾经很享受“别人来找我”
现在回头看,这件事情其实有一点矛盾。
我一方面会抱怨:
为什么什么事情都来找我?
为什么问题最后都要我处理?
为什么很多事情明明不是我的职责,最后还是到了我这里?
但另一方面,当别人真的不来找我的时候,我可能又会产生另一种焦虑:
是不是我已经没那么重要了?
这其实是很多技术人容易掉进去的一个心理循环。
别人找你解决问题。
你觉得自己重要。
事情越来越多。
你越来越累。
然后开始抱怨事情太多。
但当别人不再依赖你的时候,
又开始怀疑自己的价值。
于是你会不自觉地继续证明:
“看,这个问题我能解决。”
“这个事情我来吧。”
“我比较熟。”
“这个系统我最了解。”
慢慢地,你成为了那个最不能离开系统的人。
听起来像是核心人才。
但换一个角度看:
你可能已经成为了系统的单点故障。
我第一次真正意识到这一点,是在一次问题复盘里
那次具体是什么项目,现在已经没有那么重要了。
重要的是那个过程。
问题出现。
大家开始讨论。
有人分析。
有人协调。
最后事情还是到了我这里。
我开始查。
翻资料。
看日志。
找原因。
和相关人员沟通。
然后一点一点把问题处理掉。
最后系统恢复。
从结果来看,这又是一次“成功救火”。
但问题解决之后,我没有马上离开。
我突然开始问自己:
为什么这个问题一定要等到我介入以后才能解决?
如果我下次不在呢?
如果我离开团队呢?
如果以后项目越来越多呢?
难道所有类似的问题,都继续由某一个人来处理?
那这个系统靠什么运行?
靠个人记忆?
靠经验?
靠责任心?
靠加班?
靠“谁遇到问题谁负责”?
如果答案是这些,那它其实并不是一个稳定的系统。
只是一个靠人撑住的系统。
那一天,我第一次觉得“救火成功”也可能是一种失败
这句话我后来想了很久。
因为从个人角度看:
问题解决了,就是成功。
但从系统角度看:
如果同样的问题不断发生,那么每一次成功救火,其实都在掩盖系统设计的问题。
就像一个服务器每天都会因为磁盘空间不足宕机。
每次有人登录进去清理一下日志。
系统恢复。
大家松一口气。
然后第二天继续。
如果一直这样做,我们可以说:
“运维人员响应很快。”
但真正应该问的是:
为什么没有日志轮转?
为什么没有磁盘监控?
为什么没有容量告警?
为什么没有自动清理机制?
为什么每一次都需要人工介入?
这就是我后来越来越喜欢的一个问题:
我们到底是在解决问题,还是在维持问题能够继续存在?
救火解决的是“事件”
系统设计解决的是“模式”
这是我后来慢慢形成的一个区分。
一次线上事故,是事件。
十次类似事故,是模式。
如果每次都只处理事件,你永远都会很忙。
但如果开始研究模式,事情就开始发生变化。
比如:
为什么需求总是在开发过程中变化?
为什么技术方案总是到了开发后期才发现问题?
为什么 Code Review 总是发现低级问题?
为什么供应商交付质量总是不稳定?
为什么同样的问题不断重复?
为什么项目延期以后,总是靠加班补回来?
这些问题单独看,都是一个个具体事件。
但把它们放到一起以后,就会发现:
它们背后其实都有系统性的原因。
这时候,人的角色就开始发生变化。
你不再只是:
“解决这个问题的人。”
而开始变成:
“理解问题为什么产生的人。”
再往前一步:
“设计机制,让问题更少产生的人。”
我开始刻意少给答案
这对我来说,其实挺难的。
因为给答案非常有成就感。
别人问:
“这个问题怎么处理?”
我马上告诉他方案。
事情立刻往前推进。
效率很高。
但后来我发现:
答案解决的是今天。
如果所有答案都必须从我这里出来,那么明天还会有人来问。
所以我开始尝试做另一件事情。
别人来问一个问题时,我会先反问:
“你觉得原因是什么?”
“你已经尝试过什么?”
“这个问题以前发生过吗?”
“如果再发生一次怎么办?”
有时候,对方可能只是需要一个答案。
但有时候,这几个问题反而会把一个更大的问题暴露出来。
这时候我才发现:
真正有价值的帮助,不一定是告诉别人答案。
有时候是帮助别人建立解决问题的能力。
这也是我对“管理”理解发生变化的地方
以前我对管理多少有一点误解。
觉得管理就是:
安排任务。
跟进进度。
检查结果。
处理问题。
协调资源。
后来我越来越觉得:
管理真正重要的部分,是设计系统。
设计规则。
设计流程。
设计边界。
设计反馈。
设计责任。
设计激励。
设计检查机制。
让一个组织不需要每一件事情都靠某一个人推动。
当然,现实里不可能完全靠系统。
人永远很重要。
但如果所有事情都只能依赖某几个“靠谱的人”,那么组织其实是非常脆弱的。
因为人会离职。
会疲惫。
会犯错。
会请假。
会有情绪。
会有自己的生命周期。
所以一个成熟的系统,应该尽量做到:
把人的能力变成系统能力。
我开始重新看待“流程”
以前看到流程,我容易觉得:
是不是太复杂了?
为什么做一个事情要这么多步骤?
能不能直接干?
但后来我发现:
好的流程不是为了增加步骤。
而是为了减少对个人经验的依赖。
一个成熟的技术方案评审流程,不应该依赖某一个专家“刚好看出来”。
一个成熟的 Code Review 机制,不应该依赖某个人“刚好认真看了”。
一个成熟的项目质量体系,也不应该依赖某个负责人每天盯着。
系统真正成熟的标志是:
即使换一个人,事情依然能够按照基本质量要求运行。
这其实和软件工程里的封装非常像。
好的系统不会要求每个调用者都知道内部实现细节。
好的组织也是一样。
不是每个人都需要知道所有东西。
而是:
关键知识和关键规则已经被封装进系统。
我也开始意识到,“个人英雄主义”其实很贵
年轻的时候,我们很容易崇拜英雄。
一个人搞定复杂项目。
一个人解决重大故障。
一个人扛住巨大压力。
一个人把事情从混乱中拉回来。
这种故事听起来很热血。
但如果站在系统角度看,它其实很危险。
因为这意味着:
系统把太多能力集中在一个人身上。
一个人很强。
不代表系统很强。
甚至有时候恰恰相反。
一个人越强,如果系统越依赖他,那么系统越脆弱。
所以现在如果让我重新评价一个技术人的价值,我可能不会只看:
“他解决过多难的问题。”
我会更关心:
他有没有让系统以后少出现一些问题?
他有没有让别人也能够解决问题?
他有没有把经验沉淀下来?
他有没有建立一套可以重复运行的机制?
这些事情没有那么“英雄”。
但它们可能更接近真正的系统能力。
从“我来”到“我们怎么让它不再发生”
这是我自己这几年变化最大的一句话。
以前遇到事情:
“我来。”
现在我会多停一下:
“为什么需要我来?”
如果是紧急问题,该我处理还是处理。
但问题解决以后,我会再问:
“下次还需要我吗?”
如果答案是需要。
那我会继续问:
“能不能让下次不需要我?”
这可能是一个流程。
可能是一个模板。
可能是一套检查清单。
可能是一条自动化规则。
可能是一套监控。
也可能只是把一个过去藏在脑子里的判断标准写下来。
这些东西单独看都很小。
但它们会慢慢改变系统。
我发现自己开始喜欢“没有发生的事情”
这可能是我职业价值观变化以后,一个很有意思的变化。
以前我喜欢那些“解决掉”的问题。
现在我开始喜欢那些:
本来可能发生,但最后没有发生的问题。
一个风险提前被发现。
一次错误在上线之前被拦住。
一个重复问题因为机制改变而消失。
一个新人不需要再问同样的问题。
一个项目因为前置评审而少走了一段弯路。
这些事情没有那么明显。
甚至没人知道它原本可能造成什么损失。
但从系统设计的角度看:
这才是真正的价值。
因为最好的故障处理,有时候就是让故障根本不要发生。
这让我重新理解了“经验”
以前我积累经验的方式,是:
做过多少项目。
处理过多少问题。
踩过多少坑。
认识多少技术。
现在我更愿意把经验分成两层。
第一层:
我知道怎么解决。
第二层:
我知道怎样让这个问题不再重复。
第一层是个人能力。
第二层才开始接近系统能力。
所以我现在越来越想做的一件事情,就是把自己的经验从脑子里拿出来。
写下来。
分类。
沉淀。
建立规则。
建立知识库。
建立检查机制。
甚至尝试用工具把这些东西自动化。
因为只有这样,经验才真正从“我的能力”变成“系统的一部分”。
当然,我现在还是会忍不住救火
我并没有完成什么华丽的转型。
事实上,我现在看到问题,第一反应依然经常是:
“我来看看。”
这十几年的工作习惯,不可能一下子消失。
而且现实工作里,很多时候也确实需要有人站出来。
所以我现在并不是要求自己:
“以后不要救火。”
而是:
救完以后,一定回头看一眼。
这次为什么着火?
有没有第二次?
第三次?
是不是某个机制出了问题?
如果我离开,这件事情还能不能正常运行?
如果答案是否定的,
那真正应该解决的,也许不是眼前这一次火。
而是:
这个系统为什么需要我一直站在这里。
我越来越相信,40岁以后应该开始建立“杠杆”
年轻的时候,我们的杠杆往往来自体力、时间和执行力。
你可以多做。
多学。
多加班。
多承担。
但这些东西终究有上限。
到了40岁以后,我越来越觉得真正值得积累的是另外几种杠杆:
知识的杠杆。
经验的杠杆。
系统的杠杆。
工具的杠杆。
内容的杠杆。
关系的杠杆。
资产的杠杆。
它们共同指向一个变化:
不要只让自己的时间产生价值。
要让过去积累的东西继续产生价值。
一个模板,可以重复使用。
一套流程,可以重复运行。
一篇文章,可以持续被看到。
一个工具,可以持续帮助别人。
一套经验,可以帮助更多人少走弯路。
这时候,你的价值才开始从“时间换结果”慢慢走向“系统产生结果”。
这也是我做“人生 Debug”以后越来越明显的一种感觉
我发现,我现在看自己的生活,也开始不自觉地用这种方式。
以前遇到一个问题:
“为什么我最近状态不好?”
现在会问:
我的睡眠怎么样?
工作负载怎么样?
有没有持续输入?
有没有持续输出?
有没有什么事情一直拖着?
有没有长期没有解决的技术债?
是不是某个系统一直在消耗我的注意力?
以前:
“为什么我总是拖延?”
现在:
“是什么环境让拖延成为了最容易发生的行为?”
以前:
“为什么工作让我这么累?”
现在:
“到底是工作量的问题,还是工作系统的问题?”
慢慢地,我开始发现:
很多所谓的个人问题,其实是系统问题。
如果只批评自己:
“你怎么这么懒。”
“你怎么不能坚持。”
“你怎么执行力这么差。”
可能永远解决不了。
因为你只是给 Bug 换了一个名字。
所以现在,我更愿意问“系统为什么这样运行”
这是我最近越来越习惯的一句话。
工作出了问题。
问系统。
家庭出现摩擦。
问系统。
自己长期拖延。
问系统。
内容没有持续输出。
问系统。
职业越来越焦虑。
也问系统。
当然,人永远需要承担责任。
系统思维不是推卸责任。
恰恰相反。
它要求你承担更高一层的责任:
不仅对结果负责,还要对产生结果的系统负责。
如果同样的问题不断发生,
那就不能永远说:
“这次是某个人的问题。”
也许真正需要改变的是:
规则。
流程。
信息。
环境。
激励。
边界。
或者整个运行方式。
我现在还没有成为一个真正的“系统设计者”
这个标题听起来,好像已经完成了一次职业升级。
其实没有。
我只是开始意识到:
我不想永远做那个最后冲进火场的人。
我还是会解决问题。
还是会处理事故。
还是会面对混乱。
只是现在,我越来越希望:
每扑灭一次火,
都能给系统留下一点东西。
一个规则。
一个检查项。
一个工具。
一个文档。
一个指标。
一次流程优化。
或者至少,
一个被记录下来的教训。
这样下一次火再来的时候,
系统就应该比上一次多一点准备。
也许这才是我理解的“成长”。
不是自己越来越忙。
而是:
自己做过的事情,开始慢慢变成系统的一部分。
最后,我想给自己留一句话
如果未来还有人问我:
“你现在到底是在做什么?”
我可能不会急着回答职位。
也不会急着回答某个具体的职业标签。
我更愿意说:
我正在从一个不断解决问题的人,慢慢变成一个设计问题解决方式的人。
以前,我的价值是:
“这个问题我能搞定。”
现在,我更希望自己的价值变成:
“这个问题,我们能不能设计一个系统,让它以后更少发生?”
这两个答案之间,
隔着的不是一个职位。
而是一种完全不同的思维方式。
也是我40岁以后,正在进行的一次职业重构。
我还在学习。
还在犯错。
还会救火。
还会回到具体问题里。
但我希望自己最终能够站得稍微远一点。
看见火。
也看见整栋楼。
看见问题。
也看见系统。
看见今天。
也看见下一次。
然后一点一点,
把那些原本只能靠人扛住的事情,
变成系统可以承担的事情。
从救火员,到系统设计者。
也许这不是一次职位上的转型。
而是一次看问题方式的升级。
而这次升级,
我还在路上。
我是语霖。
执笔为语,心落成霖。
希望用文字和声音,记录一个40岁程序员重新设计人生系统的过程。
我们下期接着聊。