来源:ZDNet软件频道
网址:/software_zone//0416/387041.shtml
一、大道至简与愚公移山
《大道至简》一书最初的领悟来自那张EHM图。这个故事我在书中已经讲过:在一次培训的准备工作中,我顿悟“语言只是工具”,并由语言的工具本质为起点,透视了整个软件工程体系。这张图后来被补充为“软件工程层次模型(EHM)”。而从这张图起,我便有开始为我的这些想法写出一本书来,而书的名字就是《大道至简》。
我写书是从前言开始,在写《大道至简》的前言(第一版的“前言后语”)时,我并没有想到从哪里开始写整本书。也就是说,只有写书的想法,却没有整个框架。因此你在前言中看不到有关“愚公移山”的任何信息。开始写第一章的时候,久久不能下笔,也不知道从何论起。我找来一本成语词典,东翻翻西翻翻,一眼便瞅见了这个“愚公移山”,再一想:嗯,的确是个好题材。这才由此下笔,因而《大道至简》开篇便与众不同。
二、第一版中的愚公移山
在第一版(电子版)中,愚公移山的故事只是用来总结“编程的精义”。尽管我称愚公为“工程名家”,但事实上第一版中所写的愚公“并不怎么会工程”,我对“愚公式的开发”、“积极的愚公”、“忽略成本的愚公”等都是持批判的态度的。唯一被肯定的是他的“聚室而谋曰”和“编程的(而非工程的)精义”。
我并没在更多的地方提到愚公,但这并不妨碍我想念这个人物。我在4月完成了第一版的全文,7月我从郑州的那家软件公司职辞,驾车去西藏旅游。——说是驾车,其实不是我驾(我不会开车)。所以一路上便是听评书和想问题,这个过程中想得最多的便是这本书,以及书中提及到的工程问题。
思考的过程终于在我抵达珠峰大本营的那晚爆发了,爆发的原因则是一罐啤酒。我很自信地弄了一罐啤酒,准备在珠峰底下过过瘾,结果只能喝下一半。就这一半也很快发作了,当时便心脏受不了,晚饭也没吃便躺下睡去,而半夜又醒转来睡不着。这睡不着的光景里,愚公就开始移山了。——哈哈。整个愚公家族近三百年的移山工程,如同在我脑子里活着一样,一幕幕地演过去。
从西藏回程的时候,我一遍又一遍地回想这个故事,终于不会再忘却了。我想我已经找到了《大道至简》一书的另外一种述写方式:一篇文言的、寓言式的故事。
三、第二版的起因
第一版实在太薄,大概只有120来页,而且还是一种小开版的。当时也是跟博文视点谈的出版事宜,直到10月也没结果。而我在9月开始便受聘于上海盛大网络,任架构师,并随即展开了“数字家庭战略”中的软件平台的架构设计工作。我基本上不会再有时间纠缠在《大道至简》一书的出版,或者“愚公移山”故事的编写上。因此,我在10月以电子版的形式发布了该书的第一版,并约请蒋涛写了序。
第一版最终不能作为印刷品出版,这很令我沮丧。但心里仍有些不甘,当时给蒋涛说:如果博文视点有计划要出版这本书,我还是把优先权留给他的。
电子版引起了广泛的关注,也有一些无关痛痒的争议。这些现象引起了邮电和清华两家出版社的注意,他们先后送出了合作的意向,想要出版这本书。清华出版社的朋友甚至为这本书拟了一个丛书,但也因为计划做成丛书的缘故,空耗了许久的时间,以至于后来邮电出版社挤了进来。我则两相努力,单等某一方递出最终的合同。而这时刻,博文视点的周筠老师也得了消息,打算要出版这本书了。缘于此前跟蒋涛的承诺,我很遗憾地拒绝了其它两家的合同(尽管合同已经寄了过来),从此这本书的出版权落在了博文视点(电子工业出版社)的手里。
这件事我一直对邮电、清华的两位朋友深怀愧意。在《大道至简》的致谢中再一次提到这件事,用了八个字“未能兼美,深为致歉”。其实哪里单单是致歉的事情,心中之惭愧不便言说罢了。
四、《大道至简》中的古文
这本书引用了不少的古文,由此引起的争议也不少。其实,我想反方同学读书大多不细致。因为仔细地看去,就会发现我所引的古文多是大家熟读的。很多原本就是直接来自于成语,概略地数过去,就有:愚公移山、三人为众、皮之不存毛将焉附、问道于盲、徒有其表、买珠还椟、自相矛盾、一鼓作气(三鼓而竭)、工欲其事先利其器……这些成语或寓言,大多在中小学的课本中就学过,所以谁要说读不懂或者不易读,那我实在不知道应该如何回应才好。
我大致地统计过,这些古文中生僻的只有三四处。生僻的引文我要么作为章节前的引用不讲,要么就讲得很细。所以在我看来,第一版中的古文如果令人不快,那么这人大概是根子里便不喜欢古典,而不是文化知识上的欠缺。
由于这本书本来就是讲思想方法的,因此很多古文并不直接引用原意,而是引申开来讲。例如“求道于盲”,原本是指不正确的做法,而在《大道至简》这本书中,提出的观点却是:可以求道于盲,但别睁着眼问。
很多人跑来给我说需求做不了,跟客户没法沟通。其实问题在于他根本不了解客户,也不会顺着客户的思路去了解需求。我见过很多客户为了满足软件开发方的“需求”,而组织什么UML或RUP的培训班,甚至学习一些建模或者流程工具来描述他们的想法,每每看到这种情况,我都为客户感到痛心:他们要付出多大的学习成本,才能满足软件公司对他们的(而不是他们对软件公司的)期望啊?
求道于盲真的错了吗?南橘北枳究竟是橘的问题,还是枳的问题,亦或者两者皆不是?……总之,这些(工程中的)问题,原本只是思想方法的问题,而现在散落在工程实践中,被人们用不同的理论、方法解来解去,最终弄得一团糟。
所以我说:命题设错了,就成了问题了。
就如同这里的古文,我根本就不看成问题。因为问题并不在于易不易读,而在于读的人根本不想读。
那就不是我的问题了。
五、插图与漫画
邵荣国夫妇是我多年的好友了,邵先生现在在郑州一家公司任艺术总监,而他夫人(明明)则与他是同学。第一版的漫画是由明明画的,画稿的创意来自于她读这本书的过程。第一版中邵先生只画过一辆坦克,但在第二版中却没有用这一稿,因此在48页上的那辆坦克仍是明明的原作。
第二版决定加入一套“愚公移山记”的漫画,这套漫画最初我仍是请明明执笔。那时她正怀着小宝宝,赶在小宝宝出生前,明明给我了这套画稿——再次感谢她的工作。后来,周筠老师觉得画风不够细腻,希望重画一套时,明明正在哺育小宝宝,我已是不敢打扰的了。
再找画稿作者的任务很艰难,而且时间太紧。最终帮我完成这项任务的是同事武洲,我从他家领养了一只小猫,缘此而相互熟悉。而他给我推荐的人选,也是盛大网络的另一名前同事,叫丘宝——这不是他的真名,而是小名,但他希望用这个名字。丘宝很痛快地接受了这个“不可能完成的任务”。接下来两周,他完成了这套画稿。
当然,这里还得感谢邵荣国和明明。这套画稿的脚本我一早便已写好,而明明也已经为此完成了一套作品。而丘宝则需要用另一种画风来做这件事情,有了脚本和画稿垫底,便少费了很多周折。对此邵荣国夫妇俩功不可没。
事实上,邵荣国也只为这套漫画画过一个很卡通的铁匠,后来丘宝在绘制这一页时,换做了一个奋力敲击的铁匠,于是整套漫画(以及插图)中便再也找不到邵先生的影子了。
丘宝也是我要真心感谢的一位朋友,连周筠老师也夸赞他的认真与专业。《大道至简》第二版中的这套四格漫画,每一处细节、每一个人物都非常精到。而我尤其赞赏的是他言出必行的行事作风。
最后提到一些细节,这套漫画只有九幅,而全书却有十章。这是为什么呢?事实“愚公移山”的故事是先写的,而在为本书各章配漫画时,发现第四章是讲沟通问题的,而愚公移山的故事里没有任何与沟通相关的内容,因此只好不画这章的漫画了。
而其它各章的漫画与书的内容都是有相关性的——讲述的是相同或相近的内容。所以我一直给周老师说,漫画是书中思想的一条暗线,而那篇古文,说的则是与正文相近同的内容,只是说法不同而已。
六、封面与章首
《大道至简》一书的第二版是在9月初完稿的,之后便是审校、排版之些工作。其间的辛苦自不必讲,与博文视点的晓菲编辑用了大概两个月才磨合到工作状态。这期间,除正文和整体版式之外,序言、漫画、附录中的文言和封面都未定稿,因此我还得一件件去跟进。
简单的一张封面,没想到最终却成了整件事的瓶颈。因为“大道至简”这四个字实在太过抽象,因此邵先生给出的第一个设计是一只手,指尖有光晕一圈圈地扩散出来,其意则在于道的传播。为了让这个封面看起来与计算机有些关联,手的旁边还飞舞着很多数字0、1。
(封面样图一)
这张封面很自然的被否定了,因为包括我这没什么美感的人都觉得它奇丑无比。周筠老师说拿到这个封面时差点被吓得从椅子上翻倒过去,实在不忍目睹,要把这页揭去了才敢看正文的,哈哈。还好这是邵先生的一个同事的创意,因此做得丑也不跌份。后来邵先生又做了数稿封面,也是不满意。我又找到以前《Delphi源代码分析》一书封面的原创意者李静(bubu),希望她能给出一个构思来。然而面对“大道至简”四个字,bubu也才思枯竭了。
不过在这个过程中,我们达成了一个共识:封面并不是要表达“大道至简”,而是着力于突出抽象的“道”,或者本质的“简”。也就是说,要么求简,要么释道。
在困惑许久之后,在某晚临睡时,我突然想到三个和尚没水喝的故事。这不仅是因为“三”代表团队问题,而且三个和尚其实也是一个管理问题、团队问题。此外,这个故事也曾经被陈抗先生引用来解释奥尔森的“集体行动”理论。我觉得三个和尚的故事背景足以隐寓团队中的某些“至简”的智慧。因此随后,我请丘宝绘制了一幅“三个和尚没水喝”的漫画,又请邵先生再次设计封面。
(封面样图二)
这次看来不错,但在封面版式上的书名用字却迟迟定不下来:因为那“三个和尚”的缘故,字体选择总是显得别扭。周筠老师则第三次压下了书稿的最终印刷,把“重新设计封面”的任务交到了方舟的手里。几周过去,方舟终于开始抱怨“三个滑稽的和尚”限制了他的设计思路,把黑锅扔到了这幅封面底稿的头上。据说,当得知我同意放弃“三个和尚”的创意时,方舟兄竟开心得大喊:“别了,和尚们。”
接下来呢?方舟兄前门向三个和尚辞行,后门则揖请三个道士。一方面和尚换作了道士,另一方面“没水喝”的工程窘况,换作“论道”的学术盛况。于是我们看到了最终这个封面,而这个封面让周老师和我都大呼过瘾,是很难得一见的好设计。
(封面样图三)
许多天之后,我仍在品味这本书的设计。然而我发现,它与最初的那个丑陋的“一只手”没有根本的区别:以三人中最左侧的道士揖起的手为中心,仍是一圈圈的光环,寓意“道”的光芒在传播开去;而背景中加上了出自黑客帝国的数字瀑布,以体现与计算机相关的含义。
回顾这个长达数月的设计过程,白底黑墨的三个和尚,换成了简笔反色的三个道士;将简单的0、1数字换成了炫丽的数字瀑布;将规则的几何圆周换成了如何灯晕闪烁……然而有谁注意到:创意仍不过是一样的创意,加上设计就变成了商业的作品。同样的看去,原本简单的工程本实,已经泛滥为整个行业的浮华。
谁会回过头去,看看原初的那些简单、甚至显得丑陋的本相呢?
七、其它
很感谢一些朋友来信与我谈论书中的古文。例如汤国华先生甚至例举“文章里的每一个方程式都会让他的读者减半(霍金)”,希望我注意到这个问题,并说“你文章开头的文言,也一样”。很感谢他,以及所有朋友们对此的关注。我首先认为汤先生的意见非常正确。但一方面就我个人来说,是很难容忍对传统文化的漠视的。但另一方面,只要不妨碍我对思想的表达,我也并不介意于用东方思想,还是西方哲学来表达我的个人观点。因此,我既读《二十四史》,也读《权力与繁荣(奥尔森)》。
不过本书既然是在讲我的思想,那自然用的是我的思想方法。在这方面,我承认我这几十年还是在按中国人的法子活着,固而也是按中国人的法子在想事情,所以也更易于用中国的思想哲学来解释自己。如果让我用西化的语言去做这件事,我做不好,也不能自欺欺人,所以请愿谅我只能做个中式的学究吧。
既要做个中式的学究,那索性做得像样一点。《大道至简》第二版中加入一篇“愚公移山记”,这数千字的文言多少也与第一版的被批评有关。——要文言就文言得彻底一点,不如我自己来写一篇,占用几页的字纸来彰显一下古文的精彩,有何不可?