2008年01月31日

专业类书籍的阅读习惯和方式

作者 非鱼

题目起的有点大,我也不能说哪种方式和习惯是正确的,有效的,只是在QQ群里和一群初学程序的小朋友聊天的时候,感觉他们的习惯和方式不是太好,于是总结一下自己的做法,给新手一些建议。

通常,新学程序的人读专业书籍会很慢,很累,因为他们喜欢一个字不落的认真的读,尤其喜欢读代码,然而这个时候他们通常对代码不能很好的理解,所以就一遍一遍的看那些代码,直到自己认为看明白了为止。所以通常读完一本C语言入门,至少需要两个月的时间。然而,以我对程序员的性格的了解来说,用两个月的时间读同一本书是很没有效果的,通常两个星期以后,厌烦的情绪就会产生,再拿起这本书的时候,就已经没有心情往下看了,所以在读的时候,就很容易分心走神,眼睛虽然还盯着书上,但是思想已经不知道云游到哪里去了。

所以我的建议是:以最快的速度来看书。大家已经不是小时候学识字写字的那个年纪了,而且专业类的书籍想看一遍就全部看明白并且记住,那基本是不可能的,所以如果是本好书,肯定要看两遍、三遍,甚至五六遍。第一遍看的时候,每一页大概用30秒钟就够了。(当然,视内容和排版的不同时间有所不同,一段文字只要用眼睛扫过一遍,脑袋里应该就有了对它的摘要,这就够了,至于大段的代码,如果一遍看过去就明白了,那当然最好,如果没有明白,那至少可以明白一半,或者1/3,如果连1/3都没有明白,说明这段代码远远超出了它所在章节的知识范围,那就跳过去继续看下面的内容。等你看到五六章后面的时候,对前面的那段代码就会恍然大悟。可能这时候你已经忘记了那段代码,但是等你第二遍再看到那段代码的时候,就已经能够完全理解了。)

切记切记,不要看到一段代码就拿到机器上去试一下,在这个时候,就算你证明了书上没有把代码打印错误,也是没有意义的。在这样的情况下,看完一本600页的书,需要300分钟。也就是5个小时。当然,不是指连续的5个小时,但是应该是在1周内看完的。阅读速度越快,你的大脑就会越兴奋,记住东西也就越高效,而越是慢条斯理的一个字一个字的看,恐怕刚刚翻过下一页,前一页的内容就已经忘记了。而且我们看书不是为了记住书上的每一个字,我们是为了记住书里要讲的内容,有了自己对内容的快速提取摘要的过程,记忆的效果会好很多。

第一遍看完了,回想一下自己记住了多少?如果凭空回想,恐怕很难想起什么来,如果你发现自己把整本书的内容都能加快起个大概,那么你就是学编程的天才了。我的习惯是对照书的目录来回忆,每一章,每一节我看到目录的标题就能想起这里是讲什么的,那就足够了。然后,我们可以开始看第二遍了。

看第二遍的时候,书里提到的很多概念我们都知道了是什么意思,就算不知道意思也应该知道它出现在哪个章节,那如果在某段代码里出现了这个概念的应用,就翻到那一节去详细的看看这个概念具体是什么,再回头来看代码,通常,应该很容易理解这个代码了。如果你对本书的兴趣足以让你看第二遍,那么,这一次可以认真一些看了,整体可以准备两周的时间来读这本书。这个时候如果你对代码有兴趣,或者有怀疑,可以到电脑上去测试这段代码了。当然,最好是加上自己的一些理解,或者就算简单的更换程序里面的参数名字和值来写出这段代码,那对记住程序也是非常有好处的。

第二遍看完以后,这本书你应该已经记住70%以上了。然后,你就可以开始看下一本了。如果六个月以后你发现还会遇到一些那一本书上提到的内容,而自己居然已经忘记了,那就找出那本书来再看一次,不过没必要全部从头至尾的看了,只要把自己忘记的部分看一下就可以了。

最后再说说买书的问题。我已经很久没买书了,当然,这也意味着我已经很久没看书了。另外,也是因为目前没有看到好的值的买来的书。首先我会到卖书的网站上去看看用户的留言评论,比如当当和dearbook,但是某些书(尤其是翻译的书)用户的评论通常会分歧很大,好坏就很难判断了。如果买来以后发现不合自己的胃口,那这本书基本上就被打入冷宫了。所以买书之前最好还是先看一看。我的习惯是要买书的话就准备出一天或者半天的时间,安心在呆在书店看书,首先是看目录,如果太过简单或者太过专业或者内容太偏门,那从目录上就可以看的出来。如果目录已经足够吸引我,那就从第一章开始看内容,如果其内容足够吸引我看上半个小时还不放手的话,那这就是一本值得购买的书了。

本文并非针对编程类书籍,对于任何专业类书籍,都是同样的理论。

希望对新手能够有点作用。