我以前特别喜欢解决问题。
准确地说,我喜欢把问题解决掉。
程序报错了。
修。
系统慢了。
优化。
需求变了。
改。
流程不合理。
补一个环节。
团队出了问题。
再加一个规则。
久而久之,我发现自己的人生也变成了这个样子。
哪里不舒服,就在那里打一个补丁。
工作不开心?
告诉自己再坚持一下。
职业没有增长?
多学一点新技术。
时间不够?
把每天安排得更满。
收入不够?
再接一点项目。
身体疲惫?
周末休息一下。
对未来焦虑?
再多做一点准备。
看起来,我一直在解决问题。
但几年以后回头看:
问题并没有真正消失。
只是被我一层又一层地盖住了。
那时候我才开始意识到:
人生里的很多问题,不是缺一个补丁。
而是这个系统本身,可能已经到了需要重构的时候。
打补丁,本身没有错
程序员都知道。
不是所有 Bug 都值得重构。
线上出现一个紧急问题。
先打补丁,让系统恢复运行。
这是非常合理的工程选择。
因为系统不能因为追求完美,就停止服务。
人生也是一样。
有些事情确实只需要一个临时方案。
最近工作特别忙。
那就调整一段时间的作息。
最近收入有波动。
那就减少一些非必要支出。
最近某个项目出现问题。
那就先解决眼前的问题。
这些都是补丁。
它们的价值在于:
先让系统活下来。
所以我现在不会再把“打补丁”理解成一种错误。
真正的问题是:
你是不是把临时方案,当成了永久架构。
有些补丁,打着打着就变成了系统
我以前最容易犯的错误就是这个。
比如工作越来越忙。
最开始,我告诉自己:
“这只是最近项目特殊。”
于是加班。
后来发现事情一直很多。
于是我开始优化时间管理。
把每天排得更满。
再后来,我开始研究各种效率工具。
任务管理。
日历。
自动化。
快捷指令。
结果几年以后,我拥有了一套越来越复杂的时间管理系统。
但有一个问题始终没有解决:
为什么我的时间永远不够?
后来我才发现。
真正的问题可能根本不是效率。
而是:
事情太多了。
有些事情根本不应该做。
有些责任不应该全部由我承担。
有些工作模式本身就不可持续。
我却一直在优化“如何更高效地承受它”。
这就是一个典型的:
架构问题,被当成了效率问题。
我自己就经历过一次这样的“重构”
那几年,我一直觉得自己的最大问题是:
时间管理能力不够。
工作忙。
项目多。
家里的事情也多。
自己的学习和写作又想继续。
于是我开始不断给自己打补丁。
买任务管理工具。
做时间规划。
每天列 Todo List。
研究 GTD。
设置日历。
尝试早起。
把工作拆成更小的任务。
甚至给自己规定:
“每天至少要完成三个最重要的事情。”
这些方法有些确实有效。
用了以后,我的执行效率提高了。
但一个问题始终没有解决:
我还是越来越累。
而且有一个很奇怪的现象。
我的效率越来越高。
但可支配时间却越来越少。
我当时甚至开始怀疑:
是不是自己还不够自律?
于是继续优化。
继续寻找更好的工具。
继续调整自己的时间表。
直到有一天,我突然意识到:
我可能一直在修一个根本不存在的 Bug。
我的问题不是:
“如何在一天里塞进更多事情?”
而是:
为什么我的一天里有这么多事情?
这个问题让我开始重新检查自己的系统。
我把过去一段时间的工作和生活全部摊开来看。
然后给每件事情重新分类:
必须做。
应该做。
可以做。
其实不用做。
结果让我有点意外。
我发现,真正必须由我完成的事情,并没有想象中那么多。
大量时间消耗在:
别人临时提出的需求。
重复性的沟通。
没有明确目标的会议。
一些已经习惯、但实际上没有太大价值的工作方式。
以及最隐蔽的一类:
因为我觉得自己应该做,所以一直在做的事情。
这时候我才发现:
我之前一直在优化“执行层”。
但真正的问题发生在“架构层”。
我不是不会管理时间。
而是:
系统里的任务数量本身就不合理。
于是我开始做第一次重构。
不是辞职。
不是彻底改变生活。
而是从减少输入开始。
能不参加的会议,就不参加。
能异步解决的事情,就不安排会议。
不重要的事情,不再追求完美。
别人可以完成的事情,不再习惯性接过来。
一些长期没有价值的活动,慢慢退出。
与此同时,我开始给自己的长期项目预留固定时间。
哪怕每周只有几个小时。
这件事情对我来说很重要。
因为以前我的逻辑是:
先把所有事情做完,再做自己的事情。
后来我才发现:
事情永远不会做完。
如果不给真正重要的事情预留资源,它永远只能排在最后。
所以我的重构,并不是突然把旧系统删除。
而是慢慢改变资源分配。
把一部分资源从“维持现状”,迁移到“构建未来”。
最明显的变化,并不是我突然变得特别高效。
而是:
我不再需要每天靠意志力,才能勉强维持生活。
这让我第一次真正理解了“重构”这两个字。
重构不是让自己变得更能扛。
而是:
让系统本身不再需要你一直硬扛。
后来再遇到类似问题,我也开始换一个思路。
以前看到问题,我第一反应是:
“怎么解决?”
现在我会先问:
“为什么这个问题需要被反复解决?”
如果答案是:
因为底层设计就是这样。
那么我就知道:
这一次,可能又到了该重构的时候。
怎么判断一个问题到底该不该重写?
后来我给自己总结了几个信号。
第一个信号:同一个问题反复出现
这是我最看重的一个指标。
如果一个问题只发生一次。
补丁通常够了。
如果同一个问题每隔一段时间就出现一次。
就应该开始检查底层原因。
比如:
反复拖延。
反复焦虑。
反复职业倦怠。
反复陷入同一种关系模式。
反复因为同一个原因和别人产生冲突。
这时候继续问:
“这次怎么解决?”
可能已经没有意义。
真正应该问的是:
为什么这个 Bug 总是被触发?
第二个信号:补丁越来越多
系统出现一个问题。
加一个规则。
又出现问题。
再加一个规则。
最后整个系统变得越来越复杂。
人生也一样。
为了维持一种生活状态,我可能需要:
严格控制时间。
不断压缩休息。
不断调整情绪。
不断说服自己。
不断提醒自己坚持。
不断寻找新的方法。
如果维持一个状态,需要越来越多的“自我管理”。
我反而会开始怀疑:
是不是这个状态本身就不值得继续维护?
健康的系统,不应该依赖大量人工干预才能运行。
如果每天都需要“用意志力修复人生”。
那可能不是执行力出了问题。
而是系统设计有问题。
第三个信号:补丁已经改变了原来的目的
这个情况其实很隐蔽。
一开始,我们做一件事情,是为了达到某个目标。
后来为了维护这个目标,我们不断增加成本。
最后发现:
维护这个目标本身,已经成为最大的负担。
比如学习。
最初学习是为了提升能力。
后来开始追求:
课程数量。
证书数量。
知识收藏。
笔记数量。
最后每天都在学习,却没有真正解决问题。
再比如工作。
最开始工作是为了创造价值并获得收入。
后来为了证明自己有价值:
开更多会。
写更多材料。
做更多汇报。
维护更多流程。
最后大量时间都消耗在证明“自己很忙”。
这时候就应该停下来重新检查:
我还在追求最初的目标吗?
如果答案是否定的。
可能就不是继续优化的问题了。
而是需要重新定义系统。
第四个信号:核心假设已经变了
这是我觉得最值得警惕的一种情况。
很多人生系统,其实建立在过去的假设上。
比如:
“只要技术足够好,就能一直获得好的职业机会。”
“只要努力工作,就会不断获得回报。”
“只要进入一家好公司,就可以稳定很多年。”
“只要把现在的事情做好,未来自然会变好。”
这些假设在某个阶段可能成立。
但环境会变化。
行业会变化。
公司会变化。
人的年龄会变化。
家庭责任会变化。
当底层假设已经变化的时候,在旧系统上不断打补丁,意义就越来越小。
因为:
不是代码有 Bug。
而是运行环境已经变了。
重写意味着什么?
以前我一想到“重写”,脑子里就会出现一个非常大的动作。
辞职。
换行业。
搬家。
重新开始。
但后来我发现:
重写不一定意味着推倒重来。
它更多意味着:
重新定义底层逻辑。
比如:
以前我的职业逻辑是:
公司需要什么,我就学习什么。
后来慢慢变成:
我真正想积累什么能力?
以前是:
有时间再做自己的事情。
后来变成:
给自己的长期项目预留固定资源。
以前是:
先把工作做好,其他以后再说。
后来变成:
工作只是人生系统的一部分。
这就是重写。
表面上生活可能没有立刻发生巨大变化。
但底层决策逻辑已经改变了。
打补丁和重写,其实可以同时存在
这是我后来才真正理解的一件事情。
现实生活里,很少存在:
“今天开始全部重写。”
更多时候是:
一边打补丁,一边重构。
当前工作还需要继续。
那就先把眼前的问题处理好。
同时开始建立新的能力。
当前收入还不能放弃。
那就维持现金流。
同时测试新的收入来源。
家庭责任还在。
那就继续承担。
同时重新设计时间结构。
这其实很像一个长期运行的系统升级。
不能停机。
所以只能:
边运行,边重构。
这可能才是40岁以后更现实的“人生重构”。
我现在会先问自己五个问题
每当遇到一个长期困扰我的问题,我会先停下来。
不急着解决。
而是问:
这是一次性故障,还是重复性故障?
如果只是偶发问题,补丁可能足够。
这个问题是不是越来越依赖人工维护?
如果每天都需要靠意志力维持,就值得重新检查。
我是不是一直在优化错误的东西?
效率越来越高,但结果没有改变,往往说明目标或者架构出了问题。
这个系统最初建立的假设,现在还成立吗?
如果环境已经改变,旧方案自然越来越难运行。
如果今天重新设计,我还会选择现在这套方式吗?
这个问题有时候最直接。
因为很多东西之所以继续存在,不是因为它仍然合理。
只是因为:
我们已经习惯了。
最危险的不是旧系统
而是舍不得旧系统。
程序员都知道。
重构最大的难点,有时候不是技术。
而是:
“现在还能跑。”
既然还能跑。
为什么要改?
人生也是一样。
工作还能做。
工资还能拿。
生活还能维持。
所以很容易告诉自己:
“先这样吧。”
但“还能运行”和“运行良好”,是两回事。
一个系统可以长期运行。
同时长期消耗资源。
长期降低效率。
长期积累技术债。
直到某一天:
维护它的成本,超过了重新设计它的成本。
那时候,重构就不再是一个理想主义选择。
而是现实需要。
写在最后
40岁以后,我越来越少问自己:
“我还能不能坚持?”
而开始问:
“这件事情值得继续维护吗?”
这两个问题看起来很像。
其实完全不同。
前一个问题默认:
系统必须继续运行。
后一个问题允许:
系统可以重新设计。
有些事情确实需要坚持。
有些困难只是人生正常的波动。
但也有一些问题:
不是努力不够。
不是执行力不够。
不是再加一个工具就能解决。
而是旧版本的设计已经不适合现在的自己。
所以现在面对一个长期问题,我不会急着给自己再打一个补丁。
我会先看看:
这个 Bug 为什么一直出现?
补丁是不是越来越多?
维护成本是不是越来越高?
当初设计这个系统的假设还成立吗?
如果今天重新开始,我还会这么设计吗?
如果答案越来越明确:
不会。
那也许真正需要做的,不是再坚持一下。
而是开始重写。
不是把过去全部否定。
而是带着过去积累的经验,重新设计下一版。
毕竟人生不是一次性交付的项目。
它是一个长期运行、不断迭代的系统。
有些 Bug,修掉就好。
有些模块,继续维护。
而有些东西,
到了该重写的时候,
就不要再用补丁,
假装它还能一直运行下去。
继续 Debug。
继续重构。
也允许自己,
在某个时刻,
重新写一遍。