“Where’s the dragon?” you ask. “Oh, she’s right here,” I reply, waving vaguely. “I neglected to mention that she’s an invisible dragon.” — Karl Sagan
由于Salesforce.com的Force.com平台采用了“多租户架构”(multitenant architecture),所以,为了避免某一个“租户”占用了过多的系统资源,Salesforce.com的架构师们天才般地想出了所谓governor limits的概念 ,于是,刚刚被云计算从繁重而枯燥的底层开发解放出来的开发者们,突然又变成了带着枷锁跳舞的dancer,在开发应用时除了要考虑核心的商业逻辑之外,还得无时无刻保证各项指标不要超标 – SQQL, SOSL, DML, Statement, Callout, Heap, Future Calls, Email Invocations, ViewState, Custom Fields…不胜枚举,时不时还得拼命算计,做各种忍痛割爱的trade off …
其实换个角度,我倒是觉得这些看似束手束脚的限制条件反倒可以当作是产品经理绝佳的设计准则 – 换言之,如果你的产品在满足上述要求的情况下无法实现,那与其抱怨Salesforce.com的种种限制,还不如换个角度想一想,是不是自己的设计偏离了best practice…
比如Salesforce.com限制每个organization的用户角色(role)是500个,对于那些需要500个以上role的大型跨国公司,则需要联系Salesofrce.com来获取更多的 role。
我虽然不知道500这个数字具体是怎么来的,但我相信绝对不是Marc Benioff 拍脑袋想出来的。我猜测,这个数字的由来,大概是基于Salesforce.com在开发其CRM产品时对各个行业进行了深入分析,然后得出一个结论,即除了少许规模庞大属于outlier的跨国公司之外,大多数行业的大多数公司,500个role绝对能够满足其管理需求。
拿零售行业来说,除了索尼,苹果,GAP这样的巨无霸之外,如果500个用户角色还不够一个公司使用的话,那这个公司得有怎样的营业额+利润率才能雇得起并养得起一群Salesforce Consultant/Admin去帮他们实施和管理这些复杂的关系啊?
最近我遇到一个跨国大公司的case (不便透露这个公司的名字,不过该公司的产品大家基本上每天都用的到 – 除非你是苹果用户,因为乔布斯当年决定不支持该公司的某王牌产品)。该公司sandbox中的Salesforce CRM 在安装了某个应用后,由于用户角色过多而造成了Visualforce Page的viewstate爆表。
去后台一看,吓了一跳,记录显示这个公司一共有20,000+的用户角色!诧异之余,觉得很可能该公司有很多废弃不用的用户角色,于是决定只获取Active的role看看,结果的确是比之前有了很大改进,但依然有9,000+有余。
像我刚才阐述的那样,我不相信一个公司,哪怕是名字耳熟能详的跨国企业,需要9,000+的用户角色,于是果断打开workbench (只要你玩儿Salesforce CRM,这个工具你不应该不熟悉),决定要查看一下这9,000+个用户角色究竟都是何方神圣。
瞥了一眼之后就明白了症结 – 大多数role的PortalType字段都写着CustomerPortal或Partner,即这些用户角色都是给众多渠道商或者合作伙伴量身定做的,而因为这些用户在大多数情况之下都无法真正进入到Adobe(这句话不把Adobe写出来的话,语法实在是有点搞不掂了…) 内部的CRM,因此完全可以忽略不计。
在清除了这些用户角色之后,你猜Adobe自己内部真正有效的用户角色有多少?好吧,我告诉你,504个,正中靶心!恩,至少算9.8环吧。
有些朋友可能不服气 – 凭什么就滤掉人家渠道商与合作伙伴的用户角色,万一我有一个scenario就是需要展示所有的用户角色呢?
Well, valid question.
用美国天体物理学家卡尔•萨根(Karl Sagan)曾经举过的一个很有趣的例子来说明问题吧 – 虽然这个故事最早是被借来说明不确定性原理并反驳哥本哈根学派的(哥本哈根学派认为同时具有动量p和位置q的电子存在的,只是“无法被观测”到而已了),但足够说明问题。
“我的车库里有一条喷火的龙!” 有一天卡尔•萨根和朋友这样声称。“太稀罕了!”朋友连忙跑到他车库中,但没有看见龙,“龙在哪里?”朋友着急的问。
“哦,”萨根说,“我忘了说明,这是一条隐身的龙。”
朋友有些狐疑,不过他建议,可以撒一些粉末在地上,看看龙的爪印是不是会出现。
萨根听后声称这个法子行不通,因为这龙是飘在空中的。
“那么,既然这条龙在喷火,我们用红外线检测仪做一个热扫描?”朋友并没有灰心。
“也不行。”萨根平静地回复,“隐形的火也没有温度。”
“要么对这条龙喷漆让它现形?”,朋友有点沉不住气了。
“不行不行,这条龙是非物质的,滑不溜手,油漆无处可粘。”萨根淡然的说。
朋友不说话了,认定萨根实在耍自己。
看到朋友生气的样子,萨根反问道:“这样一条看不见摸不着,没有实体的,飘在空中喷着没有热度的火的龙,一条任何仪器都无法探测的龙,和‘根本没有龙’之间又有什么差别呢?”
事实上,早在14世纪,一个叫做威廉的修道士就提出了一个理论– “凡是观测不到的世界,就可以认为是子虚乌有的,至少是毫无意义的”,因为该修道士出生在一个叫做奥卡姆的地方,所以他的这个理论也被称作“奥卡姆剃刀原理”( Occam’s Razor)。
所以试想一下,即便你将9,000+,甚至20,000数据统统都展现给用户,但只要用户没有耐心逐个读完,那么根据萨根的故事或者奥卡姆剃刀原理,这些东西就都是没有意义的。
所以,既然马克是从Alexis de Tocqueville和Adam Smith的经典著作“Democracy in America”以及“Wealth of Nations”中找到了把Facebook变成一个开放平台的理论基础,那么,粗浅涉猎一下量子力学,看来对Salesforce开发者和咨询师的成长道路来说,也不啻是一项很好的修炼。
May the
FORCE
be with you!