跳到主要内容
阅微漫记
返回

如何设计一份属于自己的「个人技术文档」,让经验不会失传

我以前有一个很大的误区。

总觉得自己工作了十几年,经验应该已经很多了。

做过很多项目。

踩过很多坑。

解决过很多问题。

也经历过一些别人没有经历过的事情。

这些东西,应该已经成为了我的能力。

但有一天,我突然发现:

很多经验其实并没有真正留下来。

它们只是存在我的脑子里。

存在聊天记录里。

存在某个已经结束的项目里。

甚至存在某个我已经记不清名字的会议里。

如果有一天我离开现在的工作环境,这些东西可能就跟着一起消失了。

那一刻我开始意识到:

经验不等于资产。

只有被记录、被整理、被复用的经验,才真正开始成为自己的资产。

我曾经以为,工作经验就是“知道得多”

做程序员久了,很容易产生一种错觉。

工作时间越长。

处理过的问题越多。

自然就越有经验。

但后来我发现:

真正拉开差距的,不是“经历过多少事情”。

而是:

你有没有把经历转化成自己的知识系统。

比如我曾经解决过一个很复杂的线上问题。

当时花了两天时间排查。

日志看了很多。

代码改了很多。

最后终于定位到原因。

问题解决之后,我松了一口气。

然后就结束了。

几个月以后,类似的问题再次出现。

我又重新排查了一遍。

后来我才发现:

我并不是解决过这个问题。

我只是经历过一次这个问题。

两者完全不同。

经历,如果没有沉淀,很容易失传。

程序员为什么特别需要自己的“技术文档”

公司有技术文档。

项目有架构文档。

接口有 API 文档。

系统有运维手册。

为什么?

因为我们知道:

不能把系统运行所需要的知识全部放在某一个人的脑子里。

否则这个人一离开,系统就会出现“知识孤岛”。

我突然觉得:

一个人的职业生涯,其实也是一个复杂系统。

那么,我是不是也应该给自己建立一份文档?

不是写给公司看的。

不是写给领导看的。

也不是为了绩效考核。

而是写给未来的自己。

我把它叫做:

个人技术文档。

它记录的不是“我做过什么”。

而是:

我从这些事情里,真正学到了什么。

第一层:记录“我遇到过什么问题”

最开始其实很简单。

每当遇到一个值得记录的问题,我就留下一个条目。

比如:

为什么这个项目最后延期了?

为什么这个需求反复修改?

为什么一个看起来很简单的系统,最后变得越来越复杂?

为什么一个团队明明技术能力不错,项目却推进得很慢?

为什么某些方案在技术上很好,最后却没有被采用?

这些问题表面上是项目问题。

但如果认真分析,会发现里面往往隐藏着很多规律。

技术只是其中一部分。

还有组织。

沟通。

利益。

资源。

决策。

人的行为。

这些东西,才是工作十几年以后越来越重要的经验。

第二层:记录“我是怎么解决的”

仅仅记录问题还不够。

还要记录自己的解决过程。

当时有哪些判断?

排除了哪些可能性?

用了什么方法?

为什么最后选择这个方案?

哪些尝试失败了?

哪些东西其实是走了弯路?

以前我特别容易只记录最终答案。

现在我越来越重视过程。

因为未来真正需要复用的,往往不是答案。

而是:

当我再次遇到类似问题时,我应该如何思考。

这其实就是经验真正有价值的地方。

第三层:记录“我现在知道什么”

这一层开始变得有意思。

我会把某个问题进一步抽象。

比如:

一次项目延期。

可能最终不是因为“开发效率低”。

而是需求没有稳定输入。

一次团队冲突。

可能不是某个人“不配合”。

而是双方的目标函数不一致。

一次技术方案被否决。

可能不是方案不好。

而是方案没有解决决策者真正关心的问题。

当我开始这样整理的时候,我发现:

经验开始从案例变成模型。

案例只能告诉我:

“那一次发生了什么。”

模型则可以告诉我:

“下一次可能还会发生什么。”

这两者的价值完全不同。

第四层:记录“我的判断原则”

再往下,我开始记录一些更抽象的东西。

比如:

什么情况下,我不会再继续堆技术方案?

什么情况下,我会选择先做小实验?

什么情况下,我会接受一个不完美的方案?

什么情况下,我会拒绝一个需求?

什么情况下,我会选择离开一个项目?

这些东西以前都是凭感觉。

