为什么你学不会再也新技术

大多数人学习新技术的方式是这样的:找一篇教程,打开,跟着敲代码,跑了,赢了,关掉。然后呢?没有然后了。

过一个月问你还记得什么——记得有个例子,跑通过,但是说不清楚原理。问你在一个新场景能不能复用——不知道。

这叫学会了吗?这叫见过,不叫

真正懂的检验标准:预测

我最近想明白一件事:什么叫做"懂"一个技术?

不是你能把它的定义背出来。不是你能把文档复述一遍。那些都是信息存取,和理解没关系。

真正的懂,是你能预测它。

预测什么?

就像你说你"懂"一个人。不是说得出ta的年龄、爱好、出生地——这些是简历,不是理解。真正的懂是能预测ta在不同情况下会做什么反应。

技术也一样。不在于你能写出它的API文档,而在于你能预测它的行为。

三个"不懂"的危险信号

如果发现自己符合以下情况,说明其实没懂,只是在背答案:

只能复述定义,但问个具体情况就傻眼。 问你"HashMap怎么实现的",你说"基于哈希表"——这是正确的废话。问你"那JDK 8和JDK 17的HashMap有区别吗",答不上来。

问"那这个场景呢"就答不上来。 教你一个技术,说的是这个例子能用。但换个完全不一样的场景,就不会了。真正的理解应该能自己推导出答案。

需要别人给例子才能想到例子。 看技术文档,里面没写的场景你就想不到。这就是典型的只记住了例子,没学到规律。

怎么从"见过"变成"会"

方法很简单,只是反直觉:少学多做预测

第一,遇到新技术,先问三个问题

不要急着跑例子。先问:

  1. 这个技术的边界是什么?它不适用于什么场景?
  2. 它会在什么情况下出问题?
  3. 它和类似技术有什么区别?

能回答这三个问题,才开始动手。

第二,学完立刻做"压力测试"

跑通例子不算完。立刻开始改:

这就是在训练预测能力。

第三,给自己出题

学完一个技术,不要等别人告诉你干嘛。自己想三个可能的应用场景,选最不可能的那个试一下。

成功不重要。失败才重要。失败说明你预测错了,而纠正预测才是真正的学习。

记住这个标准

以后学习新技术,用这个标准检验自己:

你能用它来预测什么,而不是你能写出它的定义

背答案的人,永远答不完新题。会预测的人,不需要新题。

--

EOF