初级程序员读书方法论
20190118 更新一下:
此书评写于将近8年前,回头再看这篇书评,深感羞愧。也正如很多评论所指出的,了解底层机制在程序开发尤其是大型系统的开发上至关重要。同时,多动手、快速动手也是成为一名高效率软件工程师的必经之路。
如果我能回到8年前,我一定会对那时的自己说:先不着急学Java,因为对于没有计算机基础的人而言,一上来就想掌握一门编程语言完全是痴人说梦。而很多新手往往认为学会了一门编程语言就等于掌握了软件开发的能力,这是非常急功近利不切实际的想法。
所以作为一名初级程序员,可以先学习算法,一边学习算法一边学习相应的数据结构。了解这些知识之后,再去学编程语言。然后就是大量动手,这时候可以动手实现算法或者实现数据结构。这样你就对这门语言的功能和用法有了进一步的认识,同时也加深了算法和数据结构的理解。之后再去做更大的工程应用。
最后,底层非常重要,作为初级软件工程师,你可以不要求自己精通底层,但一定要了解底层。底层决定了上层软件的设计,如果不了解底层,如同在不了解地质结构的情况下贸然盖楼。
20110513 原文:
这本书购于去年七月,八百多页。纸张大,印刷密度大,不到600页的《C++ Primer》就够厚了,这本更是让人望而生畏。 我本专业并不是软件开发,属于半道出家,一提程序就头疼,去年买了这本书后就束之高阁,直到今年年初认为本来程序就烂,买了书还不读,再这么下去就是自取灭亡,于是制定了详细的读书计划,每天读。当时豆瓣上有人说每天读两小时《Thinking in Java》,一个月内可以啃下来,于是我照做。其效果如同背俞敏洪的《GRE核心词汇》。第一周还能坚持,第二周速度就慢下来了,到了第三周,回头翻之前看过的,发现全忘了,接着崩溃。 后来又断断续续地坚持了一段时间,还是捡了芝麻丢了西瓜。直到一个月前,因为有很多Java作业一直拖沓着,还有项目要做。于是从简单的作业入手,先一个一个解决作业。第一个作业是关于Swing和多线程的,于是我先把这本书里的多线程和Swing两章看了一遍,看得很痛苦,读过这本书的大牛的人都知道,这本书关于Swing没有图例,而且本书代码格式很丑。好容易过完多线程和Swing两章,发现作业还是不会做。接着崩溃。 后来想,不管了,作业能写多少写多少,开始直接上手敲代码,因为会的不多,程序里的代码全是最简单的控制语句,实在编不出来了就回头翻这本《Thinking in Java》,看看有没有什么解决方案,就这样,一遍遍敲,一遍遍看书,一遍遍优化,一遍遍测试,一遍遍调试,第一周的时间里解决了第一个作业,接着在下一周里完成了余下的所有作业。 再回头看看这本《Thinking in Java》,发现不知不觉中,这本近900页的书已被我看得差不多了,很多书页也被翻黑了。 我居然看完了这本曾被自己诅咒过无数次的大部头。 不能不说的是,这本书真无愧于经典二字,内容涵盖到了Java SE的所有方面,语言轻松,可以透过字里行间体会到作者的可爱,但为什么当初无论怎么都看不进这本书呢? 我发现对于程序员而言,读一本新书不能像其他学科那样从第一页开始慢慢啃,技术重在用,重在将大脑中的灵感转化成现实。程序员要有敢想敢做的胆识,不会没关系,做的时候如果你的想法无法转变成现实,你会有种急迫地想要学习的冲动,这时候再回来看书,只看自己不会的和想看的,你会发现收获异常大。 有人说,这样做可能会导致自己的内功不深厚基础不扎实,我认为内功深不深厚基础扎不扎实取决于看什么书。当然,如果这本书只看一遍,神也bless不了你。 PS:因为这本书,我爱上了Java,爱上了面向对象,爱上了编程,但是我还是对底层的东西不感兴趣,在现在这个技术高速更迭的时代,我固执地认为程序员需要的是将已有的东西重组创造出新东西,想法和创意很重要,Java的诞生本就是为了解放程序员的大脑,让大脑们用有限的时间和精力去做更有意义的事情,一股脑地强调底层基础不符合面向对象的精神。面向对象的精神是什么?复用。 好了,我准备再读一遍《Thinking in Java》去啦~