现在我开始尝试把它们写下来。

因为我越来越发现:

真正决定一个人长期表现的,往往不是知识,而是判断。

知识告诉你“有哪些选择”。

判断告诉你“什么时候应该选哪一个”。

而判断,本身也是可以沉淀的。

个人技术文档,不应该变成“知识垃圾场”

一开始建立个人文档,很容易走向另一个极端。

什么都记。

看到一篇文章记下来。

看到一个工具记下来。

看到一句话记下来。

收藏一个网页。

保存一个视频。

最后整个系统变成一个巨大的资料仓库。

看起来知识很多。

实际上越来越难用。

后来我给自己定了一个原则:

只记录那些改变过我判断的东西。

一个知识,如果只是“知道了”。

不一定值得长期保存。

但如果它让我:

改变了一次决策。

解决了一个问题。

避免了一次错误。

形成了一个新的方法。

那么它就值得留下来。

这时候,个人文档就不再是“收藏夹”。

而开始变成:

个人经验数据库。

我越来越喜欢记录“失败”

以前写文档,我习惯记录成功方案。

最后用了什么技术。

最后采用什么架构。

最后怎么解决问题。

但现在,我反而越来越重视失败。

因为成功往往有偶然性。

而失败通常会暴露系统里的真实问题。

为什么这个项目没有做成?

为什么我当时判断错了?

为什么我明明知道问题,却没有行动?

为什么一个看起来正确的决定,最后结果并不好?

这些东西如果不记录,很容易被时间抹掉。

几年之后,我只记得:

“当时挺难的。”

但已经想不起:

我到底在哪里判断错了。

所以现在,我会给自己留下一个简单的“事故复盘”。

不是为了责备自己。

而是为了让未来的自己少交一次学费。

最重要的是,让文档可以“反向服务于未来”

个人技术文档最有价值的时刻,不是写完的时候。

而是下一次遇到类似问题的时候。

比如:

遇到一个新的项目。

搜索一下过去的经验。

遇到一个新的职业选择。

看看过去类似的判断。

准备做一个副业。

看看以前做项目时踩过的坑。

准备学习一个新领域。

看看过去自己的学习方式为什么有效或者无效。

这时候,文档开始产生复利。

过去的一次经历。

经过记录。

经过抽象。

经过复盘。

最终变成下一次决策的输入。

经验开始被重复使用。

这才是真正的知识资产。

十几年以后,我真正想留下来的是什么?

我以前想过很多次:

如果十年以后,我离开程序员这个职业,我还能留下些什么?

代码可能没了。

项目可能没了。

公司可能没了。

甚至曾经使用过的技术,也可能已经过时。

但我希望留下来的,是另外一些东西:

我解决复杂问题的方法。

我判断事情的方式。

我踩过的坑。

我对人的理解。

我对工作的理解。

我对自己的理解。

这些东西不依赖某家公司。

也不依赖某一种技术。

它们才是真正属于我的东西。

所以我现在越来越觉得:

一个程序员真正应该维护的,不只是代码仓库。

还应该有一个属于自己的:

人生知识仓库。

写在最后

40岁以后,我开始重新理解“积累”这两个字。

以前我以为:

积累就是工作年限越来越长。

后来发现不是。

如果十年的经验只是重复了一年十次。

那也未必是真正的积累。

真正的积累应该是:

经历一次。

记录下来。

复盘一次。

抽象一次。

下一次遇到类似问题时,能够更快地做出判断。

然后再把新的经验写回系统。

于是:

经历 → 记录 → 复盘 → 抽象 → 复用 → 再迭代

慢慢形成一个闭环。

这时候,一个人的职业生涯才开始产生复利。

我现在也在尝试给自己建立这样一份“个人技术文档”。

它可能不漂亮。

甚至一开始很凌乱。

但我希望几十年以后回头看,它不是一堆笔记。

而是一本真正属于自己的:

人生运行手册。

记录我怎么工作。

怎么思考。

怎么做决定。

怎么犯错。

怎么重新开始。

也记录一个40岁程序员,是怎样一点一点,把过去的经验,重新编译成未来可以使用的能力。

因为我越来越相信:

人生最可惜的事情,不是犯过错。

而是:

同一个错误,人生重复运行了很多次。

所以,从现在开始。

把经验留下来。

让它不要只活在记忆里。

让它成为下一次人生迭代时,可以调用的代码。# 如何设计一份属于自己的“个人技术文档”,让经验不会失传

