2010年2月6日星期六

Apple 谈论产品 vs Microsoft 谈论技术

看了一下 Jeff 的《李笑来激起千层浪,赵姐夫力拒众强敌》,回顾了一下之前 Twitter 上的讨论。我个人觉得, Apple 观点和 Microsoft 观点是不同的,所以才造成了如此之多的争论。很多人在使用 Microsoft 技术的同时,由于 Microsoft 铺天盖地的宣传信息,自然而然地也接纳了 Microsoft 观点。使用这种观点去跟持有 Apple 观点的人争论是没有意义的,因为大家根本就是站在不同的角度来看到同一个事物。

看看 Jeff 整理的对话记录,里面有多少 Microsoft 技术名词? .NET 、 COM 、 DDE 、 OLE 、 CLR 、MFC ……这就是 Microsoft 观点──我们每天都有众多的技术革新,通过这些技术革新让技术人员感受到震撼( Microsoft 在推 .NET 初期确实很喜欢用 ROCK 这个词)。当然, @virushuo@tinyfool 被震撼多了,就说自己被强奸了。就算是在博客园里,也每天有人抱怨 Microsoft 技术更新太快,没办法跟上技术革新的速度。这就是 Microsoft 观点,满眼都是技术名词,名词刷新速度越快,越 Microsoft 。

再看看对话记录里面有多少 Apple 的技术名词。能看到的也就是 Carbon 和 Cocoa 两个,连 Cocoa Touch 也不提。是因为大家觉得 Cocoa Touch 和 Cocoa 就是足够相似,所以在讨论 iPhone 时没必要提及 Cocoa Touch 吗?显然不是。你看 Microsoft ,除了炒作 .NET ,还炒作 .NET CF 、 .NET MF 。就凭这一点,你就能察觉到 Apple 观点是和 Microsoft 观点不同的。 Apple 观点并不看重技术名词。

那么 Apple 观点看重的是什么?我们可以来对比一下 WWDC 2009 KeynotePDC 2009 Keynote 。在看完 PDC Keynote 之后,我来问你一个问题:这段视频中的哪些信息给你留下了印象?可能你会说,有 Windows Azure ,有 Silverlight 4,等等一堆技术名词。那么我再问你: Silverlight 4 是什么啊?我想你会用更多的名词来解释它比 Silverlight 3 多了什么新增功能。回头来看看 WWDC Keynote ,给你留下印象的是什么。那可能是「 Safari 4 比 IE 8 快7.8倍」,以及 Grand Central Dispatch 。那么 Grand Central Dispatch 又是什么?它可以让应用程序更有效地利用线程,从而提高响应速度,不需要提及更多的技术细节就能把重点说清楚。

Apple 看重的是产品,特别是用户使用产品时的体验。幕后的技术?就跟爱一样,是做出来的,而不是说出来的。最近我读了一篇文章,叫做《 Revolution vs Evolution 》。文章里面说到,用户接触到的人机交互界面应该是 evolution 的,用户原有的使用习惯得到了保持,同时很多细微的地方又有所改进,而这些改进所依赖的正是背后技术的 revolution 。留意 WWDC 中关于 Snow Leopard 内置应用改进的部分,第一个提到的就是 Finder ,其中第一句话就是「我们都爱 Leopard 中的 Finder ,因此我们没有改变 Snow Leopard 中的 Finder ,至少用户界面没有发生变化」。然后才说到, Snow Leopard 中的 Finder 其实是基于 Cocoa 完全重写的,带来的好处包括「更快地绘制图标」、「更快地清空 Trash 」等等。 Finder 背后的技术由 Carbon 转变为 Cocoa ,这是 revolution ,而 Finder 用起来的感觉则只是 evolution 。

既然说到产品,我们再来对比一下 iPad 发布会Windows 7 发布会。在 iPad 发布会上, Steve Jobs 把 iPad 拿出来,然后坐在沙发上摆弄了12分钟。这12分钟里面,他没有介绍任何的新特性,只是把内置的应用逐一打开,使用一下,然后关掉。为什么他不需要介绍新特性?因为这里面根本就没有新特性,任何一个熟悉 Mac 或者 iPhone 的人都能轻易理解 iPad 的用户界面,这正好符合上面所说的「用户界面只能做 evolution 」。当然,这12分钟也不是白白浪费的, Steve Jobs 就是要让所有人看到,作为一个普通用户,使用 iPad 是多么流畅的一件事,常用的功能触手可及,无需进行任何学习。至于 Windows 7 的发布会?请问这里有多少人能够说出 Homegroup 跟一般 Windows 共享有什么区别的?我想没多少人能够说清楚,但 Microsoft 偏要为此创造出一个新名词,以及一种需要重新学习的交互方式。

Microsoft 不仅仅不断地为技术创造新名词,还不断地为产品创造新名词。有很多程序员都抱怨, .NET 3.5 带来一堆诸如 WPF 、 WCF 、 WF 的东西,根本没时间去学。我觉得这没什么好抱怨的,受害的又不仅仅是程序员,最终用户一样面对一堆搞不明白的新概念,例如我就不知道 Homegroup 有什么特别的。最终用户是上帝,犯错的当然不可能是最终用户。类推可得,程序员也没有犯错。在这个问题上,犯错的只可能是 Microsoft 了。

正是这两种观点之间的差异,使得持有 Microsoft 观点的程序员每天都在忙于追逐那些英文里叫做「 buzzword 」的东西,觉得弄懂了某个 buzzword 就是某种进步,而持有 Apple 观点的程序员则在围绕着产品谈论「 how does it look and feel 」。这让我想起了一幅漫画,说的是如何区分科学粉丝与科学家。同样是问「你记得住圆周率的多少位」,科学粉丝会说出一个很大的数字来,而科学家则会说他只记得住1位。或许我们应该思考一下,宣称自己懂得多少种技术,这到底有没有意义。

正所谓「每一个优雅的接口,背后都有一个龌龊的实现」。这个接口( Interface )可能是用户界面( UI )也可能是编程接口( API ),这不重要,重要的是它是否优雅,也就是 @xiaolai 所说的「表面功夫一定要做足」。至于背后的实现是否龌龊,这也不重要,重要的是它必须站在幕后。就算它比接口更优雅,它也不能跑到台前来喧宾夺主。该做的,老老实实地做了,没必要拿出来说;该说的,说到每一个人都心动了,但不一定去做。