浅谈程序猿书籍的选择,你会如何选择你的爱书呢。

发布时间:2013-10-26 22:22:00作者:左潇龙阅读(2101 )评论(21)

    引言

     

      本篇博文的想法来源于跟群里的猿友们的交流,LZ发现很多人会说自己很迷茫,不知道要学什么。之前LZ已经写过相关的文章,文章指出了程序猿需要掌握的一些内容,但是当中LZ也表达了一个观点,就是LZ个人不太喜欢给人推荐书籍。因为LZ觉得,书籍的选择与职业的道路一样,充满着个性化,每个人适合的都不一样。所以没有最好的书籍,只有适合的书籍,这和找女朋友是一样的。

      写这篇文章的目的,是为了帮助一些迷茫的猿友们,走出书籍制造的迷雾森林,选择一条尽可能适合自己的最短路线走出来。鉴于一些猿友对书籍的选择毫无重心,浪费了很多无谓的时间。因此尽管书籍是比较个性化的,但是考虑到选择的路线还是有相同之处的,所以LZ就斗胆开了这么一篇博文,希望能给各位猿友一些有效的建议,以期能起到一些微薄之力。

     

    对象范围

     

      为了避免不必要的争议,LZ这里还是要限定一下读者范围。本文的读者应该是正在从事或未来即将从事程序猿一职的编码工作,并主要依赖于某一种程序设计语言的猿友们。倘若你并不打算成为一名悲催的程序猿,又或者你并不打算依赖某一种语言生存,而是准备做一个全能人士,那么本文对你来说已毫无意义,可单击浏览器右上方的叉叉按钮。

      另外需要一提的是,由于LZ本人是非计算机专业出身,因此本文的内容对于中途改行做程序猿的朋友可能会更加适合一些。至于原本就是计算机专业的猿友们,可能会有一些不同,但这并不妨碍各位以此作为一个参考。不过LZ这里依然要扔出来那句话,此为LZ一家之言,各位猿友看完之后,还需要有自己的思考。

     

    浅谈深度

     

      很多人感觉迷茫的原因,就是因为自己懂的也不少,但是真要问自己有哪些特别擅长的东西,却发现竟然一个都想不起来,也就是所谓的深度不够。

      大部分人肯定都希望自己的深度足够,生怕自己变成一个万能的废物。但是不知道各位猿友有没有思考过,到底何为深度?倘若你连深度是什么都不知道,又何谈提高自己的深度呢?

      LZ这里要给深度下一个定义,以表示LZ粗浅的理解。在LZ个人看来,一个简单的理解,深度就是指在某一个领域的知识范围之内(这里特指技术方面),你知道很多别人不知道的秘密,通俗的理解就是你成为了某一个领域的专家,这就称之为深度。举个例子,对于Java和.NET来讲,都是运行在VM上的,那么如果你懂了VM的秘密,就说明你在Java和.NET领域当中,有了一定的深度,尽管这个深度只是一点点罢了。

      换句话说,如果你深刻了解了某一个领域当中所有或者说大部分的知识,并将这些知识融会贯通,那么你就成为了这个领域的专家,也就是俗称的“你是有深度的”。因此这里的难度就在于,如何判断某一个知识处于我们所在的领域当中。

      

    无脑选书

     

      上面已经提到,我们增加深度的最大阻碍就在于,如何判断一个知识是否处于我们所在的领域当中,说的通俗一点,就是判断一本书我们是否该读。这也是造成很多人学习迷茫的主要原因,因为很多人选择书的方式是被动选择,比如让别人推荐,或者从网上《XXX必读的几本书》这种文章上拔下来的,尤其是某些博客大牛推荐的书籍,更容易引起新手们的无脑追捧。

      为何从来不会自己选择书籍呢?

      LZ的观点一直都是,不可不信,不可全信。高手们推荐的书籍自然是值得注意的,但是也要自己筛选,而且更重要的是要看时机,千万不可一股脑收下。除非你能保证,你在读任何一本高手推荐的书籍时,都能与他保持一模一样的客观与主观的环境。比如思维方式、技术水准、知识体系、工作经历等等,如果这些条件都一样,那LZ不反对你照搬无误的将这些书全部读一遍。

      有的猿友倒不会无脑选择别人推荐的书籍,不过却更加糟糕。他们选择书籍的方式是一些非常奇葩的标准,比如太厚的不想看,太枯燥的不想看,看不懂的不想看等等。这种情况更加危险,这种完全根据自己喜欢来选择书籍的方式,纯属安乐死。之所以叫安乐死,就是因为这种选书方式,你会发现你看的非常舒服,因为不舒服的都被你排除掉了,但是却对你的提高十分有限。

      这算是LZ见过的,两种最无脑的选书方式,也是LZ个人极其不推荐的方式。如果你现在还是处于这样的过程当中,请务必尝试改变这种方式。

     

    选书也是一种思考

     

      LZ推荐的一种选书方式,就是在思考中选择书籍,而且这种思考有时候比你读书更重要。估计有的猿友不服了,选个书而已,至于说的这么神秘吗。猿友们先遏制下内心的这种想法,LZ之所以这么说,肯定是有一些自己的理由的,绝非大放厥词。LZ说一个自己选书的例子,各位就知道LZ为什么这么说了。

      第一本LZ读的书,是大名鼎鼎的Java宝典编程思想,当时读完以后,感觉对Java当中的概念清晰了很多。比如初始化、泛型、拆装箱等等一些比较基础但却很重要的内容,不过由于当时LZ只是第一次主动买书读书,因此并没有存货。于是接下来,LZ就开始思考接下来到底应该买什么书。

      各位猜一下,LZ当时选择的书是哪些?当时思考了很久,LZ选择了两本书,一本是Java虚拟机相关的书籍,一本是编译原理这本龙书(电子版)。为什么选择这两本书,而不是其它的书呢?

      因为LZ渐渐思考清楚了两件事,想要彻底明白初始化等一些Java内部机制的原理,答案就在Java虚拟机当中。而想要彻底清楚泛型和自动拆装箱等一些编译器给的糖衣炮弹,答案就在编译原理当中,更确切的说,是在Javac编译器当中。这一思考让LZ对Java的生态系统清晰了很多,因为LZ抓住了几本书之间的联系,而每本书其实就是一个大的知识点,将这些大知识点在你心中形成一个知识网,绝对比你读一本书的价值要大,这不正是传中说融会贯通的过程吗。

      这样选择书籍还有一个附加好处,就是因为你想要的答案就在你所选择的书籍当中,因此你看起来大部分时候不会感觉无趣,甚至会十分迷恋也是正常的,这就要看你的求知欲和好奇心有多大了。

      因此LZ给各位猿友一个建议,在每次读完一本书的时候,就将你现在已经读过的书在你心中形成一个关系图,然后寻找下一个节点应该在哪,这个节点代表的应该是一个知识点。只要你选定了下一个知识点,那么具体书籍的选择参考高手们推荐的书籍并非不可。

      比如LZ当时选择Java虚拟机书籍的时候,就是看到的一位高手推荐的书籍。不过请注意LZ选择的顺序,LZ并不是先看到的这位高手的推荐,然后直接就去买他推荐的Java虚拟机书籍了,而是LZ先一步想要找Java虚拟机相关的书籍,后面才找到的这篇文章,进而才采用的这位高手推荐的书籍。

      所以LZ更愿意回答“龙哥,我想找一本XXX(比如Java虚拟机这一类任意一个知识点)相关的书籍,你能给我推荐一本吗”这样的问题,而不是直接问LZ“龙哥,给我推荐几本书吧”这样的问题。说实话,LZ并不知道你的知识体系,你走到哪里了,该看什么了,恕LZ无法给你推荐任何书。

     

    LZ现在的知识体系

     

      LZ现在简单罗列一下自己的知识体系,这其实算是LZ选择书籍的路线,这其中不会包含任何一个具体的书名,只是一系列知识点的关联。另外,LZ是主Java的程序猿,因此这个体系图更多的是给Java的猿友们参考的。不过.NET的整体架构与Java还是十分相似的,因此对于.NET的猿友们来说,也并非毫无价值。

      在此LZ必须声明,以上体系完全是LZ根据自己的情况所画的,因此不具备任何权威意义,任何人都可以根据自己的需要调整,而且图中的知识联络也并非十分严谨,只是LZ个人的一个简单的串联而已。图中所标注的Java领域的知识其实也是不全的,因为这只是目前LZ已经了解或准备了解的内容而已。

      不过从这里也能看出来,Java这个入门简单的语言其实非常不简单,就图上的内容就够我们喝一壶的了,更何况这里还不全。对于.NET来说,尽管LZ并不了解,但相信也是一样的。因此各位千万不可掉以轻心,千万别让自己这个屌丝青蛙,没当上王子,却被温水煮死了。

     

    深度与广度

     

      各位看到上面的内容,估计会有点晕菜,不是说要深度吗,上面这么多东西需要学习和了解,如何能有深度。其实这个担心没有错,也正因为如此,LZ才将上面的一部分内容加上了红色背景,被LZ将背景标红的那部分,就是LZ现阶段学习的主线。

      红色背景的内容就是深度的保证,而其余的部分,则是在此基础上广度的扩张。因此,LZ有一个很重要的忠告,就是千万不要被上面的知识体系迷惑了,红色背景部分才是我们的主线。我们学习的任何其它内容,都应该是为了主线服务的,而且通常情况下,这些内容我们并不都需要精读。

      对于经常讨论的有关深度与广度的问题,就像先有鸡还是先有蛋一样,没有鸡哪来的蛋,而没有蛋又哪来的鸡。同样的,没有深度哪来的广度,没有广度又何来的深度,这样纠结的问题LZ还是决定不搀和进来了,而且这样的争论其实毫无意义

      我们这里只谈谈学习的过程应该是怎样的,LZ个人的想法是,学习的过程就像爬金字塔一样,我们从最底层的基础开始爬,而最底层是最广的,因为需要很多的铺垫才可以继续攀登金字塔,如果你足够努力与幸运,最终可能可以爬到金字塔尖上。对于LZ这种非计算机专业的同学来说,属于一上来就爬到了一定高度的情况,在这个时间,我们必须有事没事就回去修修你的金字塔底层,直到牢固为止,否则就算你继续向上爬到一定高度,也一定会摔下来的。

      金字塔尖是特别窄小的,否则也不可能称为尖。由此可见,我们学习的过程应该是从基础渐渐攀爬的过程,是将掌握的领域无限压缩并提升的过程,最终将我们的知识压缩成一个锋利的塔尖,直插云霄。不过需要注意的是,你爬的越高,应该看得越远,而不能只盯着你的金字塔尖,否则你得到了金字塔尖,却会失去你身边广阔的天空。

      

    小结

     

      作为一个程序猿来讲,学习确实是很重要的一环,而学习的过程中,书籍的选择又是重中之重。所以我们平时多花一些时间去选择一本合适的书籍,是非常值得的,书籍才真的应该是宁缺毋滥,与其将时间浪费在一些相对无用的书籍上面去,还不如好好的思考一下你的知识网,谨慎的选择下一个知识节点,下一本书。


    版权声明:本文版权归作者(左潇龙)所有,欢迎转载。但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

    15
    精彩
    0
    感动
    0
    搞笑
    0
    开心
    0
    愤怒
    0
    无聊
    0
    灌水
    0
    惊讶
