为什么你学不会再也新技术
大多数人学习新技术的方式是这样的:找一篇教程,打开,跟着敲代码,跑了,赢了,关掉。然后呢?没有然后了。
过一个月问你还记得什么——记得有个例子,跑通过,但是说不清楚原理。问你在一个新场景能不能复用——不知道。
这叫学会了吗?这叫见过,不叫会。
真正懂的检验标准:预测
我最近想明白一件事:什么叫做"懂"一个技术?
不是你能把它的定义背出来。不是你能把文档复述一遍。那些都是信息存取,和理解没关系。
真正的懂,是你能预测它。
预测什么?
- 预测它在不同场景下的行为
- 预测它什么时候会出问题
- 预测它和其他技术怎么相互作用
就像你说你"懂"一个人。不是说得出ta的年龄、爱好、出生地——这些是简历,不是理解。真正的懂是能预测ta在不同情况下会做什么反应。
技术也一样。不在于你能写出它的API文档,而在于你能预测它的行为。
三个"不懂"的危险信号
如果发现自己符合以下情况,说明其实没懂,只是在背答案:
只能复述定义,但问个具体情况就傻眼。 问你"HashMap怎么实现的",你说"基于哈希表"——这是正确的废话。问你"那JDK 8和JDK 17的HashMap有区别吗",答不上来。
问"那这个场景呢"就答不上来。 教你一个技术,说的是这个例子能用。但换个完全不一样的场景,就不会了。真正的理解应该能自己推导出答案。
需要别人给例子才能想到例子。 看技术文档,里面没写的场景你就想不到。这就是典型的只记住了例子,没学到规律。
怎么从"见过"变成"会"
方法很简单,只是反直觉:少学多做预测。
第一,遇到新技术,先问三个问题
不要急着跑例子。先问:
- 这个技术的边界是什么?它不适用于什么场景?
- 它会在什么情况下出问题?
- 它和类似技术有什么区别?
能回答这三个问题,才开始动手。
第二,学完立刻做"压力测试"
跑通例子不算完。立刻开始改:
- 改成更大的数据量会怎样?
- 改成并发场景会怎样?
- 把它放到一个"不太对"的场景会怎样?
这就是在训练预测能力。
第三,给自己出题
学完一个技术,不要等别人告诉你干嘛。自己想三个可能的应用场景,选最不可能的那个试一下。
成功不重要。失败才重要。失败说明你预测错了,而纠正预测才是真正的学习。
记住这个标准
以后学习新技术,用这个标准检验自己:
你能用它来预测什么,而不是你能写出它的定义。
背答案的人,永远答不完新题。会预测的人,不需要新题。
--
EOF