谈程序员的学习(二)

今天的主题是“专注”。

张无忌掉下悬崖之后,山谷里只有一本九阳真经,所以他也没得选择,只能把精力放在这上面。但是我们所处的世界不同于那个山谷,充满了各种“诱惑”,这段时间我对“九阳神功”确实比较关注,但是过几天我又听别人说“降龙十八掌”也很厉害,想尝试下。怎么办?

我们一般都认为,像张无忌在山谷里那样集中精力只做一件事情,效果一定是最好的。在短时间内,确实需要保持专注。比如一小时,一天,一周。如果不能集中精力在一件事情上,就会导致大脑频繁地进行“上下文切换”。今天我想学学scala的fastparse,但是又想写写博客,另外还想再继续看sedgewick的算法。最终结果是哪一件都做不好。

但是在长的时间范围上,反而不能太专注。从我的个人经验来看,学习效率最高的时候,往往是最开始接触一项技术的时候。因为面对的是一个全新的领域,自己会在好奇心的驱使下去学习,而不是自己逼着自己前进。

刚接触Haskell的时候,很多functional programming的概念都是第一次听说,就像是打开了通往新世界的大门,学习的欲望是非常强烈的。但是后来持续了两个月之后,慢慢地放弃了。起初看Learn you a haskell for great good这本书的时候,基本的概念还比较容易理解,但是越往后难度越大,再往后基本看不懂了。过了两年之后,看到了陈天的一些文章,重新燃起了对Haskell的热情。再去看Learn you a haskell for great good,原来看不懂的地方居然全明白了,有种大彻大悟的感觉。

在其他的领域上,也有过几次非常类似的经历。仔细想想,真的是自己的智商不够用吗?不,本质的问题不是Haskell太难,而是在第一次学习Haskell的后期,已经失去了对Haskell的热情,只是逼着自己去看书而已。第二次之所以能“大彻大悟”,完全是自己的兴趣使然。

不妨思考一下,养猪场的种猪,为什么每天都能保持高昂的战斗力?因为每天来的母猪都不同。适当的新鲜感,才能让自己持续输出高额的伤害。

“专注”的前提是自己有比较强烈的兴趣。在张无忌所处的环境下,中了寒毒,不练九阳神功就要挂了,保持专注当然是好的。对于我们现代人来说,如果已经不是发自内心地想继续下去的话,要么激励自己,重新点燃兴趣。要么就尽快的pivot,把精力放在其他更感兴趣的事情上。