對于大型公司項目平臺選擇J2EE的三層認(rèn)識
我對于大型公司項目平臺選擇J2EE的***層認(rèn)識
我是一個從野路子上一路走來的程序員,現(xiàn)在主要用.net做方案。選.net不選jave并沒有什么特別的原因,只不過是因為我自己從C開始學(xué)起,一直學(xué)到C#, 很熟悉這個平臺罷了,從業(yè)15年了,C#是最方便的一個語言,而VS是最方便的一個工具,因此就很自然地用C#來解決我的一切問題,而這個工具也沒有讓我失望過,基本上還沒有遇上過解決不了的問題。
但是在現(xiàn)在的這家公司里,我卻發(fā)現(xiàn)了一個很明顯的選擇傾向,就是90%的項目,都會選擇J2ee的平臺,.net平臺基本上沒有什么機會被引入。更有一段時間,公司里甚至規(guī)定了:禁止使用.net技術(shù)!
這是一家金融公司,一直以來都是以甲方的身份出現(xiàn)的,不知道為什么居然會出現(xiàn)這樣的規(guī)定,甲方應(yīng)該關(guān)心需求,不知道為什么還會做技術(shù)平臺的這種要求,而且用上了“禁止使用”這樣的字眼,無論如何,都是一種很不客觀的做法。
前幾年我還有些單純,看問題總是從技術(shù)角度出發(fā)。這個規(guī)定讓我相當(dāng)不滿,于是我做了一些測試和調(diào)查,證明了幾件事情:
1. 無論在小負載和大負載的情況下,.net都比j2ee的效率要高。
2. 由于***條,對于相同的應(yīng)用程序 .net比j2ee的所需要的硬件投入小得多。
3. .net與j2ee相比,前者學(xué)習(xí)的成本低得多,開發(fā)用的人力成本也更低。開發(fā)周期也短得多。
4. 收費的.net與“免費的”j2ee相比,產(chǎn)品許可證成本要低廉得多。這是花了我最多時間來扭轉(zhuǎn)人們看法的一條。
5. 以公司里的大多數(shù)項目的規(guī)模來看,.net比j2ee更合適于我們公司的情況——你真得不必為每一個項目都購買oracle和weblogic,大多數(shù)系統(tǒng)每天只有幾個用戶,登錄不到1個小時。
我拿著這些得到的事實,去找一些參與了此規(guī)定制定工作的人理論,在討論過程中,我又發(fā)現(xiàn)了以下幾個事實:
1. 這些人沒有一個人熟悉.net平臺。
2. 這些人中,絕大多數(shù)人也不熟悉j2ee平臺。
3. 這些人懂具體技術(shù)的人也不多,但有一些高層,是IBM的忠實信仰者。
大型企業(yè)的決策者們的心理是這樣的——我們金融公司基本上資金充足,明白嗎?我們不需要節(jié)省費用,上市之后,有幾十億的定向募集的資金要用于IT建設(shè),這筆錢必要花出去的。如果不花干花凈,投資人是不答應(yīng)的。因此最小的項目,也常有幾百萬的預(yù)算,這其中一半是開發(fā)費用和數(shù)據(jù)庫、中間件等服務(wù)器產(chǎn)品費用,另一半是幾臺IBM的小型機硬件(這也是被認(rèn)死了的東西),用于支持每天個位數(shù)的訪問量。
如果項目太省錢,是沒有辦法操作的。
既然錢不是問題,那么我們公司在項目投入方面的心理訴求是什么?是做一個“高檔的”項目,一個標(biāo)桿項目!誰能抓到這個點,誰就能得到項目。
IBM的營銷人員非常強大。他們向人們暗示:只有j2ee才是“高檔”的,而微軟的平臺是“小孩子玩的”東西。后來,我有機會參加一些項目的工作,于是親眼看到IBM的營銷能力在公司里造成的影響:如果在項目規(guī)劃的會議上有人提出是否考慮一下MS的平臺,他們會通過輕蔑的笑容讓提議者無地自容。請注意,技術(shù)決策者基本上都是一些對技術(shù)一知半解,或是完全不了解的人,人都有下意識,都有虛榮心,不愿意讓人認(rèn)為自己在技術(shù)上很低檔,沒有見識,于是一個個就很羞愧地住了口。有些情況下,即使一個心存懷疑的人,也會自動加入鄙視MS的行列,與之劃清界限。
另一方面,MS卻一直不知道為什么自己總是在營銷上失敗,他們的營銷人員很單純地向我們說明,.net平臺的優(yōu)越的性能、便宜的開發(fā)成本、低廉的產(chǎn)品費用……,但是他們不知道我們的心理訴求,他們所講的一切,都是在證明MS的東西是個“玩具”,“低檔平臺”,他們在背道而馳,***的失敗也是當(dāng)然的了。
我對于大型公司項目平臺選擇J2EE的第二層認(rèn)識
如前面所述的,由于很多人已經(jīng)被洗過腦,還有其他很多操作上的考慮,大家都會很自覺地配合IBM的營銷攻勢,而且我們也衷心相信:在IBM等軟件和硬件的支持下,我們的一個個系統(tǒng)步入了“高檔系統(tǒng)”的行列。把.net平臺留給了孩子們玩去吧。
其實,IBM,以及其他一些高端廠商(Oracle, BEA等)做承接的項目,大部分的活計是直接再轉(zhuǎn)包給其他國內(nèi)的小廠商的,他們自己所需要做的,基本只限于“規(guī)劃、咨詢、建議、項目管理方法論”等一些又高端又陽春白雪的工作。
不過說實話,這些大廠商的總結(jié)能力真不是蓋的,你聽了他們的咨詢師的課之后,大部分會感覺自己醍醐灌頂,狠不得把自己的所有的系統(tǒng)都推倒了重來!甚至狠不得把自己的業(yè)務(wù)方式都來個大變革。不過另一方面,這些高瞻遠矚的規(guī)劃,一般也會與現(xiàn)實社會有很大的距離,要么是客戶不接受,要么是監(jiān)管不接受,要么是現(xiàn)實不接受。無論如何,聽聽絕對有好處,就當(dāng)開闊了思路了。
既然遠景做不到,那么近景能做一些就做一些也是好的。首先就要聽這些大廠的話,選擇SOA, 或是SAAS, 或是別的什么概念來做這些項目, 當(dāng)然,聽IBM他們說,這些項目的都需要J2ee來支持,而***的J2ee應(yīng)用中間件,當(dāng)然是IBM自己的websphere什么的。其實都沒所謂.net好還是Java好,無關(guān)乎技術(shù)。對于廠商來說,這都無非是一件武器,用來對抗微軟的武器罷了,因為MS真得太令人害怕了,需要這么多廠商來一起對抗它。
為什么MS令人害怕?因為以下的幾個原因:
1. MS是一個程序員的公司,而IBM是一個營銷員的公司。MS有實實在在的技術(shù),但是明顯在市場頭腦方面差人一等,因此總是在戰(zhàn)略上慢幾拍,但是后發(fā)的產(chǎn)品很強大。
2. MS一直不停地研發(fā)。相信學(xué)MS技術(shù)的人都有感覺,就是他的主導(dǎo)技術(shù)基本上不到三年就要整個推掉重來一次,比如從ado到linq,再到現(xiàn)在的那個什么Ado.net entity framework的東西。每一代技術(shù)都更強大,但是翻新得讓人追不上。這種技術(shù)創(chuàng)新的能力,是十年不變的java陣營很害怕的。而且下一代的WPF、WCF等平臺的高度和技術(shù)能力是其他廠商難以達到的。
3. MS有著令人難以置信的軟件產(chǎn)品線,從操作系統(tǒng)到游戲,甚至是機器人仿真和開發(fā)包!在每一個戰(zhàn)線上,他都有產(chǎn)品(可能是原型級的)可以用來對抗全世界廠商。
4. MS正在蠶食下一代程序員。
因此,java聯(lián)盟必須努力抗擊MS, 他們其實對java的低效率心知肚明,但是他們已經(jīng)選擇了這個武器和這個招牌,因此只好做足文章,把數(shù)據(jù)庫、應(yīng)用服務(wù)器全部用java寫成——當(dāng)然可以用。這就夠了。
但是效率太低,無論懂不懂技術(shù)都能看出來系統(tǒng)慢。那么也沒問題的,只要幾臺P590上線,也就快多了。
技術(shù)上也對此準(zhǔn)備了解釋:是的,j2ee是用于對付大批量用戶的應(yīng)用平臺,在少用戶的情況下,效率上不明顯。但是當(dāng)用戶量上升到海量級別時,這個系統(tǒng)的響應(yīng)曲線一定是平緩的。而“.net一類”的響應(yīng)曲線必然是陡峭的。這叫做“吞吐量”。
我們得到了安慰,為我們的預(yù)算支出找到了解釋。每個人都滿意了。至于什么時候我們會用上百萬并發(fā)的吞吐量?也許永遠也不會,不過備著這個能力也好。
一度我也很相信這個含義不明的“吞吐量”指標(biāo),實際上的情況如何?有個例子可以參考:公司里有一個系統(tǒng)很關(guān)鍵,用戶并不是很多,這個系統(tǒng)由IBM規(guī)劃,orcale實施,運行在一個oracle cluster上,數(shù)據(jù)庫的存儲用的是HP的11000,應(yīng)用服務(wù)器用兩臺單獨的590,全部資源都劃為一個分區(qū)來跑。在每個月初會有幾百人在里面干活,系統(tǒng)要把上千萬條數(shù)據(jù)做轉(zhuǎn)換、抽取和導(dǎo)入(ETL),每到這個時候,系統(tǒng)就會慢得幾乎不能干活,登錄頁都需要十幾秒才會響應(yīng)。聽說硬件組的人為了加快效率,都把這個數(shù)據(jù)庫的存儲移到最快的硬盤條帶上了,還是很慢。每次登錄這個系統(tǒng),我都能感覺到IBM和oracle的龐大重量全部壓在我的鼠標(biāo)上。
這個例子并不是為了證明j2ee很慢。相反,我認(rèn)為這個系統(tǒng)的慢一定出現(xiàn)在軟件的設(shè)計上,那種級別的慢法,一定是要有數(shù)量級上的性能提升才會有用,java與C++相比,也不過是10倍以內(nèi)的效率之差,不會慢到二十秒出現(xiàn)登錄頁,再過二十秒才能登錄進去。因此,一定是與軟件、數(shù)據(jù)庫的設(shè)計很有關(guān)系,也就是與開發(fā)者的水平有關(guān)系,只有那樣才會導(dǎo)致幾百上千倍的效率區(qū)別。
因此,用什么技術(shù)效率高什么的,只是一個建立在“完全相等條件下進行比較”這個前提下的一種說法而已,現(xiàn)實中,你沒有辦法忽略具體設(shè)計人員的個人水平造成的影響。就算是有嚴(yán)格的數(shù)據(jù)證明說什么技術(shù)比另一個什么技術(shù)快,也不能保證“這個項目”就一定會“吞吐量大”。其實這就是一個營銷手法,它在我們遇上巨額費用支出是否合理的問題時,提供自我心理安慰的理由。
既然說到了這個項目,我就用這個項目做例子,繼續(xù)說我的第二層認(rèn)識吧。
公平地講,這個項目有很大的技術(shù)難度,開發(fā)的風(fēng)險很大。一開始是個燙手項目,倒不是因為有政治方面的問題,高層都肯定是下了決心來做的,但大家都已經(jīng)算計過了,這個項目的技術(shù)難度這么大,有50%的可能性是會做爛掉的,公司里沒有多少人敢接手負責(zé)。但是這個項目又必須做,***就指定一個項目負責(zé)人來強迫他來做這個項目。
其實這個項目雖然難,但都是技術(shù)方面的難度,最少50%可能性是會很成功的。于是負責(zé)人就會硬著頭皮上馬,開始招標(biāo)什么的。然后,各種廠商也都立即擁過來,各種營銷手法來來往往的,也不用多說了,只說這個負責(zé)人在***定標(biāo)時的心理。
前面說了,這個項目有一定的風(fēng)險,雖然只有50%,但這50%對于項目責(zé)任人來說就是100%的風(fēng)險。這樣重要的項目,負責(zé)人也都會是很高層的領(lǐng)導(dǎo),他們對政治方面非常敏感,一般情況下是會給自己留足后路的。資金不成問題,請廠商不要節(jié)省,節(jié)省你就輸了。在這個投資的范圍之內(nèi),如何保證自己的政治風(fēng)險最?。?/p>
很明顯,就一定是要選擇一個***牌的廠商,選擇***檔的技術(shù)。***為了分散政治風(fēng)險,把幾個大廠商都拉進來一起做才好,比如我說的這個項目,數(shù)據(jù)庫用最貴的orcale, 一個cpu的授權(quán)都在30萬人民幣。打折?不用了,你只要給我***的服務(wù)就行!軟件的實施請BEA來做,BEA連應(yīng)用服務(wù)器都能做,做這個還不是小菜?IBM做咨詢與規(guī)劃,還有硬件當(dāng)然也是IBM,***的機器給我來兩臺做熱備!
有懂技術(shù)的說了,慢著,這不是加大了技術(shù)風(fēng)險么?這么多大廠商來一起做,誰會聽誰的?那不是增加了溝通的難度嗎?最少也增加了集成的難度呀!這樣一來,技術(shù)風(fēng)險從50%成了75%,做爛掉的風(fēng)險加大了!
你說的沒錯。從技術(shù)角度上來看,是這樣的。但是我一直說的是政治風(fēng)險,沒說技術(shù)風(fēng)險的事情。這個項目的政治風(fēng)險是對項目負責(zé)人能力評價的影響。如果做成了當(dāng)然***,但是還有一半可能性做不成,這種情況下影響就很負面了。
因此,對于一個項目負責(zé)人,他的決策思想一定是這樣的:如果選擇了一個小廠商,項目做壞了時,他就有決策失誤的嫌疑了。因此一定要選擇***最貴的廠商,這樣的話,就是做爛了項目,他也可以向領(lǐng)導(dǎo)匯報:您看,我們選擇了***的產(chǎn)品,***的硬件***的服務(wù),***的軟件開發(fā)者,這都是業(yè)界一級棒的乙方,他們聯(lián)手做這事情,但是還是做成這個樣子。言下之意就是:這不是我的決策問題,是這個項目真得真得太難了,換了誰也不行。
當(dāng)然,***項目也不會一無是處,對付著還是能用的,這就叫成功了。但項目做得很差是人人都看得出來的,于是這個后著就用上了,政治責(zé)任就推走了。
這就是我對這個選擇的第二層認(rèn)識:從政治上講,選擇***牌的廠商是最“政治安全”的策略。
IBM這些廠商深知這個秘訣,于是他們把自己包裝成很高明、很抽象、很High Level的樣子,這就與很多大項目的責(zé)任人的心理就切合上了。而MS因為后起,就有心理定勢,以為自己的技術(shù)比別人來得晚,生怕甲方對他們的技術(shù)能力有懷疑,于是總是在技術(shù)的可用性、成本的節(jié)約性上努力, 很有南轅北轍的意思。
這就叫“市場定位”。
我對于大型公司項目平臺選擇J2EE的第三層認(rèn)識
剛剛第三篇的發(fā)布時,cnblog告訴我一個小時里不能發(fā)兩次精華??墒俏覍懸磺碜侄蓟ú涣艘粋€小時。今天思路比較快一些,呵呵。
***,我再聊聊我新近觀察的一個項目的運作,來分享一下我的第三層認(rèn)識。
在達到了第二層關(guān)于政治風(fēng)險的認(rèn)識水平之后,我保持了這個認(rèn)識水平有一段時間。當(dāng)然我也無法左右公司高層的選擇,反正有錢就花吧!只是有些系統(tǒng)自己要用的,難用成那樣實在不爽,有時候也不免發(fā)發(fā)牢騷。
我有一個哥兒們混得挺好,他新近管著一個項目,這個項目也是由IBM指導(dǎo)實施的,但聽說最初決定這個項目由誰來做時,也是某個領(lǐng)導(dǎo)一番沉思之后決定的,但那位領(lǐng)導(dǎo)不說什么理由, 只是思考之后做了這個決定而已。
這個項目沒有什么大的技術(shù)難題,技術(shù)實施的成功率是很高的,按道理不需要什么政治保險。一開始我那哥兒們在做方案時,也的確沒有選擇IBM,而是以他們的評估,選擇了資質(zhì)不錯,但是價格是IBM五分之一的一個廠商做為給領(lǐng)導(dǎo)決策的推薦。
有一點我們都沒有多想,就是這個項目雖然沒有技術(shù)風(fēng)險,但整體上有一個政治風(fēng)險。這個系統(tǒng)所要支持的一個業(yè)務(wù)模式很創(chuàng)新,公司里有很多人出于各種原因,對這個項目比較抵觸。在項目立項時,這種反彈還沒有表現(xiàn)出來,大家估計也都沒有反應(yīng)過來這個項目是在做什么。等做到一半時,很多人開始明白過來了,回過味來了,發(fā)現(xiàn)這個項目再做下去,可能會出一些對自己“不利”的情況。
這個說是“不利”,其實也沒有什么“不利”,無非是高層的注意力會有一些轉(zhuǎn)移、政策優(yōu)惠會有一些轉(zhuǎn)移、資源的傾斜會有一些轉(zhuǎn)移什么的,業(yè)務(wù)上的競爭與沖擊還遠遠說不上,但如同郭德綱的那句話一樣,對于很多中國人來講,只要自己不得益就算是吃了虧了。
于是這個項目就受到了沖擊,一會兒停下了,一會兒繼續(xù)了,一會兒又被人重新設(shè)計目標(biāo)了,反正搖搖欲墜,挺危險的。
***,這個項目還是挺住了,繼續(xù)!為什么?因為有IBM在!
當(dāng)項目因為上述問題出現(xiàn)方向爭論、資源爭搶時,這個項目自然就延期了。項目一延期,而且看勁頭甲方一幫人還要繼續(xù)這么亂下去,IBM不干了,***、他們的工程師、咨詢師天天白瞎在這里,那工錢是按小時出的,流水一樣。第二、IBM做的項目,怎么能做爛掉?以后讓業(yè)界說起來,“某某某公司的某某平臺是IBM做的,做爛了!”這IBM的臉往哪里放?IBM也是個官老爺公司,能力固然是很強的,但是內(nèi)部政治也很復(fù)雜,說不定比我們更復(fù)雜,他們可丟不起這人。第三,IBM已經(jīng)在財務(wù)計劃里把每期工錢的應(yīng)收預(yù)算做好了,你又延誤了,不交支票了,這可不行!
于是,IBM通過自己長期已經(jīng)建立的人脈對甲方開展了攻勢,突然之間,上上下下都有IBM的營銷團隊在活動,這個項目的責(zé)任人正好得到助力,項目目標(biāo)很快確定,爭論平息,項目繼續(xù)。
后來我們聊天時,都對這位項目負責(zé)人的高明手法佩服無比,他早看到這個項目未來的風(fēng)險所在,于是就采用了與大廠商綁在一條船上的策略,在危機出現(xiàn)時,借力向公司的決策層加壓,***才得險勝。而如果一開始就決定另一個較小的公司來做,出現(xiàn)這種事情時,小乙方只能閉嘴苦等,聽人發(fā)配的份兒了。
雖然請IBM而支付了5倍的費用,但項目畢竟可以繼續(xù),多出的那部分,就算是“管理成本”好了。
總 結(jié)
◆ 如果一個項目有技術(shù)風(fēng)險而無政治風(fēng)險,那么從項目決策都角度上出發(fā),一定要用看起來最HIGH的配置,因為技術(shù)實施困難導(dǎo)致的政治風(fēng)險,可以通過不等式的傳遞性而推脫:“乙方如此強大,還沒有辦法, 因此此項目確實超出我們的、以及現(xiàn)在業(yè)界的技術(shù)能力”。
◆ 如果一個項目有政治風(fēng)險而無技術(shù)風(fēng)險,而自己又沒有信心獨自搞定這些問題的話,不妨拉上大廠商,接用他們的力量來在關(guān)鍵時候做推動。
◆ 只在有項目即沒有技術(shù)風(fēng)險,又沒有政治風(fēng)險的情況下,才可以考慮采用一家務(wù)實進取的小公司來做,快速小成本地用“低端方案”搞定。
說到***,大家應(yīng)該明白我說的意思了:在很多企業(yè)里,項目技術(shù)的選擇已經(jīng)基本上與J2EE和.net技術(shù)本身沒有什么關(guān)系了。這兩個技術(shù)只是兩大陣營碰巧選擇的武器而已,可能會有一些小小的優(yōu)劣差異,但是根本不重要。MS和反MS這兩大陣營各自采用不不同定位,因而各自占據(jù)了市場的兩端,誰是高端誰是低端,并不能說明這兩種技術(shù)本身哪種就“高級”了,而哪種就是“低級”技術(shù)。
當(dāng)然,客觀上為了迎合兩端不同客戶的需要,這兩類平臺都發(fā)明了相應(yīng)的附加品。比如Java,就發(fā)明了J2ee這種相當(dāng)有點陽春白雪的東西,還有很多無比抽象復(fù)雜的實現(xiàn)模式,而.net則發(fā)明了服務(wù)器控件、viewstat和數(shù)據(jù)綁定這類速成工具。
這篇的目的,一方面是為了把自己的想法和大家交流,另一方面,也是想勸勸大家,不必太介意技術(shù)那點小小的差異,目前大家遇上的項目,大多都沒有什么技術(shù)困難迫使得你必須要選用什么平臺,或是不能選擇什么平臺。因此,技術(shù)平臺的選擇往俗了說是一個政治問題,往好聽了講,是策略問題。策略選擇的原則,我也在“第三層認(rèn)識”里總結(jié)過了,只要選擇得當(dāng),就可以使項目更容易成功——那才是我們這些人的目標(biāo)。
原文鏈接:http://www.cnblogs.com/haoxiaobo/archive/2010/06/01/1748966.html
【編輯推薦】