約 10 年前,微軟推出了 .NET 1.0 英文版,我當時對編程還是外行人。
我的 IT 生涯先是從網絡管理、Windows Server 2000、SQL Server 2000 學起。考到 MCSE 2000 后,覺得管理網絡、修機器,無法發揮創造力,因此后來開始自修 Java。不久后,被微軟的瘋狂營銷所影響,開始接觸 .NET 平臺。轉換平臺的原因,除了中文書籍、中文技術文章較多以外,也覺得 Visual Studio 2002 用起來頗順手。
多年后的今日,提供自己的一些學習和工作心得,給網友們及新手作為參考:
- 程序語言、編程技術和開發工具,只是完成某項工作、做某個項目,或學術研究的輔助工具。編程技術雖然重要,但必須搭配其他知識和 know-how,才能彰顯出技術的價值,例如開發 ERP 系統,不能不懂:初級會計、成本會計、物料和庫存管理、生產制造排程、... 等相關知識。在少有大型軟件公司的華人世界,只懂寫代碼、鉆研技術,而無第二、第三專長的人,很難在薪資和職涯上有所突破,參考:程序員真情懺悔錄。
- 不要因為自己學的是 .NET 技術,就盲目崇拜微軟的一切,微軟推出什么新技術你都拼命學,還到處主動幫微軟推廣新技術。學習前,應先對這門技術做概略式地了解,并做投資報酬率評估,這門技術的未來發展性、在企業的實用性如何,才決定是否花時間學習。且即使接觸新技術,也應該采取「大局觀」的學習,逐步了解這門技術未來的發展性、實用性,而非鉆研隨時可能被淘汰的新技術其代碼的支微末節。不論任何偉大的公司,也可能犯下致命的決策錯誤,參考:微軟這 10 年犯下的五大錯誤、Dawn of a New Day (Ray Ozzie)。
- 若要學習架構設計、系統設計,要多閱讀國外的書籍和示例,也一定要接觸 Java / J2EE / Design Patterns 的書籍,多和 Java 牛人交流,不要將自己綁在 .NET / 3-Tier / PetShop 的圈子里,更不是把 .NET 各種技術都學一遍就叫做懂得設計。有些 J2EEr 大牛,活用 OOAD 設計出來的系統和組件,極具解耦、易串接性、可擴展性,而非單用設計模式的其中一兩種而已,有時會多種同時搭配混用。小弟我初見此等高人的設計時,感覺猶如笑傲江湖中所述,劉仲甫初遇驪山仙姥對奕時的仙著。這方面的技巧,即使是國外的 .NET 英文書籍,甚至微軟官方 Microsoft Press 介紹架構設計的書籍,我認為也有不足之處。
- 如前所述,若要成為全面性的技術人員、企業不可或缺的人才 (而不像某些軟件公司把程序員當作廉價勞工),必須創造自己的不可替代性。這方面我個人認為,無須每天去鉆研最新最火的技術和框架,而是應該「橫向」發展和學習,多接觸如:財務、會計、商業作帳、產業的供應鏈、庫存管理 (可寫成厚厚一本布滿數學公式和統計圖表的書籍)、工作流、銷售和采購、電子商務 (性能和安全性)、...。若能在下班及閑暇之馀,多學習其中一兩項,讓自己成為「跨領域」的人材,必能造就自己無可取代的身價;而非淪為天天追著新技術跑,履歷表和博客上永遠只有技術名詞和一堆 MCxx 的頭銜,或在下一個 10 年的除夕夜,只能獨自抱著 .NET 14.0 的原文書在苦讀。
最后轉貼李維先生所著,「Borland傳奇」書中一段,描述 .NET 在 10 年前誕生的故事,及其創造者 Anders Hejlsberg 的一些趣味故事。
--------------------------------------------------------------------------------------------
Anders Hejlsberg 這位不世出的軟件天才,是目前全世界最頂尖的軟件技術人員之一。論實現技術,Anders 可能是當世的第一高手,因為他精通程序語言、編譯器技術、開發工具、Framework 以及系統架構。

