2008年11月27日 星期四

章立民之『笑談我的學習之路』

寫程式或資料庫的人大概都聽過章立民這個名字,這個名字在微軟的研討會、書店的程式設計和資料庫的書。章立民的書最大的特色就是品質,我的書房就有他寫的幾本資料庫及VB方面的書籍,因為他的每一個範例又實務又有用,絕非那種濫竽充數、只寫基本又基本的電腦書。

在網路上看到他寫的這篇文章,這絕對值得每一個想進入這個領域,或已經在這個領域的每一個IT人細細品味,所以轉貼分享給大家。我也感謝章立民先生所寫的書一路來對我學習及工作上的幫助。

===========================================
資料來源:http://blog.csdn.net/limingch/archive/2008/06/23/2578278.aspx
作者:章立民

讀者在部落格的留言板上留言,希望我能夠分享 .NET 的學習過程、心態以及方法。於是寫下本文,與大家分享。

在資訊軟體界討生活,要放輕鬆是談何容易。說“笑談”是有點故做輕鬆狀,“心路歷程”聽起來又有點噁心,講到“傳承”嗎,那更是不敢當,總之,大家就是放輕鬆,當作生活經驗的交流。將我這近20年來的經歷與心得,毫不保留但簡短地跟大家分享。更重要的是,我希望大家在讀完本文後,大家都能夠更清楚以及堅定地選擇你未來所要走的路。

技術快速演進的不變定律
綜覽人類文明的演進,大抵都建立在“今日會比昨日好、明日要比今日強”的基本史觀之上。回顧過往的資訊技術洪流,80年代末還在鑽研DOS系統、倚天中文、組合語言,90年代初卻得踏進Windows 3.1、Windows SDK、DDE等新架構所延伸的密林,大氣還沒喘上一口,卻又在90年代中期碰上了32位元Windows、MFC vs. OWL/VCL、OLE2所構成的技術風暴,而Web也在此時開始火熱,主從式架構也快速增加成三層式、甚至多層式的Windows DNA,正當慶幸千禧年的Windows架構還在掌控之中,.NET技術的躍進又像一波波不斷來襲的大浪。

身處速度快、變化大的資訊技術洪流,的確必須隨時準備好面對更快、更好、更強的明日世界。但是,技術的本質是什麼?學習的瓶頸該如何突破?如果只是一味盲目亂衝,而不適時讓自己緩下來思考,很容易被洪流吞噬。面對技術洪流,你的生存之道是什麼?你是否也思考了技術的本質以及學習的方法呢?更重要的是,您真的準備好面對這永無止盡的磨練(或是說折磨)嗎?

你(妳)為什麼進這一行
正所謂男怕入錯行,女怕嫁錯郎(我必須說,這觀念其實是迂腐的)。所以在我們分享所謂的經驗之前,應該先回到源頭,問問你自己,為什麼入這一行。在兩岸,常常會有一些年輕的程式設計師感到徬徨而來求助於我。我通常第一個問題就是問對方,你為什麼進這一行。是因為你在學校原本就讀資訊相關課系所以自然進了這一行,還是當時自己或家人覺得電子與資訊相關產業非常熱門,因此進了這一行。如果你是因為覺得產業熱門才進了這一行,而且是在1999年之後才入行的話,那我只能送你一句話,那就是“夕陽無限好,只是近黃昏”。所以說,如果你在午夜夢迴 的時候,常常會對自己的工作有所質疑的話,那真的應該好好思考思考。

我所要強調的是,你對資訊軟體真的有興趣嗎?你真的喜歡這樣的工作嗎?你頂得住壓力嗎?更重要的是,你快樂嗎?能夠把一件事情做好,並不表示你真的喜歡,也不表示你真的快樂,這只代表你有足夠的能力。如果這真的是你的興趣,你真的熱愛,就算辛苦,也會樂在其中。

身處在這行,工作日與假日加班是常態。我常常看到許多年輕人,不過就是假日加個班,就覺得自己備極辛苦,備受委屈。如果你也常有這種心態,趕快轉行吧!更可怕的是,自己辛苦也就算了,家人與親密愛人常常無法理解與諒解,同樣的,他們的抱怨也成了常態。幹這行,還有許多後遺症,像是身體變形,禿頭,滿頭白髮,心情很難放鬆…等等。

我談這些,並不是要你離開這個行業,我的目的,是希望大家再次肯定自己是喜歡這個行業的,不論您是開發人員或者是IT Pro,都能夠更加確認自己的選擇,然後堅定的走下去。