我以前有一个很大的误区。

总觉得自己工作了十几年,经验应该已经很多了。

做过很多项目。

踩过很多坑。

解决过很多问题。

也经历过一些别人没有经历过的事情。

这些东西,应该已经成为了我的能力。

但有一天,我突然发现:

很多经验其实并没有真正留下来。

它们只是存在我的脑子里。

存在聊天记录里。

存在某个已经结束的项目里。

甚至存在某个我已经记不清名字的会议里。

如果有一天我离开现在的工作环境,这些东西可能就跟着一起消失了。

那一刻我开始意识到:

经验不等于资产。

只有被记录、被整理、被复用的经验,才真正开始成为自己的资产。

我曾经以为,工作经验就是“知道得多”

做程序员久了,很容易产生一种错觉。

工作时间越长。

处理过的问题越多。

自然就越有经验。

但后来我发现:

真正拉开差距的,不是“经历过多少事情”。

而是:

你有没有把经历转化成自己的知识系统。

比如我曾经解决过一个很复杂的线上问题。

当时花了两天时间排查。

日志看了很多。

代码改了很多。

最后终于定位到原因。

问题解决之后,我松了一口气。

然后就结束了。

几个月以后,类似的问题再次出现。

我又重新排查了一遍。

后来我才发现:

我并不是解决过这个问题。

我只是经历过一次这个问题。

两者完全不同。

经历,如果没有沉淀,很容易失传。

程序员为什么特别需要自己的“技术文档”

公司有技术文档。

项目有架构文档。

接口有 API 文档。

系统有运维手册。

为什么?

因为我们知道:

不能把系统运行所需要的知识全部放在某一个人的脑子里。

否则这个人一离开,系统就会出现“知识孤岛”。

我突然觉得:

一个人的职业生涯,其实也是一个复杂系统。

那么,我是不是也应该给自己建立一份文档?

不是写给公司看的。

不是写给领导看的。

也不是为了绩效考核。

而是写给未来的自己。

我把它叫做:

个人技术文档。

它记录的不是“我做过什么”。

而是:

我从这些事情里,真正学到了什么。

第一层:记录“我遇到过什么问题”

最开始其实很简单。

每当遇到一个值得记录的问题,我就留下一个条目。

比如:

为什么这个项目最后延期了?

为什么这个需求反复修改?

为什么一个看起来很简单的系统,最后变得越来越复杂?

为什么一个团队明明技术能力不错,项目却推进得很慢?

为什么某些方案在技术上很好,最后却没有被采用?

这些问题表面上是项目问题。

但如果认真分析,会发现里面往往隐藏着很多规律。

技术只是其中一部分。

还有组织。

沟通。

利益。

资源。

决策。

人的行为。

这些东西,才是工作十几年以后越来越重要的经验。

第二层:记录“我是怎么解决的”

仅仅记录问题还不够。

还要记录自己的解决过程。

当时有哪些判断?

排除了哪些可能性?

用了什么方法?

为什么最后选择这个方案?

哪些尝试失败了?

哪些东西其实是走了弯路?

以前我特别容易只记录最终答案。

现在我越来越重视过程。

因为未来真正需要复用的,往往不是答案。

而是:

当我再次遇到类似问题时,我应该如何思考。

这其实就是经验真正有价值的地方。

第三层:记录“我现在知道什么”

这一层开始变得有意思。

我会把某个问题进一步抽象。

比如:

一次项目延期。

可能最终不是因为“开发效率低”。

而是需求没有稳定输入。

一次团队冲突。

可能不是某个人“不配合”。

而是双方的目标函数不一致。

一次技术方案被否决。

可能不是方案不好。

而是方案没有解决决策者真正关心的问题。

当我开始这样整理的时候,我发现:

经验开始从案例变成模型。

案例只能告诉我:

“那一次发生了什么。”

模型则可以告诉我:

“下一次可能还会发生什么。”

这两者的价值完全不同。

第四层:记录“我的判断原则”

再往下,我开始记录一些更抽象的东西。

比如:

什么情况下,我不会再继续堆技术方案?

什么情况下,我会选择先做小实验?

什么情况下,我会接受一个不完美的方案?

什么情况下,我会拒绝一个需求?

什么情况下,我会选择离开一个项目?

这些东西以前都是凭感觉。

现在我开始尝试把它们写下来。

因为我越来越发现:

真正决定一个人长期表现的,往往不是知识,而是判断。

