从“架构师书单”讲开去

源起

琉璃要我推荐一下给工程师们的各阶段的书单,这件事被我压在手边好些天了已经。然后呢就看见了公司内网中孙坚的一份推荐。其实那份书单的一些信息也是有出处的(或者说有类似介绍的地方),是江南白衣的另一份架构师书单,目前已经“翻新”到2009年版和第3版了:

看来白衣兄的确是要把这份书单做到穷极。但事实上我在看到他的最初版的书单时,就提出过反对意见

换句话说,从4年前白衣兄就开始出书单,再结合他在主页上常常提到的“种种书”,大概到现在他已经读了许多,以至于架构纯熟了吧?

但,真的如此吗?架构师就是一本书一本书地读出来的?

进一步地说,工程师也是一本书一本书读出来的?

好象不太对吧?其实就我的学习历程来说,书读的多少,只是一个次要条件,而书读得多透,才是充要条件。50本书翻下去,不见比专读一本有效果。我的读书也就向来如此,读一本,就往深透里读,多次地、带批判与反省地读。

关于开发类书目的推荐

软件开发方面,我下过功夫的是《数据结构》、《汇编语言》、《操作系统原理》这些基础课,应用类的书里,有《Windows核心编程》和《Windows技术内幕》等等,但应用类的书没有太多的可推荐性。除了这些,给我最深启发、感受一本书是:

《结构程序设计》

最经典的有关结构化程序设计理论的论著。O. J. 达尔、E. W. 戴克思特拉、C. A. R. 霍尔著,陈火旺等译,1980年出版,已绝版。

对于开发人员的具体工作来说,除了各类的“手册”,我觉得《代码大全》是非常值得推荐的:

http://www.china-pub.com/28351

关于架构类书目的推荐

接下来,架构的书都有什么是可以看的呢?除了我在前面

http://aimingoo.spaces.live.com/blog/cns!F9303C43D5CEAFB3!516.entry

中提到的两本:

之外,我唯有一本是要推荐的,就是新近的一本《架构之美》:

http://www.china-pub.com/196084

如果你真的想要看看“术”的问题,我可以建议你看看另一本也叫《架构之美》的书:

http://www.china-pub.com/195142

不过,我需要说明的是:可以看,不可以学。至于为什么,后面我会讲到的。

关于工程类书的推荐

工程类的书呢?两本:《人月神话》与《人件》。看懂了,工程的全局基本上就在心里了。

我为什么做这样的推荐?

可能有同学已经注意到了,我的推荐里,关于“工程师”和“程序员”的部分还有实作,还有一些基础,但对于架构与工程,就没有这些类型的书了。为什么呢?

我这样推荐的根本原因其实也在这个问题之中:因为,事实上,工程和架构不是“学”出来的,而是“战”出来的。而战局中的人,其实没有那么多条理那么多章法。你让风清扬到千军万马里去打仗,他也是见一个砍一个,而不会使那个孤独九剑,因为剑法还没使出来,就被一枝飞箭给灭了,或者让某个半死的小兵抱住了大脚。

剑谱里,不会讲半死的小兵,也不会讲飞箭。前者叫包袱,后者叫风险。无论是架构还是工程,最终决定你是否能推动它的因素,在于你处理这些包袱和风险的能力。这种东西,在书里,从来没有。

所以我推荐的这两类书,就是希望同学们从这些书中看到一个“全局的映象”。从书中看到“源由”,看到“选择”,以及看到种种“问题”。只有从结果看到了问题,才真正地读明白了这些书。而读明白了,过去几十年的工程经验或架构思想,也就在心里面了。具体到架构与工程的做法,你再去手册,再去看“江南白衣”兄推荐的那些书,找到解决问题的法子,就可以了。

我们大多数人,只是看得到事,看不到问题。所以读书,也就只是读文字,读方法,而不是读那本书的故事。

同样地,我们多数人在架构和工程上,也秉承了程序员的思维,应对“种种事”,而不是“种种问题”。所以工程被做到手忙脚乱,架构被做得乱七八糟。

结语

所以当年诸葛先生挥了挥泪,把马谡给斩了。其实没有人知道,他或许并不心疼。