iPad出来了,这个被压扁的iPod立刻引起了大众的吹捧。当然也迎来了众多评论家挑剔的眼光,什么不支持多任务,没有摄像头,没有USB插口之类的“七宗罪”。作为乔布斯粉丝,我一笑而过:乔布斯如此聪明并且追求完美的人,难道没有意识到这些缺陷吗?在他眼里,难道这些不值得去做吗?

无独有偶。今天有个人打开浏览器窗口,打开CruiseControl的Dash Board页面,等着看Build Result Tab下面会不会出来构建过程的输出结果(其实就是构建控制台的输出)。他等啊等啊,5分钟过去了,就是没等到。

“你为什么要看到这个信息?” “因为这个信息有用啊” “有什么用呢?” “这是用户友好的一部分,不然我只看到一个正在构建的图片,却不知道他正在做什么” “……嗯,听起来有道理,那么,即便你能看到了,又能做什么呢?” “……还是有点用的吧?” “你看到这个信息无法停止无法取消只能等着,如果你真的想看,完全可以到CruiseControl服务器上看,否则只能影响自己手头的工作。再说了,哪个人提交之后会等着刷这个屏幕来看构建信息呢?”

我承认能够显示这些状态当然更好。但是在过去多年使用持续集成服务器的经历中,我却不记得是否真正想起看这个构建过程——老实说新版本的dashboard我一直是不喜欢用的 - 老式的更好用一些,信息精炼,有效,迅速,直观,加上声音指示,团队所需要的仅此而已。完美的持续集成服务器,就像所有的服务器应用一样,需要的是健壮,稳定,不错报,主动通知,而不是像愚蠢的Windows更新程序一样,隔一段时间弹出来告诉你,我要如何如何了,你是否同意——很多时候都没有选择(现在的更新程序已经好很多了)。

我见过许多在错误的完美之路上走得太远的产品:Notes - 大量的功能堆砌,我敢肯定80%的菜单都没人点开过;HTC Dream (G1) - 在硬件尚不完美的情况下使用Android多任务操作系统导致系统响应毫无悬念的变慢;Windows Vista - 错误的认为华丽是系统的首要任务而将可用性置之于外;金山的剑网三 - 模仿了魔兽大多数设计在山水场景花了太多功夫但打击感和操作感觉使其无法真正引人入胜。

你要的完美是什么?这是一个值得思考的问题。有时候我们被完美蒙蔽了眼睛,过多的专著于某些细节不能自拔而对主功能产生忽视。精雕细琢的局部完美往往耗时过久,如果这些不能在真正意义上产生巨大的价值那么就是一种更为巨大的浪费。例如37Signals的Campfire - 直到现在开发团队都拒绝在聊天框里加入富文本编辑的功能(例如加粗、笑脸符号之类的),他们说“用户完全可以通过字符,例如 强调 ^_^ 笑脸 来表达。这种功能,我们不会做”。但是与此同时,他们在图片的分享,复制粘贴的支持上花了大量的功夫。

完美不完美,取决于产物想向外界传达的意图。只有充分理解了这些意图,才能真正明白完美的局限性 - 不是处处完美,而是在必要的地方。