#1楼     时间:2013-10-26 23:24:00      来源:It's
不知道该怎么看java的类库
#2楼     时间:2013-10-27 00:24:00      来源:霍啸林
读书与能力挂钩吗 (来源:合仔茶端)
#3楼     时间:2013-10-27 09:13:00      来源:除了这些,还有。。。
@ findit
不完全挂钩,但是也不是完全不挂钩
#4楼     时间:2013-10-27 11:41:00      来源:Alexia(minmin)
LZ的这张图我也几乎全部都涉及到了,的确说深还真不知道自己对哪块比较熟悉,看来自己得有个重点进行学习了
#5楼     时间:2013-10-27 13:14:00      来源:立雪三尺
楼主的图是用什么软件画的?
#6楼     时间:2013-10-28 01:27:00      来源:左潇龙
@ It's
带着疑问去看,一般效果比较好。
#7楼     时间:2013-10-28 01:29:00      来源:左潇龙
@ findit
3楼说的有道理,能力一般指综合素质,包括很多方面,比如交际沟通能力、技术实力、个人素质及修养、思考能力、团队协作、写作与表达能力等等,而读书一般主要提高的是思考能力和技术实力,对于其它能力的提高可能效果不大,因此读书只能算是提高了某几个方面的能力而已。
#8楼     时间:2013-10-28 01:32:00      来源:左潇龙
#9楼     时间:2013-10-28 01:33:00      来源:左潇龙
@ 立雪三尺
是园子里的一位猿友提供的,processon,是一个web画图工具,百度一下你就知道。
#10楼     时间:2013-10-28 09:15:00      来源:跳跳虎
Quote:“LZ发现很多人会说自己很迷茫,不知道要学什么”
其实不管学什么,学起来就对了。不必太计较流行性和通用性,现在很火的,几年后说不定影子都找不到。多看经典原著
#11楼     时间:2013-10-28 10:40:00      来源:aawty
呵呵 我最近在看Thinking in Java和编译原理以及虚拟机方面的书,前两本书不是一般的好,收益颇多,龙哥加油啊
#12楼     时间:2013-10-28 10:56:00      来源:逆火狂飙
在外语面前,其他书都是浮云。
#13楼     时间:2013-10-28 11:18:00      来源:左潇龙
@ 跳跳虎
呵呵,让施主误解了,其实文章下面也说了,很多人是一直在看书,但是感觉自己没有深度。
而且经典的书也不是谁都能看的,很多经典书难度比较大,新手根本看不懂的。
#14楼     时间:2013-10-28 11:27:00      来源:左潇龙
@ 逆火狂飙
外语的好处不可否认,英语能成为大牛自然是最好的,但是这个观点贫僧实难苟同啊。
#15楼     时间:2013-10-28 15:56:00      来源:跳跳虎
@ 左潇龙
感觉越是好书,一遍读懂很难,多读几遍,会有不一样的收获
#16楼     时间:2013-10-28 16:05:00      来源:左潇龙
@ 跳跳虎
个人觉得这有时候是一种表象。贫僧举个稍微极端点的例子,比如某人刚毕业工作半年的时候就开始研读一本大作,结果没看懂,放下了。过了半年,又看了一遍,感觉好像懂了一点。又过了半年,又看了一遍,感觉好像懂的又多了点。又过了半年,又看了一遍,感觉基本上都懂了。前前后后四遍,总算基本上明白了。
所以此人得出一结论,好书就是要多看几遍才能看懂啊。看似是正确的,其实是表象。
最后一次,也就是第四次看的时候此人看懂了大部分,很大一部分原因,并不是因为看了四遍,而是此人此时已经工作两年了,他的水平此时已经差不多可以看这本大作了。
所以如果此人直接在工作两年的时候看,可能第一遍就看懂了大部分,而前面的三遍其实效果甚微,不如看些其它不是经典但相对稍微简单点的书更好,可以为以后研读经典大作做准备。
不过好书多翻翻是没错的,但是一遍一遍的读其实是浪费时间,施主可莫要被这个结论给忽悠了。看不懂就果断放下,等经验够丰富了再看,千万不要觉得多看几遍就能看懂。
#17楼     时间:2013-10-28 21:58:00      来源:乱舞春秋
深度是相对而已的,就像语法对于语言机制,机制对于语言设计。

