對程式設計初學者來說,或者對仍在大學接受高等教育,即將成為程式設計工作者的人來說,IT界的技術風潮是不可追趕的。很多人扔掉大學計算機基礎課程的課本,而去購買許多看起來很高上大的“程式設計寶典”,我不想說這些裝逼,也許是個人的學習方式不同,我只是覺得如果他們把追趕這些時髦技術的時間多花一點在基礎的課程上應該是可以走得更遠的。
計算機技術不等於程式設計技術
很多人把我們學計算機的當成是修電腦的,很多計算機專業的人對此非常反感。也有人把我們學計算機的當成是寫程式的,這難道就對了麼?很多在校的學生就會這麼認為,認為學計算機就是學程式設計,計算機專業就是程式設計專業,也只上和程式設計有關的課程,其他和程式設計關係不大的計算機基礎課程統統不管,這令我非常詫異。
其實程式設計只是計算機技術應用過程中一種複雜性最低的勞動,這就是為什麼IT業最底層的人是程式設計師(CODER)。計算機技術包括了多媒體,計算機網路,人工智慧,模式識別,管理資訊系統等等這些方面。程式設計工作只是在這些具體技術在理論研究或者工程實踐的過程中表達演算法的過程。程式設計的人不一定對計算機技術的瞭解就一定很高。而一個有趣的現象是,不少大師級的計算機技術研究者是不懂程式設計的。網上的炒作和現實中良好的工作待遇把程式設計這種勞動神祕化了。其實每一個程式設計師心裡都明白,自己這些東西,學的時候並不比其它專業難,所以自然也不會高檔到哪裡去。
死記硬背,沒有靈活應用
我見過一本女生的《計算機網路原理》教材,這個女生像小學生一樣在書上劃滿了橫槓槓,筆記做得滿滿的,列印出來一定比教材還厚。我不明白的是,像計算機網路原理這樣的課程有必要做筆記?我們的應試教育的確害了不少學生,在上《原理》這一類課程的時候許多學生像學《馬列原理》一樣逐字背誦記憶。這乃是我見過的最愚蠢的行為。所謂《原理》,即是需要掌握它為什麼這樣做,學習why,而不是how(怎樣做)。極端認真的學生背下乙太網的網線最大長度,資料幀的長度,每個欄位的意義,IP報頭的格式等等,但是忘了路由的原則,忘了TCP/IP協議設計的宗旨。總之許多人花了大量的時間把書背得滾瓜爛熟卻等於什麼也沒學。
對於程式語言的學習也一樣,這裡拿C++舉例,很多學生都死扣C++語法的細節不放,看了很多C++教程,甚至是在網上也學習很多關於C++語法的課程。但是在寫程式的時候突然發現又忘記了這些語法,然後再繼續去翻書,這種場景各位應該不少遇到吧。有個師弟就跟我說:“C++太難了,學了這裡忘了那裡,學了繼承忘了模板。”我的回答道:“你不去學就容易了”。我並沒有教壞他,只是告訴他,死摳C++的語法就和孔已己炫耀茴香豆的茴字有幾種寫法一樣毫無意義。你根本不需要對的C++語法太關心,動手程式設計就是了,有不記得的地方一查MSDN就立馬搞定。我有個結論就是,實際的開發過程中對程式語法的瞭解是最微不足道的知識。這是為什麼我在為同學用Basic(我以前從沒有學過它)寫一個小程式的時候,只花了半個小時看了看語法,然後再用半個小時完成了程式,而一個小時後我又完全忘記了Basic的所有關鍵字。
基礎沒學好,亂趕技術時髦
這是我想說的重點,大多數人都希望自己寫的應用或者網站能儘快上線,然後賺很多白花花的銀子,這也無可厚非,畢竟我們的程式碼總是需要有商業價值。但是,我覺得這種想法對那些已經真正進入軟體行業的人來說是合理的,但是對大部分(注意我說的是大部分,在校創業的也有一部分)在校的準程式設計師來說,這種想法是要不得的,一個並未進入到行業競爭中來的初學者最大的資本便是他有足夠的時間沉下心來學習基礎性的東西,學習why而不是how。時髦的技術往往容易掌握,而且越來越容易掌握,這是商業利益的驅使,為了最大化的降低軟體開發的成本。但在IT領域內的現實就是這樣,越容易掌握的東西,學習的人越多,而且淘汰得越快。但基礎學紮實了,無論今後出來什麼新技術,再怎麼變幻莫測,它總是架在計算機原理上的,到時候你還不是對它手到擒來?
這裡有一個和我有關的例子,大家可以看看:
在大一時我還找不到開機按紐,而我的一位同學已經會寫些簡單的彙編程式了。我把大二的所有時間花在了彙編,計算機體系結構,資料結構,作業系統原理等等這些課程的學習上,而他則開始學習HTML和VB,並追趕ASP的潮流。大三的時候我開始學習Windows作業系統原理,學習SDK程式設計,時間是漫長的,這時我才能夠用VC開發出象模象樣的應用程式。我曾一度因為同學的程式已經能夠執行而自己還在學習如何建立對話方塊而懊惱不已,但臨到畢業才發現自己的選擇是何等的正確。和我談判的公司開出的薪水是他的兩倍還多。下面有一個不很恰當的比方:假設學習VB程式設計需要4個月,學習基礎課程和VC的程式設計需要1年。那麼如果你先學VB,再來學習後者,時間不會減少,還是1年,而反過來,如果先學習後者,再來學VB,也許你只需要1個星期就能學得非常熟練。這是一個很典型的例子,在大學裡,你的主要任務還是學好基礎,我聽很多學弟們經常把《計算機組成原理》《網路原理》的課程逃掉去實驗室機房做一些WEB開發,個人覺得是非常愚蠢的做法。
說了這麼多,這也算是我作為一個過來人的心得,如果你還是在校的學生,或者是剛要進入IT行業的初學者,我真摯地希望,我的這些忠告可以在你未來的職業生涯上派上用場。
本文轉載自:http://news.html5tricks.com/old-programmer-advice.html
相關閱讀
評論(0)