程式的可擴充性和開發原始碼有關係嗎?牛馬不相及的東西有什麼可比性呢?讓我從前幾天的一個會議開始慢慢道來。
兄弟公司(同父異母的那種)過來一幫“進階領導”,從高端產品到低端產品的經理都到了,大家濟濟一堂,互相介紹和學習各自的平台經驗,其核心是如何保持快速開發的同時,提高平台的可擴充性。
先是兄弟公司的一中等規模產品的哥們呼呼的吹了一番,鼓掌。然後是我們,俺也呼呼的開始吹,大家忍耐一下,看看我怎麼吹的。
同志們,兄弟姐妹們:
為增強我們的平台可擴充性,第一招:所有功能,不論用戶端還是服務端,全部面向服務開發,使用GetService<IServiceX>()的方式申請服務,所以說,我們的所有功能都可以重新實現並安全的替換。強吧!我心裡想,那高端的哥們一點反應沒有,好吧,在加點料。
有人說了,那個服務讓我重新實現太大了,客戶往往沒有那麼大的本事,他也只是想在你的服務執行之前或之後或之中插入一點小邏輯而已,不急,我們還有AOP,俺們實現的AOP速度快,理解簡單,程式不複雜....口水飛濺。 那高端的哥們還是沒有反應。
好,來更恨的,我們的程式全部都做成很小的切片,通過一個支援繼承的配置系統可以將整個系統重新調整組合,這樣都可以將現有系統的功能砍掉,而且我們實現了依賴性檢查系統,能夠安全的檢查砍掉的功能的完整性。還不強?那高端的哥們有點打瞌睡了,
不行,我還有招數,編程太複雜是吧,哪些簡單的加欄位啊、加點校正啊什麼的,我們現在全部實現了配置,而且這個配置還支援系統升級哦,啥叫系統升級?就是MIS改了校正邏輯,加了邏輯,然後主產品升級了,新系統增加的和使用者的自訂都能保留。那哥們偷偷的在打電話了。
好吧,我只有最後一招了,我們還整合了指令碼系統,你可以編寫指令碼幹預程式的任何部分的邏輯,添加功能,就像Word一樣。口乾舌燥。那哥們打完電話了,正在不耐煩的等著我的結束語。好吧,我自覺,“感謝大家,謝謝。”
下來後,我就在想,他媽的高端的哥們是見多識廣哦,這些東西一點反應沒有,私下我一定好好請教一下。
會議結束,馬上虛心的跑到他那,哇哇的狂捧一下他,然後虛心的請教你們高端如何做到這些擴充性呢?那哥們終於開口:我們產品都是開發原始碼的,想要我們怎麼改就怎麼改,不需要你們的這些複雜的東西。立馬倒地。
哦,我終於明白為什麼IBM、SUN、Oracle都在整天狂高舉開源大旗,一個個表現的如此“英雄豪傑”。原來打的就是這個小算盤啊。還有指令碼系統如此流行是不是也是這個道理呢?
再仔細想想,不對啊,你給人家原始碼然後狂改功能,那以後你的主要版本升級了之後,你給別人定製的代碼豈不是要重新編寫,那麼多客戶你不哭死嗎?抱著這個問題有請教了高端的哥們,他曰:我們升級是要錢的,給我們兩三百萬我們改就是了。
哦,我又明白,雖然這些大公司的產品升級迅速,但是他們已經上線的客戶往往都還在用10年前的產品,原來是這樣哦。
再跟高端的哥們請教,慢慢感覺,其實現在的高端其實技術都是很落後的,但是他們強在超強的定製能力(開源),全球化企業的業務經驗。所以做低端的也不能盲目崇拜高端,就算崇拜也要知道崇拜什麼。做低端的,還是有低端的特點,並不代表技術差。