有一段时间,我经常陷入一种矛盾。
我知道自己正在面对一些问题。
但又说不上来,这些问题到底严重到什么程度。
比如:
工作越来越忙。
但是成长感越来越弱。
每天解决很多事情。
但是回头看,却发现没有留下多少属于自己的东西。
我也会想:
是不是应该学习新的技术?
是不是应该换一个方向?
是不是应该彻底改变现在的状态?
可是另一方面。
现在的一切,也并没有糟糕到需要马上推翻。
工作还在继续。
经验还在积累。
很多能力依然有价值。
于是我经常问自己:
到底什么时候应该改变?
什么时候只是需要调整?
后来我想到程序开发中的一个问题:
一个系统出现问题的时候。
到底应该:
修复一个 Bug?
还是:
重新设计整个架构?
这个问题,其实和人生非常像。
01 很多年的代码,为什么最后会变成”技术债”
程序员都经历过维护老系统。
刚开始的时候。
代码通常很简单。
需求明确。
架构清晰。
每个人都知道系统怎么运行。
但是随着时间过去。
需求不断增加。
业务不断变化。
为了快速交付。
我们开始增加一些临时方案。
这里加一个判断。
那里增加一个特殊逻辑。
先解决问题再说。
这些选择在当时没有错。
因为当时的目标是:
让系统快速运行。
但是几年之后。
问题开始出现。
新人不敢修改。
老员工不敢重构。
一个小需求改动。
可能影响整个系统。
这些过去为了快速解决问题的方法。
最后变成了:
技术债。
02 我发现,人生里也有很多”临时代码”
后来我开始检查自己的人生系统。
发现其实很多选择。
和软件系统非常相似。
年轻的时候。
我们也写了很多”临时代码”。
为了进入更好的公司。
接受高强度工作。
为了证明自己的价值。
不断承担更多责任。
为了完成目标。
牺牲自己的时间。
这些选择,当时都有合理性。
它们帮助我:
获得经验。
积累能力。
走到今天。
所以我并不认为过去的选择错了。
但是问题是:
有些临时代码。
运行了十几年。
却从来没有重新审视。
03 最大的问题:把架构问题,当成普通 Bug 修
这是我后来意识到比较深的一件事情。
很多时候。
我们一直在解决表面问题。
比如:
感觉职业发展停滞。
于是:
学习更多技术。
感觉竞争压力增加。
于是:
投入更多时间。
感觉未来不确定。
于是:
继续努力工作。
这些动作有没有价值?
有。
但是它们可能只是:
增加系统资源。
而没有改变系统设计。
就像一个程序:
运行越来越慢。
你不断给服务器加内存。
短期有效。
但是如果根本问题是:
架构设计不合理。
那么增加资源,只是在延缓问题。
人生也是一样。
有些问题。
不是努力程度的问题。
而是:
系统设计的问题。
04 我开始区分:哪些问题应该修复,哪些问题需要重构
后来,我尝试给自己做了一次分类。
第一类:局部 Bug,可以修复
比如:
表达能力不足。
可以练习。
比如:
某项技能落后。
可以学习。
比如:
管理经验不足。
可以积累。
这些问题影响系统。
但不会改变整体方向。
像软件里的一个功能缺陷。
修复即可。
第二类:架构问题,需要重构
比如:
所有价值都绑定在一个岗位上。
比如:
十几年经验,没有形成自己的方法论。
比如:
每天很忙,但没有产生长期资产。
这些问题不是靠增加努力解决的。
因为:
底层结构已经限制了上层发展。
这时候继续打补丁。
只会让系统越来越复杂。
05 我最大的误区:以为”坚持”可以解决所有问题
过去很多年。
我其实非常相信坚持。
遇到困难。
继续努力。
遇到问题。
继续优化。
这个习惯帮助我解决了很多问题。
但是后来我发现:
坚持是一种优秀品质。
但坚持不一定等于正确方向。
如果系统方向错了。
运行时间越长。
可能离目标越远。
一个错误的架构。
维护十年。
并不会自动变成正确架构。
06 但是,重构也不是逃避现实
后来我又发现另外一个问题。
很多人喜欢把”重构人生”理解成:
离开现在。
推翻过去。
重新开始。
其实这也是一种误区。
优秀工程师不会轻易重写系统。
因为:
旧系统里有大量已经验证过的能力。
人生也是一样。
过去十几年的经历。
不是废代码。
项目经验。
行业理解。
解决问题的能力。
这些都是已经存在的资产。
真正的重构。
不是删除过去。
而是:
重新组织过去。
07 我现在更相信:人生重构,是一次架构升级
以前我认为:
改变人生。
意味着成为另一个人。
现在我觉得:
不是。
更像软件版本升级。
保留:
已经验证有效的模块。
优化:
影响未来发展的部分。
增加:
适应新环境的新能力。
比如:
过去:
我靠技术解决问题。
未来:
我希望增加系统设计能力。
过去:
经验主要服务于公司。
未来:
希望把经验沉淀成自己的资产。
过去:
解决别人定义的问题。
未来:
尝试参与定义问题。
这不是推翻过去。
而是升级架构。
08 我开始接受:人生需要持续重构,而不是一次完成
以前做项目。
总希望有一个最终版本。
但是后来发现:
软件没有最终版本。
只有持续迭代。
人生也是。
不同阶段。
面对的问题不同。
20岁:
建立能力。
30岁:
扩大边界。
40岁:
重新设计系统。
每个阶段。
都需要重新理解:
什么应该保留。
什么应该删除。
什么应该新增。
写在最后
最近重新回看自己的经历。
我发现:
很多问题,并不是突然出现的。
它们只是长期积累之后。
终于暴露出来。
就像一个运行多年的系统。
真正的问题。
往往隐藏在那些没人关注的地方。
所以现在,我不再急着问:
“我要不要彻底改变?”
我更愿意先问:
这个问题。
到底是一个 Bug?
还是一个架构问题?
如果只是 Bug。
修复它。
如果是架构问题。
重新设计。
重要的不是:
永远不犯错。
而是:
保持检查自己系统的能力。
因为一个真正成熟的系统。
不是从来没有问题。
而是:
知道什么时候修复。
什么时候重构。
我是语霖。
执笔为语,心落成霖。
希望用文字和声音,记录一个40岁程序员重新设计人生系统的过程。
我们下一篇继续聊。