#006-文档驱动项目-第六篇:独立开发者的文档求生指南(完结篇)
第六篇:独立开发者的文档求生指南
第六篇:独立开发者的文档求生指南
——一个人维护多个项目,如何不被遗忘淹没
系列导读:这是《老项目如何引入文档驱动》系列的第 6 篇,也是最后一篇。前五篇我们聊了团队场景下的文档驱动实践。但很多读者反馈:我是独立开发者,一个人维护多个项目,文档驱动对我有用吗?这篇文章就是要回答这个问题。
张三的崩溃:2 天才想起来的设计
张三是一名独立开发者,同时维护 3 个客户的项目。
周一早上,客户 A 突然来消息:
“能不能加个银联支付?客户要求的,这周五上线。”
张三打开代码,傻眼了。
他完全不记得:
-
支付回调是怎么处理的
-
为什么用了这个第三方库而不是那个
-
那个奇怪的 if 判断是干什么用的
为什么?
因为这个项目,他已经 3 个月没碰了。
上次改支付模块,还是 3 个月前。当时的设计思路、踩过的坑、为什么这样权衡,全忘了。
张三花了整整 2 天,才勉强想起来当时的设计思路。
他翻 Git 提交记录,看自己 3 个月前写的代码,看 Commit Message(都是“fix bug”、“update”),看数据库表结构,看第三方文档……

客户催得急:
“怎么还没开始写代码?”
张三很焦虑:“我得先理解现有的代码啊!”
周五晚上 11 点,张三终于改完了。
客户很满意,但张三很累。
更重要的是,他意识到:这样下去不行,下次切回来,又要花 2 天回忆。
这就是独立开发者的痛点:
频繁切换项目,每次都要花 1-2 天“回忆”当时的设计。
时间都浪费在“回忆”上,而不是真正的开发。
张三决定:必须找个办法记录关键信息。

第一次尝试:写文档(完全没用)
周末,张三花了一整天,给 3 个项目各写了一份“项目文档”。
他记录了: 技术栈(Spring Boot + MySQL)、核心流程(用户下单 → 创建订单……)、注意事项(支付回调要验证签名……)
张三当时还挺满意:终于把文档补上了!
3 个月后,客户 A 又来需求。
张三打开文档,看了 5 分钟。
然后发现:完全没用。
“技术栈”?我当然知道用的 Spring Boot,这有什么用?“核心流程”?这个看代码就知道了。“注意事项”?太泛泛而谈,根本想不起来当时的具体设计。
张三发现:第一版文档完全是废话,没记录关键信息。
他还是花了 2 天,重新理解代码。
文档?白写了。

第二次尝试:用 AI 生成(更惨)
第 2 周,张三想:既然自己写不好,不如用 AI?
他让 AI 读了客户 B 项目的代码,生成“项目文档”。
AI 生成的 :用户管理(JWT 验证)、数据管理(MyBatis)、定时任务(凌晨 3 点)……
张三看完后,崩溃了:
这写的都是什么?这些我当然知道!
AI 完全没有记录关键信息: 为什么用 JWT 而不是 Session?定时任务为什么是凌晨 3 点?
更糟的是,AI 生成的文档有 40% 是错的:
-
AI 说“定时任务每天凌晨 3 点执行”,实际是凌晨 2 点
-
AI 说“用户权限控制用了 RBAC”,实际是简单的角色判断
-
AI 说“数据导出支持 Excel 和 PDF”,实际只有 Excel
张三花了整整 1 天,修正 AI 生成的文档。
修正完后,他发现:比自己从零写还慢。
张三很崩溃:
“早知道这样,还不如自己写。AI 就是个坑!”
张三放弃了用 AI,改为手写。但手写又很慢,他又没时间。

第三次尝试:只记录关键决策(有用了!)
第 3 周,张三反思了一下,发现第一版文档为什么没用:
因为他记录的都是“显而易见的信息”(技术栈、核心流程),没有记录“容易忘记的信息”(设计决策、踩过的坑)。
张三调整了文档内容:
支付模块关键决策:
-
为什么用同步调用?(客户要求立即反馈,虽然性能稍差)
-
为什么回调用两层验证?(之前遇到过伪造回调攻击)
-
支付回调可能延迟 10 分钟(增加了主动查询,每 5 分钟查一次,别查太频繁会被限流)
这次的文档,只记录“关键决策”和“常见的坑”,不记录显而易见的信息。
2 个月后,客户 A 又来需求。
张三打开文档,看了 5 分钟。
这次,他没有花 2 天回忆,5 分钟就想起来了!
张三很兴奋:文档是真有用!
但他很快发现新问题:
文档过时了。
文档过时:误导了自己改出 bug
又过了 1 个月,客户 A 的支付突然出问题,用户投诉:“支付失败了,但钱被扣了!”
张三赶紧排查,看了一眼自己的文档:
“支付回调每 5 分钟查一次,最多查 3 次。”
张三按照文档理解的逻辑,修改了重试机制。
上线后,问题更严重了:支付更慢了,用户投诉更多了。
张三崩溃了,重新看代码,发现:
他 1 个月前已经把查询间隔改成 10 分钟了,但忘了更新文档。
文档说 5 分钟,实际是 10 分钟。
张三按照过时的文档改代码,结果改错了。
张三很崩溃:
“我本来是想用文档帮助自己,结果反而被文档误导了!”
“文档过时了,还不如没有!”
那天晚上,张三认真考虑过:要不把所有文档都删了,算了?
但删了,下次回来又要花 2 天回忆。不删,文档过时又会误导自己。
张三陷入了两难。

