這篇文章是寫給那些真心要編程的人看的——那些憋著一股狠勁兒,一定要做出個(gè)什么真東西的人;而不是那些“聽說編程好玩”的人。在我看來,這些人都不太可能真的整出個(gè)像樣的東西來。
1. “只用晚上、周末的業(yè)余時(shí)間學(xué)習(xí)”很不靠譜
無論從我個(gè)人經(jīng)驗(yàn),還是眾多訪談的結(jié)論來看,只用晚上和周末等業(yè)余時(shí)間來學(xué)習(xí)編程是十分糟糕的辦法。斷斷續(xù)續(xù)的學(xué)習(xí)方式,你的腦子根本沒機(jī)會(huì)養(yǎng)成編程式的思維方式,你很難把之前學(xué)習(xí)的內(nèi)容撿起來。一定要把你的時(shí)間盡量多的利用起來。
一種改善的方法是參加“編程訓(xùn)練營”之類的項(xiàng)目;你不但要花整整九周時(shí)間,還要花費(fèi)一筆不小的學(xué)費(fèi)。這些付出可以對(duì)你有所約束,督促你學(xué)到東西。你必須全情投入,否則錢和時(shí)間就打水漂了。
2. 忘掉 Codecademy.com
“我用 Codecademy 學(xué)會(huì)編程了!”
不知道有多少人這么說過了。但是如果持續(xù)的觀察六到八個(gè)星期之后,這些人就都歇菜了。
我告訴你們?yōu)槭裁从肅odecademy學(xué)習(xí)不長久:
你永遠(yuǎn)只是在瀏覽器里、在Codecademy網(wǎng)站里編程;學(xué)到JavaScript、Python、Ruby的語法是挺好,但是從課程里你也只能學(xué)到這些;其實(shí)這些你從別處也都能學(xué)到。
你不會(huì)學(xué)到如何搭建開發(fā)環(huán)境。就憑你在Codecademy學(xué)到的那點(diǎn)兒東西,哪怕你只想做一丁點(diǎn)兒的小項(xiàng)目,你都不知道該從哪兒開始。
對(duì)于只有一點(diǎn)點(diǎn)編程經(jīng)驗(yàn)的人來說,搭建自己的開發(fā)環(huán)境是很有挑戰(zhàn)性的一件事兒。你需要自己把這件事兒搞定。
3. 做一個(gè)真正的、你想做的項(xiàng)目
在你想做的項(xiàng)目里,先找一個(gè)小的來做。我做的第一個(gè)項(xiàng)目叫做“今日所學(xué)”。軟件里只有一個(gè)文字輸入框,你每次輸入一些文字,軟件按照時(shí)間降序來顯示輸入內(nèi)容的列表。僅此而已。
你的第一個(gè)項(xiàng)目一定就是一坨屎。但是它是完整的項(xiàng)目,而且是你完成的。這才是最牛逼的地方。
4. 你的代碼要建立在你之前做過的項(xiàng)目之上
我每天寫代碼,我都會(huì)把當(dāng)天所學(xué)的一兩個(gè)知識(shí)點(diǎn)放進(jìn)去,這樣我下一次編程時(shí)就會(huì)寫的更好。你會(huì)不斷的從你的代碼庫里引用老代碼,或從網(wǎng)上扒來的代碼。一旦你真的懂了這些代碼,你就能把它們用起來。
5. 別拷貝粘貼別人的代碼!
Tommy Nicholas去年12月寫的博客里也提到了這個(gè)觀點(diǎn)。只有你把代碼敲出來,你才能真的學(xué)到東西,你才能發(fā)現(xiàn)你對(duì)某些代碼還沒弄透,也希望你去google一下你的疑問,這樣才能越到越來越多的東西。
6. 別在別人面前得瑟“我在學(xué)編程呢!”,除非面對(duì)一個(gè)高手,你要求教。
開始學(xué)編程之后,你要為自己找到一兩個(gè)編程老師帶著你學(xué),但別學(xué)了一點(diǎn)就在那些不會(huì)編程的朋友面前窮顯擺。
我一直相信,如果你把想做的事兒說了出去,那事兒就永遠(yuǎn)只能停留在你嘴上了。所以除非對(duì)方是你可以請(qǐng)教的老師,不然就閉上嘴,低下頭,老老實(shí)實(shí)編你的程。
空談?wù)`國?。?/font>
7. 編程就是失敗無數(shù)次后弄清為什么。很痛?很挫???很正常。
編程就是要重復(fù)的犯錯(cuò)誤,犯重復(fù)的錯(cuò)誤,弄清楚錯(cuò)在哪兒,再改正錯(cuò)誤。下次再碰到相似問題(你一定會(huì)碰到的),你就會(huì)想起之前蹂躪你的那些代碼和你的對(duì)策,吃N塹,長一智。
當(dāng)然,搞定編程的成就感也會(huì)讓你爽到內(nèi)傷?!澳菛|西是我想出來滴!”的快感是我活著的動(dòng)力!我為之著迷!但獲得快感的路也灰常艱辛。不斷尋找你的動(dòng)力,不斷前進(jìn)!
8. 別再糾結(jié)應(yīng)該學(xué)什么,開干!
我一朋友的朋友總是沒完沒了的問我各種磨唧問題。他試圖在正式開始前看清所有可能會(huì)搞不定的地方。
這是一種最操蛋的學(xué)習(xí)方式。正確的方法是:選門語言(Ruby 或 Python)、買本剛出版的書、把自己當(dāng)個(gè)白癡、立馬開始學(xué)!立馬開始第一章!有必要就把第一章再看一遍!你根本沒法想象有多少知識(shí)是你不知道的!不過沒關(guān)系,你會(huì)慢慢都搞明白的。大家都是這么過來的。