關於IT行業一些不得不說的廢話

一些廢話

金蝶中間件公司CTO 袁紅崗 1995

    每個人在成長的道路上都會遇到這樣那樣的困難,關鍵就是看你怎樣看待和克服它們。有人說從事IT行業是世界上最痛苦的行業,特別是從事開發工作的。因爲這個行業的技術更新特別的快,三天兩頭就有新技術新思想新信息,這是你不得不接受的實事。不過我從一個軟件開發者(程序員)的角度來糾正一下,計算機這東西從發明發展至今,體系結構的實質上沒有什麼變化,至少革命性的變化現在還沒有發生。只是速度快了些,價格便宜了些,容量大了些而已。現在不斷推出的新軟件新系統新語言不過是在以前基礎上的增強而已,它們統統都是建立在傳統體系結構和基礎上的。計算機還是CPUMEMORYIO,內存裏放數據和程序,CPU用於指令運行,程序還是數據結構+算法。我說了這麼多廢話無非就是想說明這樣一個道理,電腦這東西萬變不離其中,掌握了基礎就掌握了它的大方向,爲什麼70年代大學裏學的計算機教程和現在的教程大多差不多,應爲這就是基礎,電腦就是這樣的,教材沒什麼革命性的變化。計算機專業的學生還是學那些數據結構算法原理操作系統原理計算機組成原理數字邏輯編譯原理”...... 當然還有基礎的高數,線數,外語等等。

       電腦的初學者總愛追逐一些新技術,什麼C#.NETEJB等等,學了半天,還是沒有掌握計算機學習的實質,基礎的薄弱導致後勁不足,這些東西還是同樣從基礎的東西發展起來的,數據結構算法原理仍舊是精髓。還有些愛好者總問學什麼語言好,其實語言只是編程思想的表達,頭腦裏數據結構有了,算法有了,邏輯關係有了,語言只是寫出來實施而已。各種計算機語言和開發工具現在都趨於大同,什麼Delphi,VC,C Builder,java 都差不多太多,怎樣根據實際情況,用合理的高可用性方案實施一個具體項目纔是關鍵,語言的選擇是次要的。爲什麼有些人學什麼語言都快,就是因爲他基礎紮實,看破了語言這個表面。語言不會是一個程序員的障礙,障礙只是思維方式。我用過不少語言,不過我都覺得差不多,再學新的也會很快,是否採用新的語言,這要根據實際情況而定。

       初學者應該怎樣學習電腦呢,我推薦一個讀書方案,其實都是些大學教材,我覺得基礎很重要,從基礎開始是絕對唯一的一條路,當然毅力也很重要,這關係到你是否能夠自始至終,循序漸進。 不知不覺做軟件已經做了十年,有成功的喜悅,也有失敗的痛苦,但總不敢稱自己是高手,因爲和我心目中真正的高手們比起來,還差的太遠。世界上並沒有成爲高手的捷徑,但一些基本原則是可以遵循的。

 

  1. 紮實的基礎。

    數據結構、離散數學、編譯原理,這些是所有計算機科學的基礎,如果不掌握他們,很難寫出高水平的程序。據我的觀察,學計算機專業的人比學其他專業的人更能寫出高質量的軟件。程序人人都會寫,但當你發現寫到一定程度很難再提高的時候,就應該想想是不是要回過頭來學學這些最基本的理論。不要一開始就去學OOP,即使你再精通OOP,遇到一些基本算法的時候可能也會束手無策。  

 

    2. 豐富的想象力。

    不要拘泥於固定的思維方式,遇到問題的時候要多想幾種解決問題的方案,試試別人從沒想過的方法。豐富的想象力是建立在豐富的知識的基礎上,除計算機以外,多涉獵其他的學科,比如天文、物理、數學等等。另外,多看科幻電影也是一個很好的途徑。

 

    3. 最簡單的是最好的。

    這也許是所有科學都遵循的一條準則,如此複雜的質能互換原理在愛因斯坦眼裏不過是一個簡單得不能再簡單的公式:E=mc2。簡單的方法更容易被人理解,更容易實現,也更容易維護.遇到問題時要優先考慮最簡單的方案,只有簡單方案不能滿足要求時再考慮複雜的方案。

 

   4. 不鑽牛角尖。

    當你遇到障礙的時候,不妨暫時遠離電腦,看看窗外的風景,聽聽輕音樂,和朋友聊聊天當我遇到難題的時候會去玩遊戲,而且是那種極暴力的打鬥類遊戲,當負責遊戲的那部分大腦細胞極度亢奮的時候,負責編程的那部分大腦細胞就得到了充分的休息。當重新開始工作的時候,我會發現那些難題現在竟然可以迎刃而解。

 

  5. 對答案的渴求。

   人類自然科學的發展史就是一個渴求得到答案的過程,即使只能知道答案的一小部分也值得我們去付出。只要你堅定信念,一定要找到問題的答案,你纔會付出精力去探索,即使最後沒有得到答案,在過程中你也會學到很多東西。

 

  6. 多與別人交流。

    三人行必有我師,也許在一次和別人不經意的談話中,就可以迸出靈感的火花。多上上網,看看別人對同一問題的看法,會給你很大的啓發。

 

  7. 良好的編程風格。

    注意養成良好的習慣,代碼的縮進編排,變量的命名規則要始終保持一致。大家都知道如何排除代碼中錯誤,卻往往忽視了對註釋的排錯。註釋是程序的一個重要組成部分,它可以使你的代碼更容易理解,而如果代碼已經清楚地表達了你的思想,就不必再加註釋了,如果註釋和代碼不一致,那就更加糟糕。

 

  8. 韌性和毅力。

    這也許是"高手"和一般程序員最大的區別。A good programming is 99 percents try hard and 1 percent  inspiration。高手們並不是天才,他們是在無數個日日夜夜中磨練出來的。成功能給我們帶來無比的喜悅,但過程卻是無比的枯燥乏味。你不妨做個測試,找個10000以內的素數表,把它們全都抄下來,然後再檢查三遍,如果能夠不間斷地完成這一工作,你就可以滿足這一條。

 

    這些是我這幾年程序員生涯的一點體會,希望能夠給大家有所幫助。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章