我以前学习数学理论与软件编程时,总是想在精读全书之后再去解题或者动手做项目。其结果往往是卡在某个地方,中途放弃。其实,最有效的学习方式应该是:

  1. 初步学习书中最基础的几个章节,了解大致的背景、术语、思想。然后就要进入(kick-start)动手操作的阶段,如解题、做项目等。
  2. 有了初步的实践经验,就可以根据自己当前的项目需求、待解决的问题在书籍等各种资源中寻找相关主题、章节,而不是从前向后、按部就班地逐章节阅读。前者是以项目为中心的学习法,是真正地为了自己而学,为了把道理搞明白、为了做事而学;后者则是准备考试的学习法,适用性相当有限。
  3. 如果卡在某个地方,仍要带着问题继续阅读、学习与实践。像海绵一样充分吸收各方面信息与不同视角、思路的阐释。积累的量多了,经过的时间够长了,往往会柳暗花明、豁然开朗。