书评:从《Joel说软件》到《软件随想录》

joel on software

第一次知道Joel,是在《程序员》杂志上。大概是2005年,《Joel说软件》 2005年9月出版,那个时候我在杭州,第一时间购得此书,赶上十一过节回家,来回飞机上8个小时,打发无聊时间,读的就是这本书。很少有哪一本书给印象我这么深,甚至连读书的场景都记忆这么深刻。那个时候,我的心态正矛盾在是否尝试一下转行投身软件开发。当时的我,对到底什么是软件开发,一点概念都没有,有的就只有刚刚萌芽的一个想法,给自己一个机会试一下,看看自己是否能转得过来。为了走这一步,每天埋头于各种技术书籍资料中,这本《Joel说软件》是唯一一本非技术书籍。

时间过的好快,弹指一挥间,2010年了,等到了今年4月20日,我作软件开发以满三年。照例会在那一天点评自己一年的工作,收获,所以今天不写,因为还有两个月,我仍然还有机会继续尝试一点不一样的东西,现在就写为时尚早。从上一版《Joel说软件》到第二版《软件随想录——程序部落酋长Joel谈软件》,5年过去了,我已经走在软件开发的道路上了,从当初的茫然到现在有了些许从业经验,开始从自己的角度看待整个行业趋势,有了一点自己的想法思考之后,这本书我读出了不少东西。

在1月初拿到,大概用了两周,每天上下班用断断续续的时间在地铁上读完的。地铁上一个人抱着书在哪里,看得正起劲,冒着随时会坐过站的风险的人也许不多了吧。因为内容太过吸引我了,于是每天上下班都成了一段短暂而美妙的旅程。我在豆瓣上看到很多人对这本书的评论,褒贬不一,不过整体看来基本符合正态分布曲线。大概80%左右的人,赞成其中80%左右的观点,少量反对以及驳斥,且不说我是否认同大家一致认为这本书不足的地方,单说大家普遍认同好的地方,我的看法也不尽相同,不过有一点是一样的,就是这本书读起来有一种阅读的快感。经常遇到这样一种情况,普遍得基本论调很难被大众认同,反而是那些阴谋论者的声音,哪怕那么微小得一点点,哪怕绝对数量少得可怜,但是却更容易被大众所关注,并更容易获得广泛得认同,比如那些内幕,独家披露,小道消息之流... 比如前些日子一条消息,大意是“淘宝关闭两家三钻专营手机得店铺,因为淘宝要推自己得淘宝商城”。八竿子打不着,经不起推敲分析得小道消息,至少在我的同事中获得了广泛一致的认同,呵呵。

读Joel得书,最好你应该先了解Joel是谁,他干过什么,他一贯抱持得观点是什么,这样,你就会更加容易并清晰理解书中得论点,而不会犯断章取义得错误。看到那些不知所谓得评论,就可以一笑了之了。Joel得网站和书中开篇就介绍自己,而且从各个方面多角度介绍得相当清楚。Joel的公司开发了一款叫做FogBugz的项目管理软件,书中很多提及开发与组织管理方面的内容都拿这个项目作为论据,刚巧在我目前就职的公司Factual.com的项目管理工具就是FogBugz。说实话第一次看到FogBugz,给我的印象就是UI界面好土,真的好土,让用惯了Mac,对软件交互界面以及UI的taste被惯坏了的人有点难以忍受,而且市面上那么多项目管理工具,开源,免费,任何一个都比FogBugz要强。当看过Joel在书中解释了非常多关于FogBugz背后的方法学,以及产品理念之后,加上三个月实践下来,我对这款产品真得非常满意,他很符合技术人员对项目管理工具的直觉和认知,功能设计相当体贴,虽然UI界面不那么惊艳,却符合最小惊讶原则,是最不容易让你产生视觉审美疲劳,是最耐看的一种UI设计策略。每天的日常工作,围绕着FogBugz,也帮助我更深体会到了Joel在书中提及的那些软件设计方法论以及如何去指导实践。

