技術之美[程序人生]開博的感受、如何學習編程、學習方法總結

作者:egg  微博:http://weibo.com/xtfggef


本文就是描述下自己近期的一點想法,隨意下筆,思緒有點亂,難免前後不着調,請讀者朋友們諒解。最近總被人稱爲老師或者您,有不少TX發郵件給我或者加我QQ問一些問題。我很感謝大家對我的看重及信任!其實我不是老師,也不是什麼大牛,只是一個即將畢業的本科生。


當然,我是非常願意幫助大家解決一些問題。問的最多的也就是到底該怎麼學習編程、學習Java?我能理解這些同學的心情,因爲我們都是從初學者走過來的,每個人都曾迷茫過,能清晰的找到適合自己發展的道路很不容易,因爲不僅僅是初學者在問我,有些是已經工作了的,也有一些是在讀的研究生。學習技術,很容易走彎路,我常說的一句話就是:彎路走的多了,自然就直了。這句話是我用來形容自己的。說實話,我從高三開始學習編程,加上本科三年的編程學習,到頭來卻一塌糊塗,並不是自己沒有下功夫,自己一直比較努力,只是因爲學習方法不對,常常浮於知識的表層,難以看到知識的真諦,直到大半年前我才意識到問題所在,可惜時光不可倒流。所以那些剛上大一,甚至高中的同學,如果你們熱愛計算機,熱愛編程,並且看到了此文,我想你會有很大的收貨。