录语音的坑:1 小时找不到
张三想:写文档太慢,要不录语音?
改完代码后,打开手机语音备忘录,录 1 分钟:
“我刚改了支付回调的逻辑,原来是每 5 分钟查一次,现在改成每 10 分钟。为什么改?因为支付宝限流了,查太频繁会报错。这个坑我踩了 2 天才发现,记住!”
张三当时觉得:这个方法真快!1 分钟搞定!
但 3 个月后,客户 A 又来需求。
张三想起来:我录了语音!
但问题是:语音在哪里?
他录了 20 多条语音,分散在手机备忘录、微信“文件传输助手”、电脑本地文件夹、云盘……
张三花了 1 小时,翻遍所有文件夹,终于找到那条语音。
但这 1 小时,足够他重新理解代码逻辑了。
张三很无奈:
“录语音看起来方便,实际上也是个坑。”
“找语音的时间,比重新理解代码还长。”
张三放弃了录语音,又回到写文档。但写文档又很慢,他又没时间。

临时项目的坑:突然延期了
客户 C 的活动小程序,预计运行 3 个月就下线。
张三决定:这个项目不写文档了,反正很快下线。
客户催得急,张三每天加班赶进度,根本没时间写文档。
3 个月后,活动结束了。张三松了口气:还好没浪费时间写文档。
但 1 周后,客户 C 突然来消息:
“老板说这个活动效果不错,要延期,继续运行 1 年。”
张三傻眼了。
他当时没写文档,现在要补?
但他已经完全忘记当时的设计决策了。
为什么定时任务是凌晨 2 点?为什么活动规则用了这个算法?为什么数据库字段是这样设计的?
全忘了。
张三只能硬着头皮,花了 2 天重新理解代码,然后写文档。
这 2 天,白白浪费了。
如果当初花 1 小时写个简单的文档,现在就不用花 2 天了。
张三后悔了:
“我以为临时项目不需要文档,结果被打脸了。”

客户催急:文档彻底荒废
客户 B 的管理系统,张三一开始很认真地写了文档。
但接下来 3 个月,客户 B 连续催需求:
周一:紧急 bug,必须今天修。周三:新功能,下周五上线。周五:又有紧急需求,加班赶进度。
张三每天忙到晚上 11 点,哪有时间更新文档?
文档?先欠着,等有时间再说。
3 个月后,客户 B 的需求终于不那么急了。
张三想起来:我还欠着 3 个月的文档没更新!
但这时候,他已经忘记这 3 个月改了什么了。
改了哪些核心逻辑?为什么这样改?有没有新的坑?
全忘了。
张三打开文档,和代码一对比:
完全对不上了。
文档说的流程,和实际代码已经不一样了。
张三只能硬着头皮,花了 2 天重新梳理逻辑,然后更新文档。
但 2 天后,他又有新需求了,文档又没更新。
周而复始。
张三很无奈:
“我知道要更新文档,但客户催得急,我真的没时间啊!”
“等有时间了,又忘了要更新文档。”
“最后,文档彻底荒废了,和代码完全对不上。”

3 个月后:张三找到了自己的节奏

3 个月过去了,张三也踩了不少坑。
文档过时?遇到过,改出过 bug。录语音找不到?浪费过 1 小时翻文件夹。临时项目延期?补过文档。
但张三现在找到了自己的节奏。
客户 A 的电商平台(长期项目):
张三每次改完代码,都会花 10 分钟更新文档。
哪怕客户催得再急,这 10 分钟他也会留出来。
为什么?
因为他被坑过。文档过时了,会误导自己改出 bug。
现在,张三切换到客户 A 的项目,5 分钟就能进入状态。不用花 2 天回忆当时的设计,不用翻 Git 历史找 Commit Message。
这个时间差,太爽了。
客户 B 的管理系统(需求频繁):
张三不追求完美了。
只记录关键决策和避坑指南,其他的?算了,能看代码就看代码。
客户 B 催得太急,张三实在没时间维护完美的文档。
但至少,关键的设计决策他记下来了。
虽然文档有些地方过时了,但核心的“为什么这样设计”,张三还记得。
这个,够用了。
客户 C 的活动小程序(临时项目):
张三现在至少会记录 3 行关键决策。
万一延期了呢?这 3 行能救他 2 天时间。
张三被坑过一次,不想再被坑第二次。
你可能会问:这样够吗?
够了。
张三现在切换项目,从原来的 2 天缩短到 5-10 分钟。
这个时间差,足够大了。
你也是独立开发者?
那你应该理解:我们没有理想的文档时间,只有“能省则省”的策略。
但这个策略,确实有用。
张三被坑过几次,但总体来说,文档驱动让他的工作效率提升了。
至少,比完全靠记忆强太多了。
独立开发者的文档驱动,不是方法论,是求生技能。
它不完美,但够用。
这就够了。
系列完结。
前 5 篇讲团队场景,这一篇讲独立开发者。如果你也维护多个项目,张三的故事也许能帮到你。