Joel是在说道理么?这个世界上聪明人这么多,想要找寻对事物洞悉,拿捏把握比你更透彻的人,太容易了。从前辈哪里获得人生智慧,从来都不是难事。再加上那些数不尽的历史上哲人,也许所有人类哲理,早在公元前就被古希腊哲学家之流给整理全面了,后人只是不断重复,反复,颠倒,然后拨乱反正而已。相信已经没有什么空间可以让你去挖掘新得道理了,所以Joel明显不是在发明新道理,他只是在用自己的方式,自己的声音来解释道理而已。能站在高层面将问题看得很全面透彻的人难得,乐于分享自己的思想,观点的人更难得,但是非常善于表达,用自己的语言文字将道理用风趣幽默的方式阐述得简单浅显易懂得人是极端得少数。Joel讲故事得方法特别容易让人信服,难以反驳,除了所表达得内容,他得表达方式,文笔修辞也让我收益匪浅。当然这离不开译者阮一峰得努力。稍后在写关于阮一峰和他翻译得故事。

Joel都说了些什么?Joel说得事情都是软件开发得事情,不管你是程序员,项目经理,软件公司老板,或者是打算投入这个行业得外行人,这本书都适合你。每篇文字都是Joel最近几年得Blog文章,按照管理,设计,经营,市场以及人得角度提炼整理而成。站在我自己得角度,我更原意从人性和历史两个方面来看这本书。

人性角度,即通过理解Joel得性格特点,从他得角度来理解他得文字,从而能更深理解他得思想。网络上那么多得文章教你如何作一个程序员,以及如何管理项目,如何取得市场成功,但是鲜有从性格角度看待问题,以及帮助你理解性格特点是如何在软件开发过程中,对组织管理产生影响的,虽然Joel没有标榜自己的性格特点,但是整本书每一行文字,其实都是如此,Joel个性鲜明,大舌头,喜欢发表言论,但是他不忽悠,字里行间完全不是站在制高点指点江山,而是站在一个非常非常低的角度,以一种低姿态,甚至市井的角度讲事情的发展,根源,以及各种缘由娓娓道来,读起来完全不会有任何心理压力。

历史角度,因为是Blog摘编,所以每篇文章你都能看到一个确切得发布日期,问题是在文章发布的那个时间点上,你看待正在发生的问题是站在什么角度,而Joel又站在了什么角度?Joel看问题角度很多样,从高层抽象到细腻得底层细节,都可圈可点,这也让他有资本对未来作一些预期猜测。但是Joel往往都是猜得中结局得那个人。我一直在思考这个问题,从作软件开发之前,就一直保持着对整个行业得关注,特别重视培养自己得眼光,看清趋势发展和把握将来机会,这个初衷从高中时代就开始酝酿,但是现在我依然不敢说自己已经有了这样得能力,看问题依然局限,缺乏大局观。最困扰得是,你可以很清晰得将过去得事情发展脉络看得清清楚楚,往回看,一切事物得发展总是相互关联互相影响的,事后诸葛亮人人都能作。困难的是你无法准确看清楚将来的趋势,无法准确拿捏和把握将来的产业事态发展,总是看到一片乱象,而且是空前的乱... Joel很大胆,他点评时事,却不仅仅局限于已经发生过的事情,还包含大量对事情发展预期的暗示,现在回看都变成了现实。他真的这么神?其实看他如何解释自己是怎么做出判断的过程,往往会让你会心一笑,其实道理都不难,历史发展总是惊人得相似,尽管历史上每个伟大的人物都相信自己可以改变历史,但是结局往往仍然回到原点,所以如果你不知道事态会如何发展,就把宝押在跟历史吻合的那一面。除此之外学习Joel这种大局观,分析把握事物发展脉络的能力很有价值,你一定会有所收获,相信我,从书中收获到的知识一定会值回这本书的价格。