赞同楼主的先深度后广度的观点。

”LZ个人的想法是,学习的过程就像爬金字塔一样,我们从最底层的基础开始爬,而最底层是最广的,因为需要很多的铺垫才可以继续攀登金字塔,如果你足够努力与幸运,最终可能可以爬到金字塔尖上。“
这点不太赞同,我觉得这个金字塔是倒立的,一开始你觉得技术好多,眼花缭乱,其实深入挖一挖,底层基础也就那么点,都是在最底层的基础之上开花结果生长出来的,计算机知识就像一棵树,树根是基础,这部分最小,上面庞大的的树枝树叶都是由基础发散而来的。
#18楼     时间:2013-10-28 22:03:00      来源:乱舞春秋
其实我觉得最重要的是人要有自己的“主见”、要有怀疑精神。
这样才不会人云亦云跟在别人屁股后面、别人的建议指导后面跑而忘了这条路适不适合自己。
#19楼     时间:2013-10-29 00:09:00      来源:左潇龙
@ 乱舞春秋
说的有一定道理,不过贫僧还是持保留态度吧。毕竟“基础就那么点”这一点,贫僧不敢苟同,想想我们的大学->研究生->博士,贫僧个人觉得其实是类似的。
大学什么都学,基本都是基础,但是基础又多又杂,就拿贫僧的专业来说,大学里高代、数学分析、概率论、离散、微积分等等一大堆数学基础课程,这些都是基础,当然了,这里面可能包含了所有数学专业研究生的基础,但终归全是基础。因为基础好学,所以我们在学习这些基础的时候,可以一下学很多,以便于后面进入研究生时,可以在数学专业随便选方向。
到了研究生,你需要选择一个小领域,所以之前大面积铺垫基础的作用就起到了,因为无论你选什么,只要你把之前的课程学了,那么你用到的基础肯定是你大学里大面积学习的那些基础课程中的几门。此时,开始从那么多基础课程中选择几门开始深究。到了博士与研究生估计也是类似的。
当然了,贫僧没上过研究生,不过感觉还是见过猪跑的,0.0。贫僧个人还是觉得,我们的领域在不断缩小,从大量的堆积基础知识,然后逐渐缩小领域,最终压缩到极致,就是巅峰。当然了,这只是理论上的,实际当中,一切皆有可能。
#20楼     时间:2013-10-29 07:32:00      来源:乱舞春秋
@ 左潇龙
可能是我那句话表达不清楚,我说的基础是最本质性的东西,比如web开发,http、html是本质;再比如操作系统,在这个之上有java平台、.net平台、COM等。

我想你的意思是具体深入到某一个细分领域里面。比如java平台,或者再细分到java的web开发,再具体到java中的某一个web开发框架+orm+各种设计。但是往底层基础去挖,web开发最本质朴素的东西就是http+html。

你的观点侧重在学习积累过程,我的侧重点说知识体系的,咱俩没从一个角度看,哈哈,我站在你的角度侧重点看也是同意你的观点的,但是我觉得我们学习过程中应该抓住本质,抓住主线,不能被某一项枝叶给绕进去。
#21楼     时间:2013-10-30 13:15:00      来源:跳跳虎
@ 左潇龙
高僧正解。其实挑选书就像找女友,知道自己处于什么时期,什么定位,然后由浅入深的看。从深度到广度,旁征博引。当然在达到一定境界前,一些大师的书显然不合适小菜鸟,这个时候要有觉悟的回去补补基础,空有花架子不行,内功才是王道。走的越远有时候会发现,让你真正拙技的不是这个框架,那个概念,而是大学时候睡过去,抄过去的基础课程(数据结构,操作系统,编译原理....)
发表评论

站内搜索