体验为先

一般的想法似乎是:产品部负责体验,技术部负责实现细节,这两者虽相辅相成,但终究关注点不同。不过我觉得其实技术部也应该关注体验,这种体验是开发体验、运维体验和用户体验,至于实现细节,反倒是最后需要关注的。这样提的原因是,确实有一些技术的人一见到好的新奇的技术就像应用到项目中去(本身没什么不好),却没把体验这件事情做好(这个有点不好)。
现在来说说我对体验的理解。作为开发者,最大的目标绝不只是开发符合需求的产品。产品的开发、实施、上线、维护等过程都涉及大量不同的人,每一个相关的人对这个产品都有自己的体验,都会对这个产品在某一方面上是否好用有自己的看法。就像体验不好的产品会被用户弃用一样,过程体验不好的产品也会被开发者抛弃,只是迟早的事。
开发体验好也就是代码具有很好的观赏性、架构容易懂、代码质量高、具有可伸缩性等,它是开发过程中最需要注意的事情。
代码是开发者之间的交互工具,一个开发者写出来的代码其实就是其他人未来将用到的“界面”,它的体验直接影响到它的用户(所有与它相关的开发者,包括作者)对它的看法。开发体验不好的代码,在完成自己的当前使命之后很可能会很快被开发者厌倦,甚至废弃,如果一个组织不断在废弃旧代码,做重复造轮子的事情,这种开发成本当然很大,其中明显有问题。
这里有一个很有趣的问题,如果牛人写出来的精致无比的代码是否就一定是具有好的开发体验的代码?这还真不一定。如果确实周围的人一个都看不懂这代码,要么就不要把代码写那么好,浅显一点会更好,要么就多找一点能看懂这种代码的牛人。过于美妙而难以理解的代码是定时炸弹,一旦牛人离开就会面临难以维护或者必须重写的风险,这对于公司而言是不可接受的。说到底,体验是人的主观感受,不同的受众就有不同的体验,好的体验的定义也不同。
做好了开发体验,其次要做的是运维体验。运维体验主要包括更新服务、排错、监控的复杂程度等,主要的用户是运维人员。现在搭建一个大容量的网络应用至少需要几十台机器,机器之间的互相依赖如果管理不好就会变成网状,有点牵一发动全身的味道。有些时候开发者相比运维体验,更关心功能是否能实现,这是有问题的。对于互联网企业,不变的是变化,任何一个服务上线之后都会有用户不满意的地方,如果升级的运维成本比较大,开发者/产品负责人就会惧怕改变,这将直接影响服务质量和用户体验,最终还是害了产品。
此外,作为开发者应该时常思考如何量化服务的质量。是不是满足了一定的服务质量指标就好了?还有没有其他指标?在不同阶段这些问题的答案都不一样,比如已有服务基本稳定之后,开发者可能会从最初的服务质量转而关注如何发现服务性能瓶颈上,这时,难以运维(或者说“监控”)的服务就会显示出弊端,甚至变得没法满足运维体验方面的需求,导致重新开发。
所以在代码设计完了之后就开始考虑如何运维它是一个很值得建议的做法。
最后,好用的产品要落实到用户身上,他们的用户体验是绝对产品成败的关键。在这个时候,开发者可能有的误区是追求完美,希望在项目结束的时候就解决所有已经发现的问题,这其实完全没必要。很多大软件(例如微软的各种软件)遗留一堆bug就敢发布,为什么,就是因为开发者应该追求的是用户体验,而不是那些完全不影响用户体验、只有geek可以发现的微小缺陷。
另外,有这种追求完美思想的另一个原因是惧怕变化,希望一次性做完之后再也不去碰这份完美的代码,实际上这也是不切实际的。保持重构才是我们应该追求的目标,无论是针对代码本身,还是各种体验。
我们在某些时候或许可以追求快而放弃一个或两个体验而直接追求用户体验,但最后还是要补课,欠下的总要还。同时,不要一次性就把三种体验追求到极致,它们应该是迭代完成的。
要想一开始就能做到较好的开发体验、运维体验直到用户体验其实并不难,难就难在有没有这样去理解这些事情。说白了,就是有没有在各个环节为他人着想、为未来打基础,这才是一种做产品的开发者。
分享/收藏

Windows7 RC使用手记

自从上周到现在已经用Windows7 RC (build 7100)有5天了,现在来聊聊使用感受。
在我废话之前,先提供一个官方下载地址,如果想尝鲜的朋友可以自己刻盘装着试一下。请注意,RC版是可以免费申请CD-key,所以劝那些满世界找key的朋友,赶紧用你的Live ID到这里申请吧。这个RC版可以免费用到2010年6月,不过从3月开始它就会每隔两个小时关机一次。幸好现在还只是5月底,还有足够的时间供我等待正式版出来。
使用了Windows7 RC最大的感受是界面确实比以前的各个Windows版本都好看、好用。特别引人注目的是革新的任务栏,它打破任务栏一贯的风格,每个窗口在任务栏上更像是一个个按钮,可以随意拖动、复制(在上面按鼠标中键)、关闭(在缩略图上按中键),还可以把它锁定到任务栏上。这个新的任务栏替代了以前快速启动栏和托盘的功能,使这两个东西在新的Windows7中都可以消失了。

Windows7的开始菜单也很值得一提。最醒目的是从Vista继承而来的“搜索”功能(这也是我在Vista中最喜欢的功能),它位于开始菜单的左下角,使用户可以一按Windows键就可以马上搜索自己想要的程序,再也不用到程序菜单里面苦苦寻找。

开始菜单中还有大大改进的“最近使用程序列表”,在里面不但可以看到最近使用的程序,还可以使用这些程序的常用选项。

任务栏和开始菜单的改进是依据Windows7的一个设计原则:reduce concepts to increase confidence。这一点我非常的认同和喜欢。
关于Windows7 RC的运行效率,我觉得至今为止非常好。我现在装的软件还很少,可能还没有到真正体现Windows7优势或者劣势的地方,我会拭目以待。我对Windows7的运行效率还是很有信心的,这源自ATC一个专门负责Windows7性能调优的同事与我的对话,他的乐观让我觉得Windows7在这正发布的时候应该会在这方面更加优秀。
说了挺多好的,再说一些不好的。
Windows7 RC主要缺点是兼容性问题,有可能是RC版的Windows Installer的问题。
我现在无法安装公司提供的杀毒软件,所以上我们的内网还有一些问题。我发现安装过程中Windows Installer会报1603错误,在网上也有不少人说遇到这个问题无法安装程序,看来还不是小问题。我根据微软帮助中心的文章进行修复,不过貌似完全没有作用。听说Windows7 beta就没有这个问题,很怀疑下一次Windows Update就会修复这个问题。
这个问题我还在研究中,如果有结果,会继续报道。UPDATE:现在问题已经解决,很可能SEP安装出问题并不是由于Windows7 RC兼容性有问题,而是Symantec产品之间有奇怪的冲突。详细请看这里。
分享/收藏