有一段时间,我经常陷入一种矛盾。我知道自己正在面对一些问题,但又说不上来,这些问题到底严重到什么程度。

工作越来越忙,但是成长感越来越弱。每天解决很多事情,但是回头看,却发现没有留下多少属于自己的东西。

我也会想:是不是应该学习新的技术?是不是应该换一个方向?是不是应该彻底改变现在的状态?

可是另一方面,现在的一切,也没有糟糕到需要马上推翻。工作还在继续,经验还在积累,很多能力依然有价值。

于是我经常问自己:到底什么时候应该改变?什么时候只是需要调整?

后来我想到程序开发中的一个问题:一个系统出现问题的时候,到底应该修复一个 Bug,还是重新设计整个架构?这个问题,其实和人生非常像。

TECH DEBT 01 · 很多年的代码,为什么最后会变成「技术债」

程序员都经历过维护老系统。刚开始的时候,代码通常很简单。需求明确,架构清晰,每个人都知道系统怎么运行。

但是随着时间过去,需求不断增加,业务不断变化。为了快速交付,我们开始增加一些临时方案。这里加一个判断,那里增加一个特殊逻辑,先解决问题再说。

这些选择在当时没有错。因为当时的目标是让系统快速运行。

但是几年之后,问题开始出现。新人不敢修改,老员工不敢重构,一个小需求改动,可能影响整个系统。

这些过去为了快速解决问题的方法,最后变成了:技术债。

TEMP CODE 02 · 我发现,人生里也有很多「临时代码」

后来我开始检查自己的人生系统,发现其实很多选择,和软件系统非常相似。

年轻的时候,我们也写了很多临时代码。为了进入更好的公司,接受高强度工作;为了证明自己的价值,不断承担更多责任;为了完成目标,牺牲自己的时间。

这些选择,当时都有合理性。它们帮助我获得经验、积累能力、走到今天。所以我并不认为过去的选择错了。

但是问题是:有些临时代码,运行了十几年,却从来没有重新审视。

ARCHITECTURE 03 · 最大的问题:把架构问题,当成普通 Bug 修

这是我后来意识到比较深的一件事情。很多时候,我们一直在解决表面问题。

感觉职业发展停滞,于是学习更多技术;感觉竞争压力增加,于是投入更多时间;感觉未来不确定,于是继续努力工作。

这些动作有没有价值?有。但是它们可能只是增加系统资源,而没有改变系统设计。

「就像一个程序,运行越来越慢,你不断给服务器加内存,短期有效。但如果根本问题是架构设计不合理,那么增加资源,只是在延缓问题。」

人生也是一样。有些问题,不是努力程度的问题,而是系统设计的问题。

CLASSIFY 04 · 我开始区分:哪些问题应该修复,哪些问题需要重构

第一类:局部 Bug,可以修复

比如表达能力不足,可以练习;某项技能落后,可以学习;管理经验不足,可以积累。

这些问题影响系统,但不会改变整体方向。像软件里的一个功能缺陷,修复即可。

第二类:架构问题,需要重构

比如所有价值都绑定在一个岗位上;比如十几年经验,没有形成自己的方法论;比如每天很忙,但没有产生长期资产。

这些问题不是靠增加努力解决的。因为底层结构已经限制了上层发展。这时候继续打补丁,只会让系统越来越复杂。

PERSISTENCE 05 · 我最大的误区:以为「坚持」可以解决所有问题

过去很多年,我其实非常相信坚持。遇到困难,继续努力;遇到问题,继续优化。这个习惯帮助我解决了很多问题。

但是后来我发现:坚持是一种优秀品质,但坚持不一定等于正确方向。

如果系统方向错了,运行时间越长,可能离目标越远。

「一个错误的架构,维护十年,并不会自动变成正确架构。」

REFRAME 06 · 但是,重构也不是逃避现实

后来我又发现另外一个问题。很多人喜欢把「重构人生」理解成:离开现在,推翻过去,重新开始。其实这也是一种误区。

优秀工程师不会轻易重写系统。因为旧系统里有大量已经验证过的能力。

人生也是一样。过去十几年的经历,不是废代码。项目经验、行业理解、解决问题的能力,这些都是已经存在的资产。

真正的重构,不是删除过去,而是重新组织过去。

UPGRADE 07 · 我现在更相信:人生重构,是一次架构升级

以前我认为,改变人生,意味着成为另一个人。现在我觉得,不是。更像软件版本升级。

保留已经验证有效的模块,优化影响未来发展的部分,增加适应新环境的新能力。

比如:过去我靠技术解决问题,未来我希望增加系统设计能力。过去经验主要服务于公司,未来希望把经验沉淀成自己的资产。过去解决别人定义的问题,未来尝试参与定义问题。

这不是推翻过去,而是升级架构。

ITERATE 08 · 我开始接受:人生需要持续重构,而不是一次完成

以前做项目,总希望有一个最终版本。但是后来发现,软件没有最终版本,只有持续迭代。

人生也是。不同阶段,面对的问题不同。

20 岁:建立能力;30 岁:扩大边界;40 岁:重新设计系统。

每个阶段,都需要重新理解:什么应该保留,什么应该删除,什么应该新增。

THE END ∞ · 写在最后

最近重新回看自己的经历,我发现:很多问题,并不是突然出现的。它们只是长期积累之后,终于暴露出来。

就像一个运行多年的系统,真正的问题,往往隐藏在那些没人关注的地方。

所以现在,我不再急着问:「我要不要彻底改变?」我更愿意先问:这个问题,到底是一个 Bug,还是一个架构问题?

如果只是 Bug,修复它。如果是架构问题,重新设计。

重要的不是永远不犯错,而是保持检查自己系统的能力。

一个真正成熟的系统,不是从来没有问题,而是知道什么时候修复,什么时候重构。
END · 完