真正寫博客快半年了,有很多體會,從開始的隨便寫寫到後來的慢慢重視,再到現在的形影不離。其中夾雜着自己很多的情感變化。開始主要想記錄一些常用的知識點,以備後面使用,後來看到了劉未鵬(http://blog.csdn.net/pongba/)以及周磊(http://blog.csdn.net/v_July_v)的博客,不禁使我震驚!他們對事物的思考讓我感動,同時最重要的是他們通過博客幫助了很多人,包括我在內。頓時我認識到,我真正該做些什麼了。於是乎開始認真寫博客,可是寫出一篇漂亮的博文並不容易,常常我會花費一週的時間去完成它,期間偶爾會有放棄的想法。但是,當我看到大家給我的評論以及大家對於高質量博文的期待時,我更加的充滿信心,有堅強的力量繼續寫下去!現在,對我而言,已經離不開它,我希望在記錄自己學習過程的同時,能幫助更多的人,這是技術學習的要點,要學會分享!


經常有一些TX問我一些問題,很基礎的一些問題,而我通常都會認真的去解答,當我瞭解了情況之後才發現,很多人都在一些計算機不怎麼發達的地區,或者是一些中專學校,他們很想去好好研究計算機,學習編程,但是實在沒有條件,沒有學習或者師資環境,我覺得這些同學,你們能在這樣的環境下,常常去CSDN論壇或博客,真是難得。此時我不禁想到本科裏那麼多的同學,幾乎90%以上的同學都是被調劑到計算機專業,造成他們大學四年被迫的去接受自己不喜歡的東西,最重要的是那些真正喜歡計算機的孩子卻享受不到這些學習的軟硬件資源。不禁感慨現在教育資源分配的不均勻。我真心希望能夠通過博客,來幫助更多需要幫助的人!


談到怎麼學習編程,以及簡單的職業規劃,我想就自己的認識說說,畢竟我不是專業的職位規劃師,只能談談自己的理解。這裏要針對不同的人說。如果現在你只是一個剛步入大學的計算機專業的學生,這裏默認你是喜歡計算機,並且打算長期拼搏在軟件開發的事業上,那麼恭喜你,你應該很慶幸能在最需要的時刻看到這篇文章!因爲此時的你有一大把時間可以去做自己喜歡的事情,你需要做的就是規劃好自己的大學生活。大學四年很關鍵,雖然你也許在老師那裏學不到太多的東西,但是,此時的你應該具備自己學習的能力,俗話說師傅領進門,修行在個人,這句話沒錯。你需要在大學裏鍛鍊好各方面的能力,這樣才能在畢業的時候快速融入社會。作爲軟件工程專業的我,想從專業學習方面多談談。第一條就是學校開設的專業課一定要學好。這條很難做到,而且也很少有人能做的好。我記得我大一大二的時候,每當上C語言或者數據結構課的時候,自己就抱着一本從圖書館借來的書看,什麼《21天學會JavaWeb》、《30天學會SSH》等,這些書說實話真沒什麼含金量,尤其是大一打基礎的時候。從來都沒有好好聽過課,現在想起來,那時的自己好愚蠢!哪些課程我們該好好學習呢?我認爲,數據結構,計算機算法,操作系統,數據庫,計算機網絡,這五門課一定要學紮實了,趁着有時間,一定要多看看,不光要把理論的一些東西理解了,還要加一些實驗。對於數據結構和算法,這是程序的精髓,不管後面學什麼語言,思想都不變。一定要常常寫一些程序,鍛鍊自己的編程能力,建議去一些OJ網站,比如說北大、浙大、杭州電子科技大的OJ都不錯!有條件的話,組隊參加一些編程比賽,如:ACM、百度之星、編程馬拉松、微軟的ImageCup等。如果你能在上述比賽中取得不錯的成績,你的編程能力一定會得到認可,找工作會很輕鬆。如果你能在大學期間,累計編碼超過10W行,那麼你的水平肯定和別人不一樣,如果能超過15-20W行,那你可以算是一個高手了。操作系統方面,我們上這門課的時候,老師就以Linux當實驗環境,當時選的是Red Hat,你一定要趁着這個機會多學習點兒Linux方面的知識,除了基本的理論如進程、線程、段頁式存儲等,還要學習一些命令,會寫簡單的shell腳本,學會awk、sed等命令。如果你能再去研究一下內核,自己編譯內核什麼的,這會給你帶來意想不到的驚喜。有人經常問我,對於Linux,我們要學到什麼程度呢?我覺得,如果你將來不是從事系統管理的工作,那麼只要能保證現在把你放在linux的一個控制檯裏,你能幹所有想幹的事情,事實上,凡是桌面系統能做的事兒,命令行裏都能做,而且效率會更高。數據庫和網絡這些課的話,掌握基本的概念,平時學習的時候多做做實驗,學踏實了就行。其實軟件工程還有很多課程,如微機原理、彙編、計算機體系結構、圖形圖像等,這些課程偏向底層,你如果感興趣,那麼就去研究。


還想告訴新人的一件事,就是一定要養成鍛鍊身體的好習慣,做了這麼久的程序員,我都覺得身體已經沒有什麼靈活性了,除了頭和四肢,其他部位感覺都連成整體了。因爲我們太缺乏鍛鍊了。長期坐着學習和工作,慢慢的已經養成了惰性,加上本來就鍛鍊機會比較少,所以,我們程序員的身體多數都會越來越不行。如果你現在是大一,我想告訴你一個好的方向,就是去學習跳街舞,這是我多年來的一個夢想,每當我看到跳街舞的人們,心裏充滿了羨慕。爲什麼這麼說?第一、街舞非常鍛鍊身體,同時又需要的場地比較小,可以說任意地方都可以跳。第二、街舞很炫,如果你能隨便的跳上一段breaking,托馬斯,大風車什麼的,那麼我敢保證,走到哪兒你都是很受歡迎的人。同時,你可以多打打籃球、網球,去遊游泳,有句話說的好,錯過的東西,你都會補回來的!大學的時候,免費的操場,廉價的游泳館籃球館,我們沒有好好鍛鍊身體,等日後年長了,花着錢去健身房,去打球,生活就是這樣。


如果你是大三、大四的學生,你的情況不一樣了。因爲你即將面臨就業,此時我建議該考慮找找實習了。雖然也許你大一大二的基礎課依然沒有學好,那麼請你現在努力,一定要補回來。否則你很難找到你嚮往的好工作!每年會有兩次找工作的機會,一次是春季校招,一次是秋季校招。這兩次的側重點是不同的。春季校招有兩種情況,一種是面對本年畢業的學生,做一次補招,而另一種情況,也是大多數的情況,就是面向明年畢業的學生,招暑期實習生。秋季校招都是面向明年畢業的應屆生,這是正式的招聘,錄取後直接籤就業合同的。舉個例子來說,我是2013年7月份畢業,那麼在2012年的秋季正是我們這屆學生找工作的黃金時期,到了2013年春季,雖然還有一些春季補招的機會,但是很少。大多數都是在招2014年畢業的學生,暑期實習。對於大三的學生,這是一個很好的機會,很多人都不知道,從三月份開始,尤其是互聯網企業都會進行大量的校招,每年3-5月份,如果通過了面試,拿到了offer,就意味着你暑期的2個月會去實習,等暑期一完就是秋季校招,只要你幹得好,offer會優先發到你手裏。當大家還每天到處聽宣講會、投簡歷的時候,你已經offer到手,沒準可以出去旅旅遊了。我們這屆是比較悲劇的一屆,不管本科還是研究生,就業情況都不好。所以在我沒有拿到稱心如意的offer的時候,一氣之下,又去找了實習。對於大三大四的同學還有一條路,那就是考研,現在考個研究生太有必要了,我感覺我走到哪兒都是在夾縫中成長。如果你的成績很好,你可以考計算機專業的碩士,如果成績沒有那麼強,但是想上一些名校,那我建議你考軟件工程專業,相對容易些。


如果你已經是一名在讀的研究生,我強烈建議你在學校的時候,好好把你所研究的方向儘量走的深入一點,如果你將來不打算繼續做科研,那麼你應該多考慮一下實際工作需要的東西。研究生比本科生多的,就是你的研發能力,包括計算機基礎、數學功底、學習能力等方面,你要利用你的資源,多去看一些算法,多寫寫代碼,畢竟這些纔是工作需要的東西。


不論是本科生,還是研究生,畢業找工作的時候都一樣,大家面臨同樣的機會,面試官不會因爲你是本科生,就讓着你點兒。所以,對於本科生,實說有點兒吃虧,畢竟他們比你多讀兩到三年的書。在平時的學習過程中,要多注意基礎方面的學習,企業對於應屆生的要求,並不是你有多少項目經驗,而是你的潛質,包括快速學習能力和良好的解決問題的思路。經驗有更好,沒有也沒事兒。好的基礎會讓你更快的掌握其他上層方面的知識。所以,在校期間,一定要打好自己的基礎,不要浮於知識的表層,學習一定要深入,理解知識的內在原理,切記走馬觀花


寫到此處,我又突然想到個事兒,就是總有同學會問各種各樣的問題,在這兒我教大家一下,在和你認爲比較牛的人,第一次聊天的時候,要先自己想好你要問什麼,儘量先做個自我介紹,讓對方明白你的意思。其實我之前也做得不好,大三那會兒,我突發奇想,想自己做個搜索引擎,在網上找了不少資料也沒有一個架構思路,後來看到一個做過搜索引擎的人,加了Q後,我第一句就是:我看您之前寫過搜索引擎,您能給我介紹下嗎?這句話,現在想想真是傻呆了,這麼大的問題,人家怎麼給你解答?所以當時就迎來當頭一棒,那個TX發給我一個連接,我打開一看,標題是:關於最近有人問問題的說明...我看了後真的不是滋味...不過很感謝這位TX,讓我對這事有了新的認識,如今也有不少同學這樣問我,前幾天有人聽說我是做雲計算的,上來就問我:雲計算是幹什麼的?對於這個問題,真的不好回答,雲計算是個很廣泛的概念,幾句話絕對講不清。當然,我還是比較nice的,也沒有不耐煩,和那位同學說,希望他自己去搜索一下,概念性的東西網上很多,自己查查就清楚了。還有一點就是大家問問題的時候,儘量要選擇晚上,因爲白天都得上班,工作時間聊天並不是一件值得提倡的事兒。雖然我很願意給大家一些幫助,但是工作的時候還是希望能不被打擾。所以最好的做法就是,在晚上的時候,儘量先做個自我介紹,把你的情況說清楚了,你有什麼困惑,需要什麼幫助,都要提前想好。別在聊天的時候東一句西一句,你要知道對方不一定想和你來回的聊,每個人都有自己的事情。總有一天你也會變成高手,你也會有新人問你同樣的問題,到時候你就有所體會了。上面是一些建議性的東西,主要就是想教大家一些交流的技巧。


寫了這麼多,也該收尾了,想到哪兒說到哪兒,恕不連貫。但是句句發自肺腑,就是希望能儘自己的力量,來幫助新人們少走一些彎路!

有什麼問題,請聯繫我:http://weibo.com/xtfggef 或者留言,我每天都會上來處理的。感謝大家支持!

發佈了73 篇原創文章 · 獲贊 358 · 訪問量 217萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章