知识告诉你“有哪些选择”。

判断告诉你“什么时候应该选哪一个”。

而判断,本身也是可以沉淀的。

个人技术文档,不应该变成“知识垃圾场”

一开始建立个人文档,很容易走向另一个极端。

什么都记。

看到一篇文章记下来。

看到一个工具记下来。

看到一句话记下来。

收藏一个网页。

保存一个视频。

最后整个系统变成一个巨大的资料仓库。

看起来知识很多。

实际上越来越难用。

后来我给自己定了一个原则:

只记录那些改变过我判断的东西。

一个知识,如果只是“知道了”。

不一定值得长期保存。

但如果它让我:

改变了一次决策。

解决了一个问题。

避免了一次错误。

形成了一个新的方法。

那么它就值得留下来。

这时候,个人文档就不再是“收藏夹”。

而开始变成:

个人经验数据库。

我越来越喜欢记录“失败”

以前写文档,我习惯记录成功方案。

最后用了什么技术。

最后采用什么架构。

最后怎么解决问题。

但现在,我反而越来越重视失败。

因为成功往往有偶然性。

而失败通常会暴露系统里的真实问题。

为什么这个项目没有做成?

为什么我当时判断错了?

为什么我明明知道问题,却没有行动?

为什么一个看起来正确的决定,最后结果并不好?

这些东西如果不记录,很容易被时间抹掉。

几年之后,我只记得:

“当时挺难的。”

但已经想不起:

我到底在哪里判断错了。

所以现在,我会给自己留下一个简单的“事故复盘”。

不是为了责备自己。

而是为了让未来的自己少交一次学费。

最重要的是,让文档可以“反向服务于未来”

个人技术文档最有价值的时刻,不是写完的时候。

而是下一次遇到类似问题的时候。

比如:

遇到一个新的项目。

搜索一下过去的经验。

遇到一个新的职业选择。

看看过去类似的判断。

准备做一个副业。

看看以前做项目时踩过的坑。

准备学习一个新领域。

看看过去自己的学习方式为什么有效或者无效。

这时候,文档开始产生复利。

过去的一次经历。

经过记录。

经过抽象。

经过复盘。

最终变成下一次决策的输入。

经验开始被重复使用。

这才是真正的知识资产。

十几年以后,我真正想留下来的是什么?

我以前想过很多次:

如果十年以后,我离开程序员这个职业,我还能留下些什么?

代码可能没了。

项目可能没了。

公司可能没了。

甚至曾经使用过的技术,也可能已经过时。

但我希望留下来的,是另外一些东西:

我解决复杂问题的方法。

我判断事情的方式。

我踩过的坑。

我对人的理解。

我对工作的理解。

我对自己的理解。

这些东西不依赖某家公司。

也不依赖某一种技术。

它们才是真正属于我的东西。

所以我现在越来越觉得:

一个程序员真正应该维护的,不只是代码仓库。

还应该有一个属于自己的:

人生知识仓库。

写在最后

40岁以后,我开始重新理解“积累”这两个字。

以前我以为:

积累就是工作年限越来越长。

后来发现不是。

如果十年的经验只是重复了一年十次。

那也未必是真正的积累。

真正的积累应该是:

经历一次。

记录下来。

复盘一次。

抽象一次。

下一次遇到类似问题时,能够更快地做出判断。

然后再把新的经验写回系统。

于是:

经历 → 记录 → 复盘 → 抽象 → 复用 → 再迭代

慢慢形成一个闭环。

这时候,一个人的职业生涯才开始产生复利。

我现在也在尝试给自己建立这样一份“个人技术文档”。

它可能不漂亮。

甚至一开始很凌乱。

但我希望几十年以后回头看,它不是一堆笔记。

而是一本真正属于自己的:

人生运行手册。

记录我怎么工作。

怎么思考。

怎么做决定。

怎么犯错。

怎么重新开始。

也记录一个40岁程序员,是怎样一点一点,把过去的经验,重新编译成未来可以使用的能力。

因为我越来越相信:

人生最可惜的事情,不是犯过错。

而是:

同一个错误,人生重复运行了很多次。

所以,从现在开始。

把经验留下来。

让它不要只活在记忆里。

让它成为下一次人生迭代时,可以调用的代码。


分享这篇文章:

上一篇
如何用「灰度+监控」的思路,验证一次副业想法
下一篇
如何识别哪些事该「打补丁」,哪些该彻底重写