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