雖然 Anders 沒有顯赫的學歷,無法獲得 Turning Awards (即圖靈獎,信息科學界最高榮譽的獎項,等同于諾貝爾獎)。但是我認為 Anders 的實力和貢獻,絕不輸于任何一位 Turning Awards 的得獎人。Anders 是最好的信息實踐型人物,在 2001 年,他終于獲得了信息界最具權威的信息刊物 Dr. Dobbs' Journal 頒發的 Excellent Programming Awards,以表彰 Anders 為信息界做出的卓越貢獻。我想 Anders 應該是許多本身沒有高學歷或不是計算機信息科系出身的優秀程序員最好的效仿對象。
Anders 精通程序語言、編譯器技術、開發工具、Framework 以及系統架構。我雖然知道許多軟件界重要的人物和好手,但是尚不知有任何人能像 Anders 一樣在這么多領域都能成為大家。下面是筆者整理出 Anders Hejlsberg 到目前為止重要的功績、貢獻以及獲頒的重要大獎:
- 和 Philippe Kahn 共同創辦 Borland 公司
- 開發出 Turbo Pascal,當時首創的 In-Memory Compiler 震驚了全世界
- 開發出全世界最暢銷的 Pascal 產品,Turbo Pascal (這是許多信息人員學習 Pascal 和 Data Structure 使用的經典產品) 以及 Borland Pascal。Turbo / Borland Pascal 合計銷售超過了數百萬套。Dr. N. Wirth (Pascal 語言的創始人員) 也應該向 Anders 致敬,表達 Anders 對于 Pascal 語言的貢獻。
- Anders 使用匯編語言撰寫編譯器,其功力無人能出其右。創造出了全世界速度最快、品質也是一流的 Pascal 編譯器。在 Anders 離開了 Borland 之后,幾乎沒有人能夠修改 Anders 的編譯器。
- 開發出影響深遠的 Delphi 這個偉大的 RAD 工具
- 開發出 Visual J++ 語言
- Microsoft .NET 的Architect
- Microsoft 頒授 Microsoft Distinguish Engineer 大獎
- 發明 C# 這個造成重大影響的語言
- 發明 LINQ 技術,讓 .NET 上的程序語言成為目前主流平臺中,唯一內置查詢能力的語言 (這一項是樓主我自加的)
一個人一生能夠做出幾件讓全世界都津津樂道的事業呢?Anders 卻成就了無數 PC 界偉大的功績,并且在程序語言、編譯器、開發工具以及 Framework 方面都有重要的貢獻。
PC 軟件界因為有了 Anders 而精彩、豐富了許多,也創造了許多令人驚嘆的故事。更棒的是 Anders 現在仍然在繼續貢獻他驚人的天分,就讓我們拭目以待,看看 Anders 還能創造什么功跡吧。不過,不管以后如何,相信 Anders 應該是大部分軟件人員希望學習的目標。Anders 的功力也是大部分軟件人員一生企望能夠達到的境界。
在 2002 年 Borland Developers' Conference 中,Anders Hejlsberg 是排名第一的 Keynote Speaker,尚在 Java 的創始人 James Gosling 之前。根據現場同時聆聽這兩場 Keynote Speech 的聽眾報道,Anders 的 Keynote Speech 是非常精彩的,而 James 的 Keynote Speech 則相對的枯燥,許多人因此而提前離席。而且 Anders 在開始進行 Keynote Speech 之時,便獲得了現場所有聽眾起立鼓掌致敬,看來,在大多數 Borland 開發工具使用者的心中,Anders Hejlsberg 是永遠的巨星。
Microsoft 的重金挖角和 Anders 離開了 Borland
Anders在不介入Delphi的開發、并且無法主導Borland Java開發工具開發的情況下充
滿了挫折感。沒有了Philippe Kahn的強力支援,Anders雖然是Borland最頂尖的技術
人才,卻也無法對抗Borland管理階層的力量。當然這也是從Philippe Kahn離開了
Borland之后、Bodand開始轉型有關,這在稍后Borland的轉變一文中,我會作詳細的
說明。
雖然Anders在Borland遇到了挫折,但是對于Microsoft來說這卻是千載難逢的好機會,
在此時Microsoft展開了大規模的挖角行動,而且是明目張膽地進行,正是由于
Microsoft如此大膽的行動,因此也造成了不久之后Borland對于Microsoft的法律控訴。
這次的挖角行動中,Microsoft同時鎖定了數個Borland最杰出或是重要的人物,當然
Anders是名列第一的挖角對象。時值1996年,Microsoft終于展開了行動,使用的方
式是最直接的攻擊。Microsoft直接派遣加長型的大轎車到Borland大門口找Anders吃
飯,第一次Microsoft開出了年薪百萬美元以上的條件。不過在Borland知道了這件事
情之后,也很快進行了加碼的動作,因此Anders并沒有對Microsoft進行響應。
Microsoft在苦等無應、按捺不住之下,很快就再次用大轎車找Anders。這次Microsoft
提出了兩百萬美元以上的條件,希望Anders能夠首肯。對于這次的喊價,Borland可有
點為難了,因為兩百萬美元不是筆小數目,這已經比當時Borland許多副總裁的年薪還
高。此外,如果Borland答應也加到兩百萬以上,那么是不是Chuck也要如此加碼?其
他的Delphi R&D小組要如何調整?這些都是非常棘手的問題。
不過Borland很快找到了解決的方案,那就是允許Anders從每一套賣出的Delphi版本
中抽取一定數量的版權費。如此一來Delphi賣得愈好,Anders便能取得愈多的回饋。
不過就我的了解,Anders注重的并不是金錢上的問題,因為在Borland創立的初期,
由于Turbo Pascal的編譯器都是Anders撰寫的,因此當時Anders也是賣一套Turbo
Pascal就可以抽取版稅的。依照Turbo/Borland Pascal全世界銷售數百萬套來算,
Anders早就是富翁了。薪水多一點,少一點并無所謂,Anders心中想的是自由發展的
空間。在Borland提出了Delphi的隨版抽稅,再加上Microsoft并不知道Anders真正想
要的東西,因此Anders仍然沒有響應Microsoft提出的優厚條件。
不過,Anders實在是太重要的人物,而且Microsoft在面對Java與日俱增的威脅下,
非常渴望能夠有像Anders這樣的人才帶領Microsoft開發下一代的開發工具,這當然
也是由于Microsoft以前向Borland挖來的人都做出了不小的貢獻所致。Microsoft食
髓知味,當然希望能夠得到Borland的鎮山之寶。在Anders兩次不為所動之后,
Microsoft決定祭出最后的王牌,由Bill Gates親自找Anders吃飯,進行最終的挖角
行動。
不管讀者喜不喜歡Bill Gates,不可否認的是Bill也是一個天才。自古英雄惜英雄,
在Anders和Bill相談甚歡的情形下,Microsoft開出了年薪三百萬美元以上、數萬股的
Microsoft股票這個超高的條件,再以當時Microsoft高貴的股價來計算,真是一筆龐
大的數字,也許對于搞軟件技術的人來說,這已經是不可能的天文數字了。不過這些
條件并不是打動Anders的主要原因,Bill最后提出的條件是 "答應給Anders一個小組
和極多的資源,讓Anders盡情地發揮"。這個條件可說是打到了Anders的心底,因為
Anders正渴望有人能夠支持他完成新的計劃和想法。我想,在軟件產業中大概也只有
Microsoft能夠擁有這種雄厚的資源可以挖角任何人吧。
在Bill Gates提了這樣的條件之后,Borland再也沒有本錢能夠和Microsoft進行比價
了,只好眼睜睜地看著Anders離開Borland前往Microsoft再開創下一個人生的高峰。
在Anders到了Microsoft之后,Bill Gates果然重用Anders,也立刻讓Anders負責激
活Microsoft的下一撥開發工具計劃,當然這個計劃也是Microsoft對抗SUN/Java的整
體計劃之一。Anders到了Microsoft之后立刻展現了實力,讓Microsoft的編譯器技術
又精進不少,最明顯的例子就是Microsoft后期的Java Virtual Machine是PC上執行
效率最好的,而且在2、3年后,VJ++編譯出來的虛擬機械碼的執行效率不但比任何的
Java開發工具還快,在某些方面甚至比原生的Windows開發工具,例如Delphi、VB、
甚至是VC++還有效率。這真是令人震撼,當然Anders為VJ++打下的基礎現在也展現在
NET的C#編譯器以及.NET的 JIT (Just In Time) 編譯器之上,.NET的JIT在許多程序代
碼最佳化方面比Delphi還先進。因此在2、3年前當VJ++即將推出之際,在Borland內
部也引起了非常大的騷動,并且嚴陣以待,當然這又是另外一個故事了。
對于Anders來說,到了Microsoft之后不久又再次登上了生涯的另一個巔峰。因為當
初Anders在Borland之時,就有如孫子兵法中敘述的 "藏于九地之下",雖然是不世出
的天才,但是僅為少數的人所知,即使是使用Borland產品的人在當時可能也不知道
Anders這號人物。因為Anders和Borland的作風很像,都是行事低調,不到最后絕不
隨意出手。但是Anders被挖角到Microsoft之后,由于Microsoft的企業文化向來是前
進、積極的侵略性方式,因此Anders也就轉變為"動于九天之上",負責Microsoft開
發工具大軍的核心大將,不但廣為人知,成為許多軟件人員效法的對象,而且屢獲大
獎。他不但獲得了信息軟件業界的推崇,最后也終于獲得了信息學術界的認可,可說
是實至名歸。
Anders的離開對于Borland來說是一個很大的損失,不過對于Delphi R&D小組來說卻
是有好有壞,因為Delphi開發小組雖然失去了最重要的支柱,但是也給Danny Thorpe
一個快速崛起的機會,在1年后,Danny果然立刻成為了Delphi/C++Builder/Kylix中
最杰出的人物之一(另外一個當然就是Anders的老搭擋Chuck Jazdzewski了),Danny
也是我認為目前在Borland RAD(注)部門中功力最厲害的人物。在稍后的內文中我會
對Danny進行比較詳細的說明。
注:Borland RAD部門是指Borland的Rapid Application Development部門,RAD負責
的產品包含了C++Builder、Delphi、Kylix以及未來的.NET以及Mobile的新產品。
浙公網安備 33010602011771號