“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!