个人读书感悟
大学时代
大学以前,我几乎没有考虑过如何选书的问题,因为读的书差不多就是课本、班里传阅的课外书及很普通的小书店里的书。而且读的书也杂,小说、杂志、科普、鸡汤(励志)、军事等等,可以说几乎没有读过专业且有深度的书。也没有想过这些,就只是看遇到的书,感兴趣可能读一下,或者说真的没有其他有趣的事来做,也只好读这些书了。
而到大学以后,图书馆有数百万的书可供选择,无论是畅销的小说,还是专业的书籍,你只知道永远都不可能读完的。这时,就得考虑选择哪些书的问题。而我保持了一贯地爱读鸡汤书的爱好,选择几本名人传记,另外借阅过几本编程、Photoshop、小说、经管等方面的书,我几乎都是根据书名选择书的。准确地说,我大四以前是根据书名及扫上几眼选择书的,尤其钟爱从入门到精通系列。读下来的书也就一二十本,课外加上逃课时间基本上都用来玩游戏、看电影、睡觉了,这些都是高中时认为浪费时间的事情,还玩得不专业,实在是浑浑噩噩的几年。
直到大四时,因为马上毕业找工作了,也因为玩得很无聊了,想着自己该学点儿什么。大四想过学好 PPT 设计,也正好开始使用豆瓣了。然后就是学习过程中不断查找 PPT 的资源,比如博客、网络教程、书籍等。使用资源这个抽象的词来指代这些很关键,尽管我很早就知道,但是从来没有稍微深入自学过任何方面的知识,哪怕是游戏。
毕业三年
大四上学期慢慢在脑中酝酿,并最终决定学习前端这个方向,尽管实际上这时对前端知之甚少。过年期间,家人、朋友、关系不错的同学在询问我以后的打算时,我回答了这一决定,并且这次没有指望 21 天从入门到精通,比较实际地预估花两三年才能学成。从大四毕业实习时开始了自学前端,当然学习资源只能靠自己来找,而书籍方面通过豆瓣、博客文章选择,差不多就是豆瓣评价 8.0 分以上的 HTML、CSS 和 JavaScript 方面的书籍。然后从入门的开始读,先 HTML,再 CSS,然后 JavaScript,这中间还读了其他方面的书。甚至觉得这些调味用的书带给我的影响更深远:
《失控》
我只读了前面几章,现在只留下了自组织形成的模糊描写,甚至忘记了出没出现过“自组织”这个词,但是自组织形成的简单描写对我自学过程的思考很有帮助。在我自学前端前,我对前端方面的知识只限于拼写 HTML、CSS 和 JavaScript 这几个单词。这时,我还没有听过浮动、弹性布局、闭包、DOM、jQuery等等这些概念,即使听过也完全不知道它们究竟意味着什么。所以,我把我掌握的前端知识体系想象成一个自组织系统,而不断学习的过程,就是这个自组织系统不断形成的过程。我列一个前端书单,然后遍历这个书单,我发现书上的相关链接或者我想搜索的问题,我就搜索,我在阅读搜索文章的过程中,又发现了相关链接或不懂的地方,然后继续搜索,最后堆栈溢出,忘记自己刚开始学的是什么了。扯远了,我的意思是概念的掌握是自下而上的,一点一点相关细节的积累,然后觉得应该归类或者起个名字来指代了,然后形成了概念。我这里的描述可能随便了点儿。
《DOOM启示录》
读的电子档,是在一个漆黑的夜晚,一个人上着夜班,守着 RoHS 测试仪器,边工作边通过手机阅读,读的过程中内心热血沸腾,真的不是鸡汤,胜似鸡汤。这本书很明显给了我坚持自学前端的动力,当时的自己,工作很不理想,完全是一个人自学,生活上也可能算无趣的很。
只要有一台便宜的二手电脑,一张 Linux 光盘和一个互联网账户,你就已经拥有了把自己提升到任何级别的编程水平所需的全部工具。
是的,现在的前端学习资源更是这样,只不过现在才知道具体有哪些资源也是需要学习与积累的。另外就是,很多人知道有哪些资源,也知道该学哪些,但是往往低估了其重要性,尤其是长期价值。翻墙与英语算是学习编程中的基础,我也不知道我从什么时候以及从哪里逐渐形成的这种观点,反正不是凭空冒出来的。我很庆幸我对这种观点一开始就没有抵触过,当我某天想学 GAE 翻墙时,发现比我想象地顺利多了,当我开始读英文文章时,虽然吃力,但连蒙带猜能看懂大概在说什么吧,当然遇到的大部分生词都查有道字典了。我发现有些人这两项掌握不好的原因有:
- 臆测:一旦不能在自己臆测的时间内掌握就退缩了,没认识到学习都是一点点儿积累的,事物之间有着自己的运行规则,也许开始难,但是以后难度就不一定了。我感觉一位 Dota 解说,09 说得一句话能表达我的意思:“The truth is what it is, not what you see”。
- 低估长期价值:可能因为这个,觉得 VPN 每月几十块很不值得,而且说实话,是英语学习资源重要,Google 搜索只是用来搜索这些的,所以我个人认为中文网络学习资源质量也影响了百度搜索结果。另外,我也常常这样,比如之前想着补计算机编程核心课程的(不单单是课本,是指涉及到的知识体系),但是总觉得与现阶段工作联系不大而一再拖延。就在刚刚,我突然觉得与现阶段工作关系不大,可能是我想错了,因为自己以前想做的几个小工具需要编译、树结构、网络相关的知识,但是要学这些又要花费时间,而且这些难于上手一样,就半途而废了。
《软件随想录》
现在只是隐约记得作者提到了自己公司开发的一个软件,使用了一种迭代统计方法,然后我结合自己多年制定小计划的习惯,发现自己制定的计划有很大缺陷,就是把事物运行规则假设为线性的了。比如,我要学习某本书,然后就有点儿毫无根据地规定两个月看完,然后看下书有多少页内容,然后算算每天应该看多少页,这样就算计划好了,每天只要看完计划好的页数就算完成了,看不完心里就觉得这下完了。但实际上,对于技术书籍,至少是我读过的技术书籍来说,每章每节的难度都是不同的,往往前几章简单,后面就难了。也因此,每章甚至每页花费的时间都是不同的,不应该以每天读多少页,多长时间读完为目标,除非是为了完成特别紧急的事情,而应该以理解知识为目标。从书名、目录、前几章或者豆瓣上的评论都只能大体上估计一本书的好坏,另外适不适合自己现阶段读就是另一回事了。
不过从我这几年的读书及学习经验来看,从来就没有一本书能够使人精通某一方面技能,书只是作者的经验总结,只是作者所掌握能力的冰山一角,大部分时间还是要花在实际的编码、思考上。我甚至觉得技术书只分两种:入门和高级入门,书只不过是用来入门某个领域或细分领域的,这些领域还是人为划分的。后来,这一观念,再加上前 Node 界的知名大神 TJ 说自己没有上过大学,也很少读书,就是从源码学习,想着“How it works”,我就差点走向了一个极端,我也要不读书,从源码中学习,真是作死。于是又想到,也有很多很多其他的大神都要通过读书吸取知识的啊,每个人都有适合自己的学习方法,我还是得好好读书,先把编程基础打好再说吧,虽然只读书是远远不够的。
翻译与原版
不知道其他方面的书籍如何,就我了解到的计算机方面的,国人写得好的书,不多。我在学前端早期,根据豆瓣上的评分与评论,大致弄了两份书单,一份前端方面,一份计算机科学方面,几乎没有国人写的,都是翻译的。有能力的还是直接看原版英文的好,除了以后接触的学习资源以英文为主外,翻译的不能 100% 传达原作者要表达的,有些英文也比较难翻译,在加上翻译者不认真的话,有些句子读起来不如英文好理解些。当然,就目前国内能进行高质量翻译的人翻译这些书也获取不到多少版税,应该比他们的工资差远了吧,毕竟他们只图名,不图利。后面这句话开玩笑的,这些书还是帮助了不少国内的学习者的,特别是像我这种一开始读英文吃力的人。
这半年来,我又逐渐地意识到我之前高估了读英文原著的难度,或者因为我英文阅读能力进步了吧。记得一开始读 John Resig 写得那本《Secrets of the JavaScript Ninja》真的很吃力,也留下了恐惧的第一阴影,导致后来长时间不敢读,不过说实话这里面确实多一些生词和不好理解的句式,现在也是一知半解。读英文原版的好处也是有很多的,可以第一时间就学习,不需要等别人翻译,不用担心翻译质量,也能够直接看到作者说得话。另外一个读英文原版的好处是:建立一个英文概念构成的知识体系,有助于使用 Google 搜索时,知道该使用什么关键词。所以下一步的方向就是增大读书量,尤其要尝试读些英文原著。
结语
写得有点儿乱,这些都是零碎的感悟,平日里也不写这些文章的,感觉自己语言表达能力还需提升啊。其实,实际的思考过程,更零碎,也更跳跃,感觉用自己的语言表达不出来一样,觉得需要有相似的经历才好理解。