這篇文章是寫給那些真心要編程的人看的——那些憋着一股狠勁兒,必定要作出個什麼真東西的人;而不是那些「據說編程好玩」的人。在我看來,這些人都不太可能真的整出個像樣的東西來。
1. 「只用晚上、週末的業餘時間學習」很不靠譜
不管從我我的經驗,仍是衆多訪談的結論來看,只用晚上和週末等業餘時間來學習編程是十分糟糕的辦法。斷斷續續的學習方式,你的腦子根本沒機會養成編程式的思惟方式,你很難把以前學習的內容撿起來。必定要把你的時間儘可能多的利用起來。
一種改善的方法是參加「編程訓練營」之類的項目;你不但要花整整九周時間,還要花費一筆不小的學費。這些付出能夠對你有所約束,督促你學到東西。你必須全情投入,不然錢和時間就打水漂了。
2. 忘掉 Codecademy.com
「我用 Codecademy 學會編程了!」
不知道有多少人這麼說過了。可是若是持續的觀察六到八個星期以後,這些人就都歇菜了。
我告訴大家爲何用Codecademy學習不長久:
你永遠只是在瀏覽器裏、在Codecademy網站裏編程;學到JS、Python、Ruby的語法是挺好,可是從課程裏你也只能學到這些;其實這些你從別處也都能學到。
你不會學到如何搭建開發環境。就憑你在Codecademy學到的那點兒東西,哪怕你只想作一丁點兒的小項目,你都不知道該從哪兒開始。
對於只有一點點編程經驗的人來講,搭建本身的開發環境是頗有挑戰性的一件事兒。你須要本身把這件事兒搞定。
3. 作一個真正的、你想作的項目
在你想作的項目裏,先找一個小的來作。我作的第一個項目叫作「今日所學」。軟件裏只有一個文字輸入框,你每次輸入一些文字,軟件按照時間降序來顯示輸入內容的列表。僅此而已。
你的第一個項目必定就是一坨屎。可是它是完整的項目,並且是你完成的。這纔是最牛逼的地方。
4. 你的代碼要創建在你以前作過的項目之上
我天天寫代碼,我都會把當天所學的一兩個知識點放進去,這樣我下一次編程時就會寫的更好。你會不斷的從你的代碼庫裏引用老代碼,或從網上扒來的代碼。一旦你真的懂了這些代碼,你就能把它們用起來。
5. 別拷貝粘貼別人的代碼!
Tommy Nicholas去年12月寫的博客裏也提到了這個觀點。只有你把代碼敲出來,你才能真的學到東西,你才能發現你對某些代碼還沒弄透,也但願你去google一下你的疑問,這樣才能越到愈來愈多的東西。
6. 別在別人面前得瑟「我在學編程呢!」,除非面對一個高手,你要求教。
開始學編程以後,你要爲本身找到一兩個編程老師帶着你學,但別學了一點就在那些不會編程的朋友面前窮顯擺。
我一直相信,若是你把想作的事兒說了出去,那事兒就永遠只能停留在你嘴上了。因此除非對方是你能夠請教的老師,否則就閉上嘴,低下頭,老老實實編你的程。
空談誤國啊!
7. 編程就是失敗無數次後弄清爲何。很痛?很挫敗?很正常。
編程就是要重複的犯錯誤,犯重複的錯誤,弄清楚錯在哪兒,再改正錯誤。下次再碰到類似問題(你必定會碰到的),你就會想起以前蹂躪你的那些代碼和你的對策,吃N塹,長一智。
固然,搞定編程的成就感也會讓你爽到內傷。「那東西是我想出來滴!」的快感是我活着的動力!我爲之着迷!但得到快感的路也灰常艱辛。不斷尋找你的動力,不斷前進!
8. 別再糾結應該學什麼,開幹!
我一朋友的朋友老是沒完沒了的問我各類磨唧問題。他試圖在正式開始前看清全部可能會搞不定的地方。
這是一種最操蛋的學習方式。正確的方法是:選門語言(Ruby 或 Python)、買本剛出版的書、把本身當個白癡、立馬開始學!立馬開始第一章!有必要就把第一章再看一遍!你根本無法想象有多少知識是你不知道的!不過不要緊,你會慢慢都搞明白的。你們都是這麼過來的。
祝你好運。
英文原文:Zack Shapiro
翻譯:張飛編程