一劳永逸
首先心流理论没有任何价值,其次继续上次的思路:
我在写代码的时候,能进入一种状态:每一个类,类与类之间的依赖,每个方法的大致逻辑,每个字段被引用的地方......这一切的信息都放在脑子里的某个位置,能以极快的速度调取。
因此我在想,人的记忆是否可以去记住状态而不是信息:
我没有刻意记忆过这些,仅仅只是经历过写这些东西的过程,而且有些代码是几个月以前的,再次使用时仍然有这些信息。是因为我现在处于跟当时一样的状态,我基于这个状态的一切经历都会被记录,再次回到这个状态就可以跟过去的经历产生交互。
这决不是那些人所说的心流,因为即使我同时分散注意力干别的,比如现在在这里打字,我依旧可以维持这个状态。这种感觉很好,这应该就是未来我需要抓住的状态。
然后是心流理论的无价值:我在小学四年级的时候经常可以进入一种全神贯注的状态,看书,打游戏,运动,都有过一样忘记时间沉浸在另一个世界一样的经历。当时我并不了解心流理论,但显然我进入了心流所描述的状态。
小学四年级的我原本就能做到的事,长大后的我没有理由需要依赖理论才能做到。
而且最经典的那个图,只有难度适中的挑战才能进入心流,这也是无价值的。
因为算法题有明确的难度划分,因此用算法题来举例,尽管我在做算法题时没有进入过心流。
于我而言难度就是易于理解的程度,不理解一件事,那么那件事就是难,否则就是简单,没有所谓的适中。我在力扣刷了100多题,没有做出来的题都只有一个原因:没有理解到本质。
第一次刷力扣是在20年,优美的排列。解法是DFS,记忆化搜索,动态规划。
我从这一题里面真正吸取到的东西只有状态压缩的思想,因为我从来没有想过数组的索引也可以表示某种信息,被这种思路震撼到,于是后面可以本能地用到。
但是动态规划或者说记忆化搜索的本质是什么?我其实到现在都没能搞懂。以前说不用纠结本质是错的,只是因为当时我脑中构建的所有模型都解释不了动态规划。
现在,动态规划类题目对我来说依旧是很难的,但是我知道我做不出来是因为没看到本质,而没有看到本质是因为我缺少某些前置知识,动态规划一定是基于某种我没有看过的思想。
或者说的简单点:缺少数学思想。在我的认知里编程与数学没有任何关系,那么基于编程的算法肯定也是,刷了100题以后仅仅只是改掉了用软件开发的思想来做算法题的习惯。
要修正对算法的认知还缺少数学这一块拼图。
这是其一,没有难度适中,只有理解与不理解。其二是我前面所描述的状态,即使面对高难度挑战仍然可以保持专注,因为理解力拉满了,在遇到不理解的困难时可以专注地用脑子里已有的模型尝试理解,没用就去问Newbing,再没用就去网上搜,去问别人,直到把困难解决——除非那个难度在另一个次元,比如直接让我去画素描,因为没有足够的训练所以不可能专注,但只要是跟自己领域相近的事物,即使很难只要进入那个状态就可以很快理解一切。