有一段时间,我经常有一种奇怪的感觉。每天都很忙。会议很多。需求很多。问题很多。别人看起来可能觉得:一个工作十几年的技术人,应该已经非常稳定了。有经验。懂业务。能解决复杂问题。遇到事情也能够扛下来。

可是只有自己知道:心里其实一直有一种隐隐的不确定感。

我开始问自己几个问题。如果五年以后,公司不再需要现在的我,我还能依靠什么?如果未来技术变化越来越快,过去积累的经验,还有多少价值?如果有一天,我离开现在的位置,我真正拥有的东西是什么?

这些问题,以前我很少认真想。因为每天都有新的任务、新的需求、新的问题,就像一个运行中的线上系统——只要没有宕机,就很少有人愿意停下来检查。

但是某一天,我突然意识到:过去十几年,我一直在维护公司的系统。可是——我好像很少认真维护自己的人生系统。

REVIEW 01 · 程序员会做 Code Review,却很少给自己做人生 Review

作为程序员,我们都知道:代码写久了,一定会产生问题。哪怕最开始的设计非常合理,随着需求不断增加、功能不断叠加、人员不断变化,系统里面一定会出现:历史代码、临时方案、隐藏依赖。

这些东西,在刚开始的时候没有问题,甚至帮助系统快速上线。但是时间久了,它们会慢慢变成维护成本。这就是技术债。

Code Review 的本质:理解过去,发现风险,优化未来

成熟的软件团队,会定期做一件事情:Code Review。不是为了证明谁写错了,也不是为了否定过去的设计,而是:重新理解系统、发现隐藏风险、优化未来架构。

后来我发现:人生其实也是一样。我们年轻的时候,也在不断写自己的「人生代码」。为了进入更好的公司,我们学习技术;为了证明自己的价值,我们承担更多责任;为了获得稳定,我们接受组织安排;为了完成目标,我们牺牲时间和健康。

这些选择,当时都是合理的,因为它们帮助我们走到了今天。但是问题是:很多代码上线以后,就再也没有回头维护。很多人生选择也是一样。我们不断增加功能、增加责任、增加负载,却很少停下来问:现在这套系统,还适合未来十年吗?

DEBT 02 · 我的第一次人生代码审查:发现自己欠了几笔债

当我开始认真检查自己的时候,我发现:很多问题并不是突然出现的,它们早就在系统里存在。只是以前年轻、机会多、身体还能扛,所以没有暴露出来。就像一个运行多年的系统,平时看起来没问题,但是流量增加以后,隐藏的问题开始出现。

第一笔债:能力债

我第一个检查的问题是:这些年,我到底积累了什么?过去十几年,我学过很多技术,参与过很多项目,解决过很多复杂问题。但是如果有一天脱离现在的公司环境,这些经验还能不能产生价值?

这个问题让我停顿了很久。因为以前我认为:技术能力,就是我的核心资产。但是后来我发现:技术只是能力的一部分。真正有长期价值的东西,应该是我解决问题的方法、我理解业务的能力、我总结出来的规律、我形成的判断体系。如果这些东西只存在我的脑子里,随着项目结束消失,那么它更像一次性的代码,而不是可以复用的组件。

第二笔债:经验债

这是很多技术人的共同问题。我们经常说「我有十几年经验」,但是后来我开始问自己:这十几年,是十几年成长?还是一年经验重复了十年?区别很大。如果每一年都有新的认知、新的方法、新的沉淀,那么经验会产生复利。但是如果只是不断完成任务、不断解决问题、不断进入下一个项目,那么时间只是增加了熟练度。

经验真正的价值,不在于经历过多少事情,而在于:你有没有从经历中提炼出自己的系统。

第三笔债:表达债

这是我以前低估的一笔债。技术人很容易相信:只要事情做好,价值自然会被看到。代码写好了、系统稳定了、问题解决了——事实证明:并不完全如此。

因为随着职业阶段变化,你的价值越来越复杂。年轻的时候,你的价值可能体现在写代码、解决 Bug、完成需求。但是到了中后期:你的价值更多体现在判断、决策、影响、协作。这些东西,如果不能被表达,别人很难理解。这不是让自己包装,而是升级自己的沟通接口。过去我和世界连接的接口是代码,未来我需要增加新的接口:文字、表达、影响力、方法论。

第四笔债:依赖债

这是我后来意识到比较严重的一件事情。很多技术人的职业系统,其实是一种单节点架构,结构很简单:

01 公司 02 岗位 03 工资 04 生活 SINGLE POINT OF FAILURE

过去很多年,这个系统运行得很好——公司提供平台、岗位提供收入、我提供能力,彼此交换。但是任何系统都有风险。公司会变化、行业会变化、岗位会变化。如果整个系统只有一个节点,那么风险其实很高。

所以我开始思考:除了当前工作,我有没有建立自己的备用系统?不是说马上离开公司,也不是说所有人都应该创业,而是:未来的自己,有没有更多选择?有没有自己的知识资产、自己的持续输出、自己的个人影响力?这些东西短期看不到收益,但是它们是在为未来建立故障转移能力。

第五笔债:身体债

这一笔债,是很多技术人最容易忽略的。年轻的时候,我们习惯认为:身体可以恢复,熬夜、加班、高压力,都可以扛过去。但是到了 40 岁左右,我越来越意识到:身体不是普通模块,它是整个系统的基础设施。如果底层资源不足,上层所有功能都会受到影响。未来十年的竞争,不仅仅是能力竞争,也是系统稳定性竞争。

UNDERSTAND 03 · 人生代码审查,不是为了否定过去

当我把这些债列出来的时候,其实有一瞬间,我也会产生一个想法:是不是以前走错了?后来我发现:不是。真正优秀的工程师,不会责怪旧代码。因为他知道:当年的设计,一定是在当年的约束条件下做出的最佳选择。年轻时候追求技术没有错,努力工作没有错,承担责任没有错。这些选择,构成了今天的自己。

代码审查的目的,不是批判过去,而是:理解过去、优化现在、设计未来。人生也是一样。

REDESIGN 04 · 40 岁以后,我想重新设计自己的人生系统

这也是我开始写《人生 Debug》的原因。我不是因为已经找到了答案,恰恰相反,是因为我也正在寻找答案。我想记录:一个 40 岁程序员,如何重新检查自己的系统。哪些地方需要修复、哪些地方需要升级、哪些地方需要重新设计。也许未来某一天回头看,现在写下的这些文字,就是这一次人生重构留下的版本记录。

如果你也处在人生某个版本切换阶段,也许你也可以问自己几个问题:过去十年,我真正积累了什么?哪些能力正在失效?哪些经验还没有被转化?我的人生系统,有没有隐藏的单点故障?未来十年,我希望自己成为怎样的人?

这些问题,不一定马上有答案,但是值得开始一次审查。因为不知道自己欠了什么债,就不知道未来应该优化哪里。

人生不会因为一次代码审查,就变得完美。系统也不会因为一次重构,就永远稳定。但是一个愿意持续 Debug 自己的人,至少不会一直运行在旧版本里。

END · 完