技術路線的選擇
在你確定自己適合走技術這條路,也決定要走技術這條路之後,接下來所面臨的就是技術路線的選擇,而這通常也是學生或初入行者最大的抉擇。為什麼呢?因為這關係到他未來的就業,他希望自己押對寶。然而為什麼會難以抉擇呢?因為目前看不出何者擁有絕對的優勢。據說是 .NET小贏。但是我們必須瞭解,任何一種技術架構都有其特性與優劣所在,然而難就難在 .NET與J2EE都非常龐大,我們很難兩者都精通。因此我說成功沒有一定的規則可言,失敗確有,那就是兩面討好者。

我常常看到有許多人喜歡比較 .NET 與 J2EE。說句實在話,這兩種技術路線都有極深的內涵,單單看了技術架構,稍微用了點其中的技術進行開發,就足以評斷兩者的優劣嗎?這未免太自以為是,大放厥詞。我投注了極大的心力研究 .NET,才比較認為能夠稍微隨心所欲地掌握其內涵,也才能夠真正體會其中的優點與缺點。我相信同理之於 J2EE。問題是,我時間有限,精力有限,能力有限,不可能同時研究這二者,既然如此,何德何能去評論呢?

我要說的是,檢視諸項技術時,最忌諱的就是 “成見” 以及那股莫名的 “情緒”,或是說 “情節”。當您有了這樣的心態,如何以客觀的心情去評量各種技術呢?奉勸大家,在選擇技術的時候,不需要有太多的情緒與愛恨情愁。我知道有很多人就是看微軟不爽,看微軟賺那麼多錢就覺得很討厭,因為我討厭微軟,所以我不用微軟的技術,所以我選擇J2EE、Java、Oracle。微軟的技術真的不好嗎?同樣的,你也不需要因為非常喜歡微軟,所以就討厭J2EE、Java、Oracle。身為一位技術人員,一定要拋開這些成見與情緒,因為一旦有這些成見,就會影響你的判斷力,也因此很可能跟好的技術失之交臂。所以我的態度是,不論技術是誰推出的,一定用開放與正面的態度去看待。正所謂“知己知彼,百戰百勝”,不論是自我學習,或是在市場上競爭,切忌閉門造車。

其實只要您真正投入,掌握技術的精要,自然能將其特性徹底發揮,進而開發出優質的應用程式。如果您學東西總是半調子,那即使您用的是什麼偉大的技術,寫出來的東西也是平淡無奇,甚至上不了抬面。

我選擇技術的原則非常簡單,第一看技術的進入障礙;第二看技術有沒有未來性。所謂進入障礙,當然就是跟我目前的技術能力是不是有延續性,是不是能夠有良好的銜接,這是為了確保我過去投入的心血不會輕易付諸流水。就未來性而言,也就是看技術有沒有前景,說得露骨點,或者應該說有沒有 “錢” 景,畢竟技術必須叫好,也要叫座,才是好技術,那種孤芳自賞者,通常沒有好下場。沒錯,這兩個原則有時候是彼此相衝突的。放諸技術的演進史,有時候會因為某種革命性架構與裝置的推出,導致引發大躍進式的演進。在這種時候,未來性的考量當然更勝於進入障礙。

其實在許多時候,技術(或是說技術路線)的選擇也沒有那麼難,因為市場可能已經幫您做了決定。如果真的無法自行判斷,就跟著流行潮流走吧!

不需要跟技術談戀愛
別讓“執著”害了你。就好比我們勸人在投資理財的時候不要跟股票談戀愛一樣,你也不需要跟技術談戀愛。沒錯,你當初看好某一家公司的前景,買了該公司的股票準備長期投資,可是當你發現公司營運狀況不如預期或是出現更大的危機之時,難道還要抱著股票不放嗎?你希望你的股票變成廢紙嗎?沒錯,您現在出脫股票已經受傷,已經賠錢,可是如果不當機立斷、壯士斷腕的話,損失將會更為慘重。投資理財如此,技術的選擇也是如此。

拿得起,也要放得下。當發現所選擇的技術已經失去優勢,應該毫不考慮的轉換。沒有錯,你已經投入了許多的時間和精力學習該項技術,要你放棄,談何容易。不過IT這個行業就是如此,過去被奉為聖經、歸鎳的技術架構可能在短短的時間就被淘汰出局。所以我們說,您也必須抱持一個開放的態度,隨時注意趨勢的變化,不要侍才而驕,自以為了不起。就好像戲水溺斃的人多半是游泳高手一樣,因為他自認功夫過人一等,不會有任何危險,完全沒有任何的警戒心,因此反而比別人死得更快。

