這個問題太寬泛,我看到這個問題,一直在想如何回答,想想這個問題包含的東西太多,無法開始。
我在一家外企做編程工作,我的很多同事除了問如何提高自己的技術以外,還會會問一個問題怎么提高自己的英文水平,能夠和老外溝通。
其實想一想這兩個問題其實是一個問題,那就是怎么學好一門語言?英語是和人溝通的工具,而編程語言是和計算機溝通的工具。
想一想,我們是怎么學習漢語的?有多少人可以正常的聽說讀寫漢語,但是又有多少人可以被認為是熟練,或者掌握了漢語,甚至說是語言大師?
前者多而后者少。編程語言也一樣,很多基本掌握能夠運用的人,但是能被稱為熟練或者專家的人那是很少。
以上那么多廢話,主要是想表達一個意思,那就是編程語言并不難學,但是要學好很難。
那好吧,就怎么學習編程給一點我的看法,拋磚引玉吧:
第一,編程是實踐的學問,要動手編碼,這很重要,平時多寫一些,讓計算機給你反饋,畢竟溝通是雙向的。就好像英語一樣無論你記住了多少單詞,多少語法,你不開口說,不寫一些東西,那學習效果會大打折扣的。編碼的世界上本來沒有路,踩的坑多了也就成了路。
第二,要堅持學習,有計劃,可持續性的學習。我不反對一段時間內爆發性,集中性的學習,就好像學校里考試前突擊復習一樣。但是想學好一門東西需要持之以恒。見過一些人包括我自己,覺得這個技術很好,那個也不錯,就都想學,結果都沒學好。
第三,要讀經典,經典的著作如<thinkinginJAVA>,經典的源碼。學語言需要看大師級作品。學習語言也一樣,需要讀大師級的開源代碼,我曾經度過structs的源碼(暴露年齡了),可能現在一點也不記得了,但是我想我在代碼結構,編程風格上是獲益匪淺的。經常讀,反復讀。
第四,多交流。多和比自己牛的請教,看看別人是怎么理解的,多分享自己的看法和經驗,看看別人是怎么運用的。
第五,選擇和運氣,如果有一個好的項目和,項目組,里面的人都樂意分享,那么對成長是很有幫助的。
最后,語言只是工具,我們要傳達給計算機的意思才是最重要的。那就是解決問題的邏輯和思想,最后一定是這些。這就好像語言大師用你想不到的詞和句子表達你想像不到的意境一樣。