《梦断代码 (Dream In Code)》 韩磊 译 ,有幸先睹,颇有所感,做书评一篇。
拿着这本刚刚出炉的《梦断代码(Dream In Code)》,似乎让我回到了2004年夏天,那时候非典的恐惧刚刚散去。北京西二环边上的一座高档办公楼的施工重新开始了,这座大厦的9层,数百个工人正在各自忙碌,以期能弥补非典期间项目耽误掉的时间。看着杂乱又有序的工作场面,正在负责大厦中央集成软件系统的我不禁暗自赞叹——别说几百个人,就算是给我1/10于这个数字的程序员,恐怕都足够让我把这个软件项目搞砸了。
软件项目的管理者总是无比艳羡传统行业,无论是工业的流水线还是建筑的工地,只需要增加人手就可以赶上进度,这样的情形在软件行业中完全就是神话,“人月神话”。恰好也是在2004年,不知道是不是还有很多人和我一样被非典之后建筑项目赶工场面所震撼,软件行业的人们开始无比的期盼跟传统行业学习。这一年的年末,美国建筑师亚历山大所著的《建筑的永恒之道》一书突然热卖。这本建筑专业书荣登了各大网站书店的IT热书排行榜。可惜软件绝非建筑,软件是人类历史上唯一的完全在大脑中靠智慧完成的工作。而我们还没有找到管理一个只在大脑中完成的项目的方法。
硅谷有名言曰:“技术改变世界”。计算机发展了几十年,就快速的渗透了世界的各个角落。比起以往的工业革命,这次信息革命确实以无法想像的速度飞速的改变着世界。软件行业好像一个拥有了姚明的身高,爱因斯坦的智慧,但是却没有任何社会经验的巨人一般,威力巨大,但又完全无法琢磨。
相对于手上这本《梦断代码》描述的Chandler项目,我职业生涯中所看到的种种软件项目的失败都算不了什么。似乎所有项目都能找到一个失败的理由,或者说市场压力太大,工期不足,或者说资金不够,或者说程序员团队经验不足。在《梦断代码》中,这些问题都不存在,那么,是否可以让一个成功的产品横空出世呢?这个两打优秀程序员组成的团队,用他们失败的经历明确的告诉了我们:不能。
在软件行业不长的历史中,我们随处可见失败者。无论是小公司草草上马的小项目,还是大公司经过百般论证的大项目,似乎都难逃焦油坑,一个个落得了个进退不能的下场。当然,另一方面,成功者也并不罕见,Linux经过了10多年,越发成熟和优秀。微软总在进行着“这个星球上最大的软件项目”,虽然反对者百般嘲笑其软件质量低下,也并不能阻止这家公司依靠软件成为行业的垄断者。《梦断代码》中提到,Linus说,从小处着手的项目更容易获得成功。果然,从大处入手的Chandler项目深陷泥潭。但是,为什么同样从大处入手的Outlook甚至整套Office成功了呢?悲观的看来,我们大概永远也无法知道什么是对的。
幸运也不幸,人类文明也是一部试错史。人们很难预知如何做才对,所以只好一次又一次的撞墙,自省,撞墙,自省,撞的头破血流的时候,总算得到了一些经验。经验这个东西,确实也无法告诉我们应该如何做,但是至少可以告诉我们如何做肯定是错的。讲软件项目失败案例的书足够排满一个书架。但是,《梦断代码》仍然是颇具现实意义的一本,一方面是失败的故事有多少都算不得多,另一方面是,和Chandler项目这样,看起来“万事具备”,结果却“只欠成功”的项目样本确实不多。这足以让软件从业者们明白,这个行业的问题比想像的还严重。
失败的教训总是由血泪凝成。Chandler以3年时间,两打程序员,无数的资金,铸就了一面警示牌。而Scott所著的《梦断代码》,则把这块警示牌挂在了软件世界的高速公路上最显眼的位置上。上面赫然写着“前方危险,减速慢行”。
我敢打赌,这条危险的道路上绝对不会缺少新的墓碑,年轻的程序员和项目经理们仍然狂妄而自负的横冲过来。不过我至少希望更多的人可以读读这本书,然后在碰到类似的情况的时候,提醒自己减速慢行。