我為什麼要特別提到“不要跟技術談戀愛”,因為我過去之所以在會在1999年急轉之下,陷入低潮,就是犯了這個錯誤。在很久之前,我靠FoxPro成名,我的存款、房子、車子都是靠FoxPro這隻狐狸賺來的。可是當時已經有一些明顯的跡象顯示出FoxPro未來將不會是微軟的發展重點。這些跡象包括:FoxPro在美日兩大市場賣得非常不好,Tech-ED的FoxPro場次人數遞減….等等。甚至連微軟內部的高層人員都要我小心,可是我卻不信邪。最後的結果就是後果自己承擔,承受痛苦。

我是如何學習的
正所謂萬丈高樓平地起,要把功夫練好,馬步一定要蹲得穩。我想很多人最好奇的,就是我如何學習新技術。說真的,我用的都是笨方法。學習技術,一定要先把架構與原理徹底瞭解,然後才能晉升到技巧的活用。而這中間的竅門,就是不停且大量的實作,並將結論有組織地整理起來。
每當我閱讀一段原理與說明時,都會儘可能去實際動手模擬或撰寫程式驗證,一方面可以確認自己的理解是正確的,一方面也可以更加熟悉並體會其內涵,並瞭解其應用層面。當然,人的記憶力是有限的,最終的驗證結果與結論,務必有系統的整理,以方便未來能夠快速查閱。

這中間的過程不僅枯燥,更是乏味,而且很寂寞,然而卻是必經的過程。就我的瞭解,業界的開發人員,可能最缺乏的就是這一段學習過程,畢竟大家都急於對老闆與客戶負責,交差結案,因此常常會流於追逐實用的技巧。但是大家別忘了,徹底瞭解技術架構,可能會比追逐新工具來得可長可久,畢竟許多原理都是一以貫之的。就以 .NET 而言,從2002推出到目前的 .NET 3.5,基本的大架構並沒有什麼不同,只是一直在既有的基礎上累加並擴充,如果你當初就能夠秉持正確的原則來學習,或許現在會更加感覺如魚得水。

如何讓自己與眾不同
如果要在這個產業長久發展,你必須讓自己與眾不同,而不同之處不僅僅是技術而已。
我很喜歡問開發人員一個問題:“除了高人一等的技術能力之外,你還有什麼?”我常跟別人說,你再會寫程式,你也只是個程式設計師。這句話聽起來或許很傷人。不過就像過去很多人問我寫書要寫到幾歲一樣,我以前從來不覺得這是個問題,但是當年紀大了,我開始思考這個問題。因此我現在問你,你要寫程式寫到幾歲呢?難道你要一輩子寫程式嗎?你以為每一位會技術的人都可以像Bill Gates一樣嗎?你以為Bill Gates就只是會技術嗎?他沒有其他的特質嗎?

也不是說你不能一輩子寫程式,不能一輩子當技術人員。因為有些人真的不適合當主管,不適合開公司做生意。如果真的想要長久做技術研究,你就需要一個比較穩定的環境。可能是在學校或研究單位,亦或是大型的私人企業。大家要早點想這個問題,畢竟中年轉業不容易啊。

我也常告誡人,不要讓高人一等的技術能力成為反效果。正所謂:「工作的金字塔,一人抵三人。」。你技術能力強,以一敵三,老闆為什麼要幫你升職,因為要用三個人補你的缺,而且你真的看起來不像個主管。為什麼升任主管的常常是你認為技術不太行的,只會耍嘴皮子的。結果是什麼呢,你花了很長的時間與很大的努力來證明自己,可是等你年紀大了,公司可能覺得你太老,不想給你機會。唉!真是殘酷啊!

或許你可以思考如何進一步融入“熱情”、“人文素養”與非技術的“專業素養”,或許這樣,可以讓你更發光發熱。我在2007年之前的好幾年都不講研討會,因為我不覺得我可以講得比以前更好,我覺得難以再超越過去的成績,我有疲憊感,也就是說我沒有熱情。與其勉強上台,還不如不上台。假設我自己都不熱愛這樣的工作,如何讓聽眾去熱愛呢。不要忘記,任何人比你都敏感。千萬不要以為可以混水摸魚,蒙混過關。

