學編程的一些核心建議
這篇文章是去年寫的,經過了簡單修改。適合編程時間0-2年群體閱讀。ps: 只收藏不點贊是不對的,,,
我認為最重要的有三點
- 熱愛
- 努力(多做項目,每天學習編程 5小時以上)
- 解決問題的能力
這三點保證了其次最重要的就是
- 選好方向(深度和廣度都得保證,最好是80%時間專精保證深度,20%時間來涉獵各種知識保證廣度)
- 學會思考
1. 熱愛
編程這麼有趣的事,竟然還有錢賺(by c++ 之父)
這個幾乎是最重要的,我見過的所有大牛都是都編程無比熱愛。
我大一也迷茫過,「編程是我所喜愛的東西嗎?」,我花了一年時間來確認並給了肯定的答案,現在我非常喜歡寫 優雅的代碼,順便喜歡技術帶給我的 能力、自信、錢。
然後選擇方向上,最好由你的興趣決定,follow your heart
2. 努力
熱愛和努力往往決定了你在編程的路上能走多遠。
第一點做到了,這一點應該是順理成章的。
其中最重要的是,要 learn by doing。也就是做中學,多做項目,非常重要。讓你寫的程序從100行到1000行,再到萬行,就好比看著你創造的城市在一點點的擴大,當然要確保代碼的優美,時刻思考,不然那不是城市,而是垃圾堆。每碰到一個問題,解決它並思考它都可以讓你受益匪淺。
還有就是看書,仔細閱讀一本經典的書(做筆記、寫博客、思考、把理論付諸於實踐),勝過看十本普通的書,一百本爛書。所以選書很重要。練習、思考更重要。
總結一下,努力就是我後面說的 基本功 和 熟練度 的積累過程,記住量變導致質變
3. 解決難題的能力
這個複雜一點,是程序員的 核心競爭力,我覺得解決問題的過程無外乎三點
- 透徹理解問題是什麼
- 弄清導致問題的根本原因
- 尋找最佳解決方案
有一種說法是面對 谷歌編程,面對 stackoverflow 編程,其實當你把這三點弄透,你就知道為啥了。你搜索之前應該弄懂前兩點,看前人的經驗來完成第三點。所以根本不是谷歌幫你編程,而是你在使用谷歌這個工具,最關鍵的還是你自己,不同人用谷歌搜索的效果是天差地別的。英文搜索質量遠高於中文搜索。
搜索的思想和谷歌技巧SimplyY 的博客:如何用好 Google 等搜索引擎
除了搜索的技巧,基本功、熟練度、膽量 也很重要
基本功
- 當然基本功很重要,不然你不可能真的能理解問題,比如你不會數據結構,然後面對這方面問題,肯定是一臉懵逼的。
- 說白了,當你真的懂了一個問題,問題的答案就是呼之欲出的。而透徹的懂一個問題,需要你對這個問題的方方面面有一定的了解和思考。
熟練度
無他,為熟能爾 (by 賣油翁)
量變導致質變,當你解決了數千個問題後,谷歌了上萬次,你會發現你再用谷歌,就是一目十行,眼睛跟老鷹一樣,瞬間就鎖定到了答案。
膽量
對於新手,編程學習的路途中有個膽量問題,對於絕大多數人這個問題還很嚴重。
- 谷歌不會,翻牆好難
- 英文好多,英語好難
- 自學好難,代碼、編程書看不懂,編程好難
- 這裡出 bug 了,debug 好難
- 做項目好難,我不敢寫有趣的項目
我還是 qq 問一下別人吧。
於是海量的伸手黨就出現了。
其實說白了,就是,大家都沒有解決這個問題的膽量,都不敢自己一個人去解決問題,總是在自己的安逸區里活著,雖然這是共性,但是一定要有意識的克服,不然你會一直沒有進步。
記得有人說過這樣一句話,在公司上班,假如技術上的大問題來了,而你沒有膽量去解決,而是總是交給別人,ok,別人就會一直進步,最後成為你的主管,你的大主管,你的大大主管,而你原地踏步,說不定還會被新來的淘汰。
並且,沒有膽量熟練度就無從談起,做有趣的項目就無從談起,你學的所有基本功就會持續荒廢,學而不用就會怎麼樣?忘記!
所以膽量是編程入門的 基石。
方向
深度和廣度都得保證,最好是80%時間專精保證深度,20%時間來涉獵各種知識保證廣度
選擇方向上,很大一部分是取決你的興趣的,你對演算法感興趣 or 工程 or 數據 or 優美的代碼,這個要慎重選擇,我花了半年時間才選擇的,多了解、多嘗試,發現自己的興趣點,再為之努力,潛下心來學習,挖深領域。
具體怎麼學
谷歌搜。
具體怎麼學編程 也是一個 待解決的問題,我的經驗就是看書、做項目、多思考,但是對於不同方向 具體細節是不一樣的,答案知乎、論壇里很多很多,學會如何高效學習是一件很重要的事情。
最後: 總結一下非常重要的東西
- 熱愛
- 努力(學會自學)
- 解決難題的能力
- 基本功
- 編程能力:語言語法、debug 能力、寫優雅的代碼、數據結構、演算法
- 底層知識:操作系統、計算機網路、編譯原理等
- 各領域特定知識:根據你的方向來
- 熟練度
- 膽量
- 工具(君子生非異也,善假於物也)
- 英語 非常重要
- 搜索:谷歌(學會用英文搜)
- 社區:github、stackoverflow等
- 各類英文文檔:MDN、dash(osx 專屬,全平台文檔利器在這裡http://devdocs.io/)
- 成果
- 紮實的基本功
- 多寫幾個有一定規模(純代碼量 3k 行以上)的有趣的項目,最好都發布在 github 上
- 等(看完十本經典編程書?)
http://devdocs.io/:
關於大學裡怎麼學編程的問題和專欄,我回答了不少大學生學編程的題目。
1. 大學生學習編程的典型問題解答 - 知乎專欄
2. 關於「如何學習編程」的我的一些回答 - 知乎專欄
推薦閱讀: