难得倒休在家,前一段时间忙的像疯狗一样,下面的日子一样不会好过多少,还好,今天有这么一个短暂的休息。昨天10点钟在床上就不知不觉的睡着了,今天又来一个午休,基本上恢复的差不多了。想想这么久没写博客了真是罪过,趁着自己有时间,赎个罪。
实际上,每写博客并不是因为自己真的没有这几十分钟时间,因为一篇博客,简单一些的话,半个小时之内可以搞定它,只能说自己懒惰。前段时间,实在困倦的情况下,我都徘徊在豆瓣和gigapedia 这两个网站之间,在豆瓣上面找一些评论比较好的书,然后在gigapedia上面down下来(没法子,穷人,只有看盗版书了,自抽一下)。心理面就多了一些满足和幸福感,好像书下载下来了,这些知识也都属于自己了一样,:D 下载下来之后,放到dropbox 中,我准备在 dropbox 中维护一个个人的图书馆,把自己看过的,要看的,都下载放进去。感觉 skydrive 更加好一些,毕竟有25G 的空间,可是上传实在不方便,还是用 dropbox 吧。
这段时间虽然很忙,但是闲暇时间还是读了一些技术书籍,这引发了我一个思考:为什么我之前对于书籍的印象如此的不好,现在开始逐渐的转变了呢?。不怕别人笑话,我就是这么一个土人,曾经认为不用看书,只要写你的代码就够了。现在想想,这自然不对,然而,我为什么会有这样的想法呢?我觉得,这大概有两个原因:1.因为我自身比较土鳖,视野太窄,没有能够接触一些经典书籍,认为所有的书籍都想那些土鳖书籍一样无聊 2.性格浮躁,这点原因更加重要一点,懒得去读,过于实用主义,拿来主义,这些东西是什么都没有弄清楚,就认为看这些东西没用。
性格浮躁,决定了我肯定是实用主义,看到了什么东西想到的会是这东西对当下有什么作用,我觉得这是有些不好的,人总不能太急功近利了,不能太只顾眼前了。同样的,正是这样的原因,造成我的基本功会不扎实,这点自己已经有体会。
正是这样实用主义,我“恨”透了本科学校中的大部分课程和教材,说实在的,我没有资格来否定211大学选取的教材,但是,很多(我没说全部)教材让我“痛苦”,甚至让我对“看书”这两个字都产生很大的偏见。然而,光说这些书籍,可能往往都是一些很好的书目,甚至是经典。也会听到很多人在社区里面说,要是重新来过一定要在学校里面学好那些基础课程。在我看来,这样的想法不错,这样的说法多多少少会有些误导人,我觉得,就算把这些人重新送回学校,或者一些在学生看了上面的话,面对着我们大学老师的讲课方法,以及原来的教材,很多人一样会在《微机原理与接口技术》课上一样会睡觉。
对于这点上面,我不得不说一些国外的书籍,我不会有这样的感觉,它们会让你很轻松愉快,会让你产生共鸣。这段时间我每天晚上睡觉前会在床上看《the art of unix programming》,仅仅是睡觉前在床上看书,不知不觉的就看了一半多,里面的 unix精神深深的打动了我: Keep it simple and stupid .于是也就有了一些事物的评判标准,用这种原则思考以前的写的代码,看过的书籍,自然也会衡量一下大学中令我“痛苦”的教材,虽然这样的准则来衡量书籍并不是很合适,但是简单,清晰的道理,在哪里都会适用,有些大学教材,我看不到这两点,好像它们的存在就不是为了实用,不是为了清晰。
说道实用,我看了一个推荐图书列表:站在巨人肩上 原文地址:http://devlicio.us/blogs/billy_mccafferty/archive/2007/11/12/standing-on-the-shoulders-of-giants.aspx
Foundational Texts
What follows are key texts that every OOP developer should read, without exception, regardless of experience or platform. The order of the list is the order that I suggest reading them. These texts focus mainly on writing better, maintainable code with a transition to solid object oriented design.
-
Code Complete, 2nd Ed. by Steve McConnell
-
Refactoring by Martin Fowler
-
Refactoring Workbook by William Wake
-
Applying UML and Patterns, 3rd Ed. by Craig Larman along with a companion text of UML Distilled, 3rd Ed. by Martin Fowler
-
Object-Oriented Design Heuristics by Arthur Riel
Apprenticeship Texts
These texts help one move from focusing on the code to seeing the implementation from a higher viewpoint and improving the integrity of the project as a whole.
-
The Pragmatic Programmer by Andrew Hunt
-
Patterns of Enterprise Application Architecture by Martin Fowler
-
Test-Driven Development by Kent Beck
-
Refactoring to Patterns by Joshua Kerievsky
-
Head First Design Patterns by the Freemans and a companion text of the gang of four’s classic work, Design Patterns, for post-read reference
Journeyman Texts
These texts move towards more "putting it all together," wrangling the software development process, and getting into the "science" behind computer science.
-
The Mythical Man-Month by Frederick Brooks
-
User Stories Applied by Mike Cohn
-
Agile Software Development or Agile Principles, Patterns, and Practices in C# by Robert Martin
-
Applying Domain-Driven Design and Patterns by Jimmy Nilsson
- Rapid Development by Steve McConnell
-
Extreme Programming Explained, 2nd Ed. by Kent Beck and/or Agile Project Management with Scrum by Ken Schwaber
-
Introduction to Algorithms by Thomas Cormen
The Beginnings of Mastery
These texts help hone your skills along with improving the efficiency and effectiveness of your team.
-
Domain Driven Design by Eric Evans
-
Working Effectively with Legacy Code by Michael Feathers
-
Agile Estimating and Planning by Mike Cohn
-
Lean Software Development by Poppendiecks and their companion text, Implementing Lean Software Development
Mastery Texts
Although not to be seen as compulsory as the above texts, what follows will assist in taking you into the realm of pure computer science. At the very least, they serve to demonstrate that our work has solid foundations in quantitative science.
-
The Art of Computer Programming, Volume 1: Fundamental Algorithms, 3rd Ed. by Donald Knuth along with volumes 2, 3, 4 (and its derivative works)
-
Concrete Mathematics: A Foundation for Computer Science, 2nd Ed. also by Donal Knuth
仔细看这个列表会发现一个有意思的现象,就是所谓的一些基础书籍没有出现在foundational texts 列表里面,出现的却是一些OO,重构,代码大全之类的书籍,而在第三阶梯,journeyman texts 里面出现了《introduction to the algrithm (算法导论)》在最后一个阶梯 mastery texts 里面是 knuth 的TAOCP 以及《具体数学》。您是不是感觉这顺序好像和我们所认识到的尝试好像是相反的?
从工作半年来的体会来看这个推荐列表,还是有一定的道理。首先,它的定位并没有想把你培养成为科学家,而是让你逐渐的做好项目,做完善项目,伴随着实践与思考,逐渐到达大师水平。
也说不好谁对谁错,我还记得我们著名的大学生“偶像”李开复先生还推荐我们说,应该在本科阶段把TAOCP搞定了。
不管怎么样的顺序,还是依靠自身不断地努力和学习,可是接触东西的顺序,可能就会根据性格的不同而不同了。
haha,越写越长了啊。 要读的书看来还挺多呢。
[Translate]