"学了五年的框架,现在招聘都不问了。"这句话里的痛点不是白学了,而是当初没人告诉你它有多长的保质期。问题不在更新,在于多数人把学习当均匀投入:看到新东西就学,遇到问题就查,从不区分这块知识三年后还有没有用。结果把时间押在最短命的一层,在最长命的一层欠账,五年后两边都不够用。这篇谈配置、停手判据、到期识别与失效边界。
1. 三层半衰期
知识不是同质的。按"多久之后开始大面积作废"分三层,三层的投资方式完全不同。
| 层 | 内容 | 量级半衰期 | 典型作废方式 | 投资方式 |
|---|---|---|---|---|
| 原理层 | 并发模型、内存与 IO、索引结构、一致性 | 十年以上 | 极少整体作废,只被更精确重述 | 重仓,允许慢 |
| 范式层 | 分层与边界、事件驱动、数据流 | 三到七年 | 换名字换载体,骨架保留 | 中仓,抓骨架 |
| 工具层 | 框架 API、CLI 参数、配置项 | 一到三年,热门框架更短 | 大版本改签名、组件被替代 | 轻仓,够用即停 |
判断归属只用一个问题:把它换一个实现,结论还成立吗。"HashMap 扩容会 rehash"是原理;"@Transactional 自调用不生效"是工具的边界,背后"代理调用才拦截"才是原理。同一条经验常横跨两层,拆开存放更值钱。
2. 配比的经验结构
没有人能精确算出比例,但方向的偏差比数值更重要。常见的畸形是工具层占比过半。
| 配置 | 原理 | 范式 | 工具 | 表现 |
|---|---|---|---|---|
| 畸形偏工具 | 一成 | 两成 | 七成 | 上手快、迁移慢,换栈即归零 |
| 经验结构 | 四到五成 | 三成 | 两到三成 | 迁移时主要成本是查文档,不是重学 |
配比不是排课表,是时间账:工具层有即时回报,原理层回报以年计,天然被挤掉。
记一次真实的时间账(连续两周,只记"学了什么"不记"学了多久"更准)
条目示例:
周一 3h 排查 @Transactional 失效 → 结论:代理边界(范式层,顺手补原理)
周二 5h 调 Gradle 缓存目录 → 结论:本机路径约定(工具层,用完即弃)
周三 2h 读 MVCC 可见性 → 结论:版本链 + ReadView(原理层)
判读:工具层条目占比超过一半,说明你在用解决问题的方式代替建仓。
不是错,但要意识到这是消费不是投资。
3. 工具层该学到什么程度
工具层最贵的错不是学得少,是学得过头:记住一年内就会改掉的参数名。停手判据三条,满足两条即停。
| 停手判据 | 具体标准 | 不停手的代价 |
|---|---|---|
| 能跑通主路径 | 不看文档能完成最常见的任务 | 边际收益极低 |
| 知道失败长什么样 | 能认出两三种典型报错并定位到层 | 成本在故障里付 |
| 知道去哪查 | 记住文档入口与关键概念名,不记参数值 | 用记忆替代检索,遗忘快 |
把工具知识外包给检索是正确姿态:学"它存在、去哪查、错了什么样",参数与签名留给搜索——记参数值等于给一次性信息付长期记忆成本。
三条之外的深挖要有理由,且理由必须落在原理或范式层:"这个框架的缓存失效语义能否用在交易场景"——读的是范式,框架只是样本。
4. 识别短半衰期的四个信号
不必等它过时才发现。四个信号在早期就能看到。
| 信号 | 观察点 | 强度 |
|---|---|---|
| 一年内两次以上 major | 带破坏性变更 | 强 |
| 单一厂商主导 | 路线图随商业策略变,社区无分流权 | 强 |
| 社区热度周期短 | 讨论集中在"怎么用"而非"为什么这样设计" | 中 |
| 生态不围绕它长 | 插件与集成少 | 中 |
# 粗看发布节奏与活跃度(看趋势不看绝对值)
git log --since='18 months ago' --pretty='%ad %s' --date=short | head -40
git tag --sort=-creatordate | head -20 # 大版本间隔
git shortlog -sn --since='12 months ago' # 贡献者集中度
判读:节奏快 + 贡献者集中 = 跟着别人的商业节奏走,按工具层管理。反之,节奏慢但 issue 讨论深入、设计文档齐全的项目,多半有值得读的骨架。
5. 迁移成本的隐性部分
换栈的成本从来不只是语法。真正拖时间的是三样东西,它们在简历上不可见。
| 隐性成本 | 表现 | 缓解方式 |
|---|---|---|
| 手感丧失 | 知道该查什么,但敲不快、不敢改 | 用同一套最小任务重做一遍,不重学概念 |
| 调试直觉失效 | 报错看不出该往哪层找,试探时间变长 | 先建立"错误分类表",再补细节 |
| 生态熟人网络归零 | 不知哪个库是事实标准,选型反复 | 读两三个成熟项目的依赖清单 |
三样加起来常比语法贵数倍,也解释了"原理扎实的人迁移快":手感仍要重建,但调试直觉可复用——错误分类跨栈通用。
6. 深度与广度的取舍
先深后横的道理不在励志,在成本:广度依赖参照系,而参照系只能由一次足够深的经历提供。
| 阶段 | 目标 | 完成判据 | 常见错误 |
|---|---|---|---|
| 深一个 | 在一处走到能判断对错、能改源码级实现 | 能在没有文档的情况下定位一次线上问题 | 停在"会用",把教程跑完当深度 |
| 横三五个 | 建立同一问题的多种解法对照 | 能说出两种方案各自的失效边界 | 每样都停在入门,横向变成收集 |
判定"够深了"的三个信号(满足两个即可横向)
1 遇到陌生报错,十分钟内能归到某一层(编译/运行时/资源/网络)
2 能读懂该领域一个成熟项目的核心模块,并说出它的取舍
3 能对同一问题给出两个方案,并说明各自何时会坏
反例:能写出可运行代码、能过面试题 —— 不构成深度证据。
7. 笔记的衰减与可迁移索引
笔记的复用价值随时间衰减,但衰减速度差别极大:抄参数值的笔记两年后基本归零,记录"为什么这样设计"的笔记反而越用越值钱——因为你的判断力在涨,能读出当初没读出的东西。
| 笔记类型 | 半年后价值 | 三年后价值 | 处置 |
|---|---|---|---|
| 命令与参数速查 | 高 | 低(参数已变) | 不手写,交给搜索 |
| 报错与修法 | 中 | 中低(版本相关) | 只记分类,不记版本细节 |
| 设计取舍与失效边界 | 中 | 高 | 重仓,写成可引用段落 |
比笔记更值钱的是可迁移索引:把"问题类型 → 用过哪些解法 → 各自坏在哪"串成一张表。它不随工具失效,因为索引的是问题而非实现。
可迁移索引条目(一条一行,半年回看一次)
问题类型:高并发下的计数准确性
方案A 数据库行锁累加 坏在:热点行,锁等待随并发线性上升
方案B 分片计数后合并 坏在:合并窗口内读数偏差
判据沉淀:先问"能容忍多久的偏差",再选方案。
8. 值不值得深:四个问题
任何一门技术,四个问题问完,答案通常已经不需要讨论。
| 问题 | 判据 | 危险答案 |
|---|---|---|
| 它解决什么问题 | 能用一句业务语言说清,不靠术语堆 | "很火""行业标配" |
| 有多少人在真用 | 生产案例、招聘需求、可查的故障复盘 | 只有教程和 demo |
| 有没有替代 | 能说出两个替代品及差别 | "没有替代"多半是没查 |
| 生态是否健康 | 周边库、文档、响应速度 | 全靠一家公司维护且无公开路线 |
组合很有信息量:问题清楚 + 替代多 + 生态健康是工具层,够用即停;问题清楚 + 替代少 + 生态一般往往藏着原理层的真东西。
9. 衰退期的信号与处置
技术不是突然死的,是慢慢没人问。
| 信号 | 观察方式 | 处置 |
|---|---|---|
| JD 从"熟悉 X"变成"了解者优先" | 看措辞变化 | 停止新增投入 |
| issue 活跃但无人回复 | 看 open/closed 比例与响应时长 | 评估替换成本,备预案 |
| 大版本间隔超两年 | 看 release 记录 | 稳定还是停滞,看 issue 判断 |
20 分钟存量体检(每半年一次)
投入最深的 5 项技术,逐项标注:
层级:原理 / 范式 / 工具
最近一次用它解决真问题:__ 个月前
它解决的问题能不能用别的方案说清:能 / 不能
若它明天被替换,迁移成本主要花在:语法 / 手感 / 直觉 / 选型
判读:2 项以上标"工具"占一半时间 → 配置偏了。
10. 押注就是有失败率
"过时"不是错误,是押注的固有结果。任何在快速变化领域的深度投资,都有相当比例会在五年内贬值。
能做的只有三件:分散、留可迁移部分、承认沉没(不用"都学了五年"决定下个五年)。第三件最难——它对抗的是自我一致性。
11. 度量
| 指标 | 怎么取 | 判读 |
|---|---|---|
| 可迁移知识占比 | 标"原理/范式"的条目占比 | 低于三成 → 配置偏工具 |
| 重新上手陌生技术的时间 | 换新工具到能解决真问题的小时数 | 逐次下降说明原理在积累 |
12. 排错:三种"学了没用"的误判
| 现象 | 原因 | 处理 |
|---|---|---|
| 学了很多,面试仍讲不清 | 学的都在工具层,无骨架可讲 | 补一条原理线索,围绕它重读工具 |
| 换栈后从零开始 | 只记用法,未记失效边界 | 每学一个工具,写一条"它坏在哪" |
| 笔记越记越不敢用 | 记的是参数与版本细节 | 只留索引与判据 |
13. 边界:什么时候这套配置没有意义
| 场景 | 是否适用 | 理由 |
|---|---|---|
| 三个月内的短期项目 | 不适用 | 半衰期管理的时间尺度大于项目周期 |
| 公司强制单一技术栈 | 部分失效 | 自由度受限,执行不了 |
| 纯执行岗位(按单交付) | 收益有限 | 不需要迁移判断,工具层熟练度就是生产力 |
14. 自测
- 用什么问题能快速判断一条经验属于原理层还是工具层?
- 工具层学习的三条停手判据分别是什么?为什么"知道去哪查"也算一条?
- 迁移成本里最容易被低估的是哪一项?它和原理层扎实有什么关系?
- 为什么"能写出可运行代码"不构成深度的证据?
- 笔记的哪一类内容会随时间增值,而不是贬值?
- 在什么情况下,配置半衰期这件事本身就不值得做?