写到这里发现自己写的好空洞,需要我举几个例子嘛?我就举几个例子吧。有几篇文章给我留下的印象极深刻。

  • 寻找优秀的程序员 + 寻找优秀的程序员之实战指南——其实招聘是一个很大的话题,关于招聘我也思考了很久,其实问题就是人才总是稀缺,在这个情况下你怎么作才能吸引到更多优秀的人呢?从Joel这篇文章,Joel其实是在作活广告,他给他潜在的读者一个信息,他的公司处处体现人性,处处关心人,信任人,所以,如果你希望变成一个很棒的程序员,希望跟Joel共事,你就应知道导怎么做了。
  • 在耶鲁大学的演讲——这是对自己软件生涯的一次精彩浓缩点评,其实这哪里是浓缩,简直是经过语言艺术的加工之后,将自己的经历渲染到如此的激情澎湃,这最符合大学毕业生的胃口,于是,那些有抱负,想要做出一番事业的人,请把你的简历寄给 jobs@fogcreek.com
  • 别给用户太多选择——拿MS的Vista开涮,拿MS的界面设计师,程序员,测试人员开涮,事实证明,Vista的最后结局是晚景凄凉。
  • 易用性是不够的——Joel预言下一个十年,软件公司回雇佣人类学家,而事实是,现在的软件UI设计人员,开始纷纷投入心理学,人类学领域去进修。
  • 火星人的打火机——点评了Web浏览器领域的乱象,以及在IE8发布之初,MS的IE团队面临的两难,自己给自己挖了个坑,然后自己把自己推下去的典型。IE8最终也改变不了什么,因为理想主意者的大原则和实用主义者现实的选择,这样的论战将持续到永远。
  • 徇证式日程规划——这篇文章我看后心有戚戚嫣,自己在个人事务管理尝试经过一轮又一轮,几个阶段之后,得出的结论跟Joel基类似,Joel的建议更值得采纳。
  • 关于战略问题的通信之六——昔日DOS平台上的困境在今日的Ajax应用上继续上演,甚至预言了Google和Gmail将来的困境,因为现在所有影响市场的因素和背后的动力同当年完全一样,我们唯一不知道的就是,它到底发生在何时,何地,何人身上,所以我乐得等发生的那一天。
  • 你的编程语言做得到么——看起来是在力挺函数式语言,以及那些将来会非常红火的JavaScript,暗合了之前一篇文章,学校只教Java的危险性,呵呵,这篇2006年的文章现在看来,JavaScript成为下一代主流语言已经成为事实了。
  • 飚高音——是我最喜欢的一篇文章,因为它准确点评出了为什么我如此喜欢Apple的产品,apple的设计,风格。
  • ......(还有其他未提及的文章,不是因为没有给我留下深刻印象,而是文章太精彩,我的组织表达能力难以归纳出来...)

阮一峰,我很欣赏得一个程序员,我并不确定他本人是否是一个程序员,因为我从来不把他当作一个程序员来看待,因为从他得blog上,关于技术方面得文章,我只记得我曾经花费半天时间仔细阅读并实践他得制作GMail式按钮,我更乐意用见微知著来形容从这篇教程文章中,我看到一个技术细腻,严谨,并追求卓越得程序员高手风范。但我更喜欢他得blog上那些非技术文章,尽管在某些方面我有自己的观点,但这丝毫不影响我透过他文字交流思想(单向 :-))。他得文风流畅,严谨,而且洗净浮华,毫不造作,虽然同在上海,却不曾有机会见面,但是我相信一定是见文如见其人的。

下面是阮一峰先生翻译这本书相关的一些博文,我认为非常有价值,帮你从一个译者角度理解Joel的思想,以及翻译过程中的点点滴滴,强烈建议阅读,顺便说一句,这本说的作译和出版商是如此的慷慨,公开了前7章的内容,谢谢他们!