技術路線的選擇重要但不具有決定性(轉載)
孟巖 2008 年的文章,現在看來還是挺有啟發, 送給大家,也送給自己。
最近微軟在技術上連續有大動作,在PDC上釋出了Windows Azure雲端計算平臺,預告了Visual Studio 2010、.NET 4.0和C# 4.0。如果放在幾年前,我相信微軟粉絲們一定是歡聲雷動,不過這次情況有點不太一樣,在網上看到有人在抱怨微軟技術更新速度太快而且四面出擊,還有人揚言要改弦更張,投奔Linux或者Java陣營。我本人也收到一封來信,寫信人大意是說自己大學時選擇.NET路線,一路跟下來很辛苦,2.0還沒學好,人家已經4.0預覽了,感到很困惑,問我該怎麼辦。老實講,這樣的問題我無法回答,每個人具體情況不同,所應該採取的態度和解決方案也不同。從我自己來講,其實技術路線問題也曾長時間地困擾我,所以我想把我現在的一些想法攤出來跟大家分享一下。羅列如下:
1. 根據我長期的觀察,做開發技術的人按照其人生路線設計,可以分成幾類。第一類是把自己的命運寄託在一項事業上。這樣的人知道自己想幹什麼,而且有能力把技術當工具來實現自己的想法和事業。這裡所說的事業是廣義的,並不是說你非要自己開公司當老闆,而是說你認可一件事情,比如促進人們交流和言論自由,帶給大家更多娛樂,提升大眾身心健康水平,增強國家國防實力,或者提升某個行業的資訊化水平,然後你能夠以技術為手段,在這個事情上做出成績。這種人做著自己認為值得一生投入的事情,願意領略這一追求帶來的人生起伏並且無怨無悔,我認為這是做技術的最高層次。第二類是把自己的命運寄託在組織和團隊上。這種人雖然不知道自己到底想幹什麼,但是技術水平出色,而且綜合素質突出,勇於變化,能夠把技術當敲門磚進入某個優秀的團隊,以團隊的目標為目標,依據團隊的需求而轉型或者堅持,跟團隊一起幹出一番成績。這類人有令人羨慕的職業背景,在大公司裡高薪厚祿,生活比較安定舒適,但是中年以後會經常自問到底做了什麼
我想說的是,在過去很多年裡,很多技術人實際上是把自己定位在第三種人裡。而實際上,只有成為第一類和第二類人,才算達到了比較成功的狀態。第三類人實際上最危險,因為技術的變遷不但是可能的,而且是
2. 對個體軟體人來說,什麼是核心競爭力?不是時間差,不是技術,不是基本功,不是什麼思想,也不是聰明腦瓜,而是你獨特的個性知識經驗組合。
有人看到新技術出來了,急急忙忙趕上去嚐鮮,以為自己快人一步,就能如何如何,實際上這種想法根本不靠譜,最多在論壇部落格上風光兩天,等這項技術投入實際應用以後一點便宜也佔不到。
有人把某個技術、框架、平臺研究得裡外通透,以為這樣就能奇貨可居。實踐中,這種人能紅火一時,但很難超過5年。這是現階段技術發展生命週期所決定的。此外,現在越來越多人意識到了,能夠靠讀書看文章讀程式碼做練習學會的東西沒什麼門檻,智力正常的人只要願意花功夫,都不難達到你的程度。有的人認為,自己有能力駕馭技術潮流,哪個紅學哪個。我在技術行業裡不敢說閱人無數,見過的高手上百是有的,說句不怕得罪人的話,能夠連續抓住兩個以上的潮流並且始終處於領先位置的人及其少見,一隻手就數的過來。更常見的情況是,上一個階段的成功會成為下一個階段的障礙,所謂隨機應變屹立潮頭之說,往往只不過是當紅小生給自己壯膽的狂言,時過境遷之後,他就只能聽著新一代當紅小生的豪言壯語而默默苦笑。
有人強調基本功,這是對的。在任何技術性行業裡都一樣,基礎打得多深,上面就能造得多高。現實中,基本功紮實的人很少見,這跟中國教育的弊病有關,所以基本功好的人,一般應變能力強,學習速度快,比較受歡迎。但說基本功是核心競爭力,還是沒有抓住本質。我們經常能看到基本功差不多的兩個人,一個發展的很好,一個發展平平,這表明基本功成功職業生涯的是重要條件,但不是決定因素。
有人強調這個那個思想,實際上軟體行業裡的偉大的思想就那麼屈指可數的幾個,窗戶紙一點就破,其他衍生出來的思想,就跟技術風潮一樣,各領風騷三五年,成不了你核心競爭力。
還有人強調自己的智商,聰明腦瓜,覺得自己比別人聰明,自己的聰明是核心競爭力。大學生、剛畢業的人持這個觀點的比較多,然而有過人生閱歷以後,自然會對這種觀點不以為然。本質上這是因為社會對於“聰明”的定義與學校不同,一個解題高手在學校裡可能是受人仰慕的聰明腦瓜,但在職業人生中則可能是個大傻蛋。我們身邊很多人走了一條不盡如意的人生道路,往往不是因為他們不夠“聰明”,而是因為他們太“聰明”了,聰明反被聰明誤。我想這也是為什麼人們要發明“智慧”這個詞以區別於“聰明”的原因。另外,關於這種觀點,還有一點不得不指出,那就是在軟體這個行當裡,一般聰明就可以了,絕頂聰明佔不到多少便宜。
那麼核心競爭力是什麼?我觀察圈子裡很多成功和不成功的技術人,提出一個觀點,那就是個人的核心競爭力是是他獨特的個性知識經驗組合。這個行業裡擁擠著上百萬聰明人,彼此之間真正的不同在哪裡?不在於你學的是什麼技術,學得多深,IQ多少,而在於你身上有別人沒有的獨特的個性、背景、知識和經驗的組合。如果這種組合,1,絕無僅有;2,在實踐中有價值,3,具有可持續發展性,那你就具備核心競爭力。因此,當設計自己的發展路線時,應當最大限度地加強和發揮自己獨特的組合,而不是尋求單項的超越。而構建自己獨特組合的方式,主要是通過實踐,其次是要有意識地構造。關於這個觀點,話題太大,我不打算贅述。
3. 雖然技術路線的選擇不是核心競爭力,也不應該具有決定性,但對於個人職業路線還是具有比較重要的影響力。但這並不是說,我們應該煞有介事地把自己歸於Java或者.NET技術陣營,整天捧本書吭哧吭哧啃。正確的態度應該是著重於你要乾的事情,然後認真把這件事情做好,通過必要的學習將所需的知識體系構築完整,在整個過程中及時更新知識體系。只有心理沒譜的人,才會為新技術的推出感到惶恐,因為他不知道自己要幹什麼,也就不知道自己要學什麼,看到什麼東西出來了都以為如果不學就會落伍,才會覺得是個壓力,日積月累,才會痛苦彷徨嚷嚷怎麼辦。相反,如果你很清楚地知道自己要做什麼,就會發現,其實必須及時更新的知識變化並不頻繁,大多數新鮮玩意根本不在自己關注範圍內,任他三仙落地,五佛昇天,與我何干?因此完全可以安步當車,穩紮穩打。
4. 幾年前我剛加入CSDN的時候,.NET和Java之爭是最熱門的話題。現在回過頭看,其實當時無論你選擇那條路,如果認真做下去,搞些實事,別玩虛活的話,現在都應該有成就了。當然,客觀上來說,這幾年微軟技術變化是比較快,彎彎繞得比較多,相比之下,如果當時你選擇的是Java,可能這幾年過的比較幸福一些,這是事實。我對此並不是沒有自己的看法,但是這畢竟不是多麼大的問題,實際上Java這幾年折騰得也夠猛,只不過作為一個比較開放的領域,Java為其追隨者保留了更多的自由度,而微軟的追隨者大多數有一種被驅趕的感覺而已。話說回來, 微軟的技術變革並不是沒有章法的,其今天的技術架構,早在2003年就已經明明白白地公諸於眾,只不過因為某些微妙的原因,一些微軟跟隨者這幾年被帶著兜了一些圈子,浪費了一些精力,比較辛苦。不過,現在.NET技術體系的塵埃基本落定,從體系結構上看,相對穩定的時期已經到來,投資微軟技術可以放心。
5. 不過我相信未來不同技術流的應用領域會出現一些明顯的分化。在中國,涉及國防、國家安全、命脈產業和關鍵行業的服務端要害系統,國產化改造是阻擋不住的潮流,長期來看,開源和Java將在這個領域佔據主導低位。其他的領域,隨著微軟技術變革的的大勢確定,相信微軟的優勢不可小覷。這裡沒有考慮中國政府可能做出的產業調整政策。這次微軟黑屏事件,無論是否出於微軟本意,其最大的效果在於向有關部門展示了一下其資訊戰力,中國政軍內部有關機構對此不可能不加以警惕,這是否會引起中國國內IT產業政策的調整,現在還不得而知。但我相信,微軟系統恐怕將在不長的時間裡與中國關鍵要害領域的核心繫統徹底說拜拜。未來中國IT系統的格局,很有可能是居廟堂之高則清一色Linux/Java,處江湖之遠則Windows佔主導。
6. 幾年前還有一個熱烈爭論,就是Java和C#之爭。現在實際上塵埃已經落定,兩個語言的定位已經分道揚鑣。Java實際上已經落實了成為系統語言的諾言,在現在的計算機體系結構上,Java與15年前的C一樣,可以成為構造基礎設施的利器,而且其效能相當不錯,完全突破了之前人們對虛擬機器語言的認識侷限性。我相信在未來,Java將有效地侵蝕C語言的一些曾經以為千秋萬代永不變色的地盤。雖然同時Java也在向上發展,但是其力度與C#不可同日而語。相反,C#主要是在往上發展,即將成為超級瑞士軍刀,微軟版十全大補膏,所有於應用開發有意義的特性都要加上,從程式語言發展來看,它將成為一株奇葩。作為一個程式語言的愛好者,我正饒有興致地注視著史上特性最豐富語言C#的發展動向。但是,不得不指出,C#的弱點在腳跟。自從用它開發Longhorn Avalon失敗以後,微軟暫時放棄了讓C#成為系統語言的努力,專心專意讓C#變成應用開發領域的超級無敵霸王3000,而在核心領域,仍然是C++、COM當關。這就出現了有趣的局面,在可見的未來,微軟體系內真正的核心軟體基礎設施,還是將由微軟自己用C++來構造,而組合裝配的應用開發,則由C#完成。VB和CLR平臺上的其他動態語言都不會有太多機會,因為C#將窮盡神智正常者一切關於語言的幻想。
以上幾點,如果有人現在要選擇技術路線,可以參考一下。但切記,技術路線的選擇重要,但不具有決定意義。
posted on 2013-12-21 12:43 Richard Wei 閱讀(1364) 評論(0) 編輯 收藏 引用 所屬分類: 程式設計感悟