推荐序一
算起来,这是我第三次动笔为这本书写推荐。一开始以为写一个推荐非常容易,但是实际动笔才发现比我想象的要难很多。仿佛我们在准备开发一个系统的时候,实际开发的人都是准备项目可能是困难重重,而旁的人却经常一脸不屑而认为很好完成。牛和鸡的故事(注1)一次又一次地上演,只不过这一次,我又当牛,又当了鸡。以前也以为写一本书很容易,这主要是源自我经常看到书店里琳琅满目的技术书籍,标榜以“N天搞定×××”、“×××从入门到精通”以及“玩转×××”,但是每每翻开一看几乎都是官方教材的中文翻译版,或者是某某工作室中十几位同学不断复制粘贴的产物。所以便认为技术类的书籍基本上就是国外资料翻译加国内同行“借鉴”。而鲜有的几本精品往往也淹没在成千上万的图书海洋中,想要找到它们除了自己有孙猴子般火眼金睛的视力和如来佛祖般宽广的人脉推荐,还要有巴菲特一样足够资金支持——在国内图书市场淘到一本好的原创技术书籍,难度不比在潘家园搞到一个宣德炉低。这也是为什么很多人希望国内的技术高人能够肩负起培养下一代的重任,为像我这样的后生多多推荐好的技术书籍的原因。毕竟能够花大笔银子在潘家园买宣德炉的人并不多。
其实我无论如何也没想到王涛会邀请我为他的这部力作写序,而且还是推荐序。一来本人觉得自己能力水平差得太远,自己还需要身边牛人帮我辨识高质量的作品。二来自己在.NET的圈子里着实算是个新人。虽然近几年也陆续认识了一些高手,但是大都属于对他们高山仰止的状态,所谓身不能至心向往之——这种水平又怎能为别人推荐呢?所以最开始接到王涛的邀请我自然表示力不能及而且层次有限。不过最终还是勉强答应了下来,一方面是整日和王涛胡聊乱侃,不能太折了兄弟的面子;二来,也是主要打动我的原因,我深知这几年他倾注在这部书上的心血。与其让这本好书淹没在一排排“赝品”之中,不如我暂且做个浮标,虽然不及灯塔那么耀眼和挺拔,但是也算增大了它的影响范围,让作为读者的我们更容易看到和知道,而不会被那些粗制滥造的东西蒙蔽了双眼走错了路。
我不清楚翻开这本书的你是否看过了《你必须知道的.NET》第1版。如果你认为这本书只是上一本书的添头或者修改那就大错特错了。现在音乐界流行老歌翻唱,几十年前的歌曲,随便换个编曲就可以再卖一次;电影界也是动不动就来个什么什么怀旧版,什么什么经典再映。归根到底就是再从我们这些劳苦大众兜里套点银子出来。但是这本书却不是前一本的所谓“新歌加精选”。虽然我只是看到这部书的两个样章,但是还要惊叹于这本书所涉及的内容之广、见解之深,以至于我看完了样章之后便向王涛提出了个修改意见:一定要加上两个副标题“.NET程序员面试宝典”和“.NET应用架构指南”。因为在这本书当中,我看到的不仅仅是和第1版一样对于.NET底层深入的研究和完整的介绍,还能够看到作为一个在.NET阵营打拼了多年的架构师对于系统架构、设计模式、面向对象等诸多方面的经验、体会与探索。关于某个具体的技术或工具的书籍在国内可能非常普遍,譬如介绍ASP.NET的图书可能不下几十种,但是从作者本人经验出发介绍软件设计架构的书籍便是凤毛麟角,偶有几本也是国外图书的翻译版本或者影印版本。而这本书在设计方面的部分我认为是其最大的亮点,没有照本宣科的介绍,没有千篇一律的观点,所有内容都是作者本人的经验分享——有成功的经验,也有失败的经验。这其中可能不免有些内容不尽完美,有些观点尚需推敲,但这正是我们技术人员所希望看到的:相互交流,集思广益,共同进步。而不是像国内的一些博客站点那样,一遇到观点不同就开始在评论中挖苦鄙视甚至破口大骂。虽然说我们没必要像职业书评家那样,承担着指导读者咒骂作者的使命。所以这样一部呕心沥血的作品,又怎能不让我为之吐血推荐呢?
记得有一次和王涛聊天的时候,我提到了“指月之指”的故事(注2)。如果说像我这样水平的人写出来的书只能是传递知识的话,那么这本《你必须知道的.NET(第2版)》就是在传递智慧。知识只是关于知道和不知道,而智慧是无法传授的,只能自己通过实践的积累慢慢感悟。虽然说和“指月之指”的典故一样,这本书不可能就是软件设计本身,但是正如那指向明月的手指一样,能够让我们可以沿着它的方向去寻找软件设计的精髓。
写到这里,突然心中一凛,这篇推荐序写着写着更多的都是我自己的心情和感受。难道在不经意间我也成了之前所说的“书评家”对这本书开始评头论足起来。还是到此停笔吧,上面的话权当一个疯子在被项目折磨之后的自言自语,书的好坏最终还是要看书的您自己去品评。至少我不想成为《伊索寓言》中所写的那个苍蝇,坐在车轴上嗡嗡大叫:“车的开动,全都是我的功劳”。
徐子岩
2011年6月
推荐人简介
徐子岩,北京工业大学计算机学院毕业。现就职于宇思信德科技(北京)有限公司.NET开发部架构师、Azure专家、微软Windows Azure MVP。精通.NET平台多项技术,包括ASP.NET MVC、WCF等。目前专注于微软Windows Azure云计算平台的研究、咨询、设计和开发工作。
注1:敏捷开发中一个著名的故事,用来说明项目会议是否需要项目组之外的人员参与发言。例如在准备牛排加煎蛋的早餐这个项目中,牛由于是贡献者(贡献自己的肉)所以它的发言是对项目有实际意义的,而鸡只作为参与者(下个蛋完事)所以会提出很多对项目进展不负责任的观点。
注2:出自《楞伽经》卷四,“如愚见指月,观指不观月;计著名字者,不见我真实。”