【來信】
賀老師您好,今天才發現您的部落格,糾結很久的一些問題迫不及待地想老師指導一下。
現狀:
目前大二,就讀于桂林電子科技大學,
專業是電子資訊科學與技術,
興趣愛好是程式設計,職業定位是程式員。
但是大一沒有認真學習
c語言沒學好,資料結構和算法也是渣渣,這學期又學了點java,看了馬士兵的視訊,也打算在java方向發展。後面發現,程式設計的精華在于算法,然後今天又重新拿起了c語言課本和資料結構與算法分析。自從大二逐漸成熟後,對知識的擷取非常渴望,同時很喜歡看書,對英語也很感興趣,晚上看書一般都到1點半,
我的計劃是:
1,複習c語言,并且着重算法
2,英語(看的是資料結構與算法分析c語言描述英文版)
3,同時一邊花部分時間打好java基礎,等過段時間對算法和計算機有個比較系統的了解之後再選擇專一性的發展
4,多看書(喜歡心理學,看的也是英文版)
我的問題
1,什麼是程式員持續的競争力(除自學能力外,是否算法占重要角色)
按理說越老越富有經驗和競争力,什麼原因導緻很多程式員30歲以後跟不上技術的發展,他們和那些高手差距是什麼
2,我的計劃需要哪些改進,或者不合理的,算法是否都要用c語言寫出來(我的想法是用c語言,這樣就能學好算法同時又了解好c語言,但是又糾結,用c是面向過程的算法,這樣學出來的算法能否通用于面向對象程式設計)
3,是否c語言基礎牢固才能更好的了解一些經典的計算機書籍
4,不想做一個隻會用某種語言單純敲代碼的碼農,要成為一個創造者,系統的學習程式設計應該先後看哪些書,我不知道,算法,計算機結構,作業系統等方面先後順序。劉未鵬的《怎樣花兩年時間面試一個人》末尾提到一些前輩推薦的很多經典書籍,如果老師能從裡面和自己的經驗選出書籍就更好了。
5,現在大二了,好公司一般都是大四第一個學期或者大三就來招人了,很着急,不知道是否來得及,雖然明白程式設計是終身學習,不斷積累的過程。
【答複】
首先,我建議你可以将你的電信專業,與程式員定位結合一下。電子資訊科學中有很多事需要程式設計實作,我是電信的外行,單片機、嵌入式這兩個方向中應該是能直接結合的。
你的計劃不錯。一步一步地往前走,在學習上投入進去,拿出辦法,也就獲得主動。
你問的問題,很多我在中做過詳細的闡述。你有這麼多的“為什麼”,可以買一本看。這些話題在中也分散出現過,有時間自己浏覽。由于這幾天時間緊張,我也不展開說,概要談談自己的觀點。
1、在未來社會,自主學習能力是第一位的,算法很重要,但不是全部。越老越富有經驗和競争力在程式員身上同樣成立,“30歲”不做程式員,一類人是遭到淘汰,一類人是轉型做了其他更具價值的工作,技術的或者行業中其他的。兩者間的差別很多,專業基礎、學習能力、應對變化的能力、專業之外與人相處能力、自己的人生目标調整的能力等等,人生當中的其他可能性,自然也是存在的。
2、用c語言将算法全寫出來,可以,但如果時間不允許,倒不必強求。要有足夠的訓練量,掌握好“度”即可。目前為學算法,發揮好c的作用就行。算法問題不必局限在某種語言上,有一門語言用就行,而掌握面向對象程式設計,那是另外一個問題。
3、經典的計算機書籍很多,各方面的都有。我提倡博覽,實際也沒有一個定勢,說看某本書必須xx基礎牢固才行,可以互相交叉,互相促進。有時候,看過了一本經典,再學些其他之後,回頭再看,将有機會再獲得新的收獲。
4、可以參考計算機專業的培養計劃中相對應課程的開出順序,但也不必拘泥于此,介于你對經典的偏愛,我想提一點是,以自己能看下去作為選書标準。看書中,如果需要實踐,同步地實踐下去,不必追求一個大厚本,能從頭讀到尾。選書的過程,依據自己的學習程序和感受,沒有定數,自己掌握。另外,我不贊成“系統學習”的宏願,實踐為先,構造自己的系統為要。參考“”。
5、你急又怎樣?時間能為你而變慢?将前面列出的學習計劃紮實地推進下去,到适當的時間,注重将就業中需要表現的應用層面的能力做出一個安排。即使很早就能确定工作機關,但也并不是學習結束的時候,心中有這樣一個“系統學習”的大緻路線,但也能做到及時調整,不要浪費時間,不好隻鑽了學習這一門,充實的大學,自然能保證你自己的美好未來。