我還想問你,你的特質是什麼。為什麼同一首歌,由不同的人演唱,會有完全不同的效果。因為他捉住其中的感覺,能做最佳的詮釋。反過來說,量身訂製,因此你應該尋找最適合你的表現方式。

千萬記得,在演講、講課或做簡報時,是不可以忘我的,要隨時與台下觀眾保持互動。所謂的互動不見得是言語的互動,而是透過你的眼神、話語和肢體語言來傳達訊息,而從聽眾的表現、坐姿等等,都可以看出他們的反應,並隨時動態調整。因此我較不喜歡列出太細的項目,保持動態調整的彈性,而且準備的內容應該要比實際的會議時間來得長和豐富。

最後建議科技人應當走出技術的象牙塔,良好的人際關係,展現不凡的熱情與活力。

抓住機會,秀出自己
資訊人員一般來說都比較內向,比較沈默,不喜歡表現。可是我真的鼓勵大家,抓住機會,秀出自己(Present yourself)。想當初我第一次到微軟並且幫微軟講研討會,根本就是毛遂自薦的。重點是,當別人給我機會時,我充分掌握住了。

成功是性格、努力、與機運的結合。我們常說性格決定命運、努力要有方法和策略、最後還需要天時、地利以及人和的機運。你說路遙知馬力,日久見人心,問題是有機會表現時,你悶不吭聲,好像不存在。其結果是,人家還以為你能力不夠。

當然,如果你是金玉其外,敗絮其中,也撐不了太久。但是如果你真的有能力,給你一個良心的建議:“不要只做沈默的工蜂”。畢竟機會稍縱即逝,逝者不可追。

在這裡提供大家一項真實的統計資訊,當你說話的時候,人們接收到的訊息是什麼?請注意,有 93% 來自肢體語言和語調:
55%:外型與肢體語言。
38%:語調。
7%:話語(內容)。

為什麼我要特別強調上述的數據,因為我聽很多資訊人員講話的時候,真的很想扁人。不是說話的音調沒有高低起伏,就是喃喃自語不知所云,不然就是自顧自地講,完全沈醉在自己的話語和情緒中。唉!真是昏倒。

另外還有一項重要的數據提供給大家。一場演講後,人們還記得什麼:
過了 1 小時,人們會忘掉 50% 的內容。
過了 1 天,人們會忘掉 80% 的內容。
過了 1 週,人們會忘掉 95% 的內容,剩下的記憶是:故事、例子、親生經歷。

這也就是為什麼我們即使談的是技術性的研討會,也要舉許多的實例與成功案例,因為這樣印象才會深刻。

反省的能力
策略一定要動態調整。人們往往會活在過去的成功模式中,然而今非昔比,策略應時時作調整。
千金難買早知道,千金難買回頭望。也許我們無法抓住機會,但是藉由不停的反省與修正,也能讓自己往對的方向前進。

健康是最大的財富
大家都聽過這句話吧:“健康的身體是 1,沒有這個 1,後面的 0 將毫無意義”。美國前總統雷根曾經說過:“It is true hard work never killed anyone, but I figure, why take the chance?”(努力工作確實不會致人死命,但我想,何必冒險?)

當然,我們之前一直提到要努力,加班也不要抱怨,問題是沒人要你熬夜與晚起,你就不能早睡早起嗎?時間一樣長得很,更重要的是,這樣對身體有益。很多東西在失去了之後還可以找回,但是健康不能。刻骨銘心的戀情可能會永遠佔住你心中的角落,不時還會隱隱作痛,問題是它不會奪去你的生命;錯過的電影,還有下一場,健康可能沒有;這個男生不愛妳,沒關係,下一個男人會更好,只要你有健康的身體。

過去六、七年來,我一直保持運動的習慣,飲食也是清淡到不行,有人說我過得是清教徒的生活。運動不僅讓身體更舒暢,也讓大腦能夠休息與清醒,為下一次的吸收做好準備。建議大家也嘗試看看吧!

結 論
人在好的時候要想到不好的時候,人在不好的時候不要去想好的時候,而是應該靜下心來思考方法與策略,然後迅速脫離谷底。當然,我自己對未來也有很多期許,希望能再創高峰。

有人說:「發現一瓶好水,令人心曠神怡;發現一位好作者,令人眉開眼笑。」這麼多年來,我寫書一向注重品質,期許自己能夠成為讓人感到眉開眼笑的好作者。過去如此,現在如此,未來也將如此。近 20 年來,經過起起伏伏,風風雨雨,今天還站在這裡,我是心存感激的。下次再見,謝謝大家。

章立民 2008/06/23