“谁知道我们该梦归何处,谁明白尊严已沦为何物;是否找个理由随波逐流,或是勇敢前行挣脱牢笼;我该如何存在?” --《北京青年》

 

 

“软件系统的下一个版本要支持尽可能多的数据库,要支持尽可能多的操作系统,要支持尽可能多的手机,要支持尽可能多的…;开发要用一套代码来实现,不要增加太多工作量…”

这样的讨论,在很多开发者来看,已经成为司空见惯的工作场景;同时也是很多设计和开发工作必须要用的定式。具体执行中,方法也有很多种,例如:避免使用特定数据库的专有特性,避免使用存储过程,尽量使用标准SQL语言;避免使用新操作系统的新特性,尽量实现向下兼容,界面沿袭原有的UX风格;使用跨平台、跨设备的语言,如HTML,提高可移植性,等等。

这样的做法确实无可厚非,特别对于一些通用软件产品或软件项目。这样做的出发点也是可以理解的,或许是要覆盖更广泛的用户群,或许是避免陷入被某些上游厂商“锁住(Lock-in)”的困境。

但开发者往往要面对一个新的困境:系统运行性能不尽人意、UI界面显得平庸、无法领导“潮”流…;开发者陷入自己编织的牢笼:需要自己开发出一些增强功能,而这些功能实际上本已在底层的一些平台产品里提供了。

跳出“牢笼”,也许会有一番新天地。

这也正是产品组的Kun在架构设计评估(ADR)中,和大家分享的一些新的实践和发现。在一些客户项目中,之前的做法是基于标准SQL语言开发上层应用,对于不同厂商的数据库往往仅作为数据存储和查询的基础设施。而如今,情况发生了一些有趣的变化,一些客户已经不想忍受之前做法所带来的巨大的维护工作量和笨重迟钝的架构,从而转向更多使用SQL Server所提供的最新特性,开发出专门面向SQL Server 2012的新版本。

这是一个值得肯定的做法,因为这将满足用户的个性化需求和体验,例如对于手机,一个使用Windows Phone手机的用户,往往并不希望使用一个无法充分体验WP特性的应用,对于其他平台手机的用户也是同样。显然,一个充分挖掘手机特性的应用将更加满足用户的需求和体验。

当然,事情也许没有这么简单,尤其是对于那些通用软件产品和软件服务的提供商,他们要面对的是广大的用户群,情形将更为复杂。而驱动他们进行改变的,应该是如何看待广大消费者(Consumer)的个性化需求,即Mass Customization。这个概念提得比较早,包括制造业、服务业都适用,可以参考一下维基百科上的定义:

http://en.wikipedia.org/wiki/Mass_customization

以及Narges Kamali及Suzanne Loker的论文《Mass Customization: On-line Consumer Involvement in Product Design》:

http://jcmc.indiana.edu/vol7/issue4/loker.html

在即将发布上市的Office上,我们看到了产品如何为不同的用户提供的不同的体验。以Lync为例:

clip_image002 clip_image004

Lync for Windows Phone用户

clip_image005

Lync for iPhone用户

clip_image006

Lync for iPad用户

从开发者角度,不妨跳出惯性思维,Do more upon less, providing {better user experience} via {customization}。