想學程式設計?這樣開始

Web開發者發表於2013-04-07

  去年九月我寫了一篇挺受歡迎的博文,叫 《想學Rails? 這樣開始》。 許多讀者看完文章後,當面或用Email向我提了大量問題;也有很多人真正投入到了Rails學習中。我也很自豪地向很多人推薦了這篇文章,因為其中的內容真的具有可操作性,並且對讀者真的有幫助。從那之後到現在,我的程式設計功力又長進了幾個甲子,於是又有了下面這篇文章,記錄我對“如何學程式設計”的再次思考。

  這篇文章是寫給那些真心要程式設計的人看的——那些憋著一股狠勁兒,一定要做出個什麼真東西的人;而不是那些“聽說程式設計好玩”的人。在我看來,這些人都不太可能真的整出個像樣的東西來。

  1. “只用晚上、週末的業餘時間學習”很不靠譜

  無論從我個人經驗,還是眾多訪談的結論來看,只用晚上和週末等業餘時間來學習程式設計是十分糟糕的辦法。斷斷續續的學習方式,你的腦子根本沒機會養成程式設計式的思維方式,你很難把之前學習的內容撿起來。一定要把你的時間儘量多的利用起來。

  一種改善的方法是參加“程式設計訓練營”之類的專案;你不但要花整整九周時間,還要花費一筆不小的學費。這些付出可以對你有所約束,督促你學到東西。你必須全情投入,否則錢和時間就打水漂了。

  2. 忘掉 Codecademy.com

“我用 Codecademy 學會程式設計了!”

  不知道有多少人這麼說過了。但是如果持續的觀察六到八個星期之後,這些人就都歇菜了。

  我告訴你們為什麼用Codecademy學習不長久:

  • 你永遠只是在瀏覽器裡、在Codecademy網站裡程式設計;學到JavaScript、Python、Ruby的語法是挺好,但是從課程裡你也只能學到這些;其實這些你從別處也都能學到。
  • 你不會學到如何搭建開發環境。就憑你在Codecademy學到的那點兒東西,哪怕你只想做一丁點兒的小專案,你都不知道該從哪兒開始。
  • 對於只有一點點程式設計經驗的人來說,搭建自己的開發環境是很有挑戰性的一件事兒。你需要自己把這件事兒搞定。

  3. 做一個真正的、你想做的專案

  在你想做的專案裡,先找一個小的來做。我做的第一個專案叫做“今日所學”。軟體裡只有一個文字輸入框,你每次輸入一些文字,軟體按照時間降序來顯示輸入內容的列表。僅此而已。

  你的第一個專案一定就是一坨屎。但是它是完整的專案,而且是你完成的。這才是最牛逼的地方。

  4. 你的程式碼要建立在你之前做過的專案之上

  我每天寫程式碼,我都會把當天所學的一兩個知識點放進去,這樣我下一次程式設計時就會寫的更好。你會不斷的從你的程式碼庫裡引用老程式碼,或從網上扒來的程式碼。一旦你真的懂了這些程式碼,你就能把它們用起來。

  5. 別拷貝貼上別人的程式碼!

  Tommy Nicholas去年12月寫的部落格裡也提到了這個觀點。只有你把程式碼敲出來,你才能真的學到東西,你才能發現你對某些程式碼還沒弄透,也希望你去google一下你的疑問,這樣才能越到越來越多的東西。

  6. 別在別人面前得瑟“我在學程式設計呢!”,除非面對一個高手,你要求教。

  開始學程式設計之後,你要為自己找到一兩個程式設計老師帶著你學,但別學了一點就在那些不會程式設計的朋友面前窮顯擺。

  我一直相信,如果你把想做的事兒說了出去,那事兒就永遠只能停留在你嘴上了。所以除非對方是你可以請教的老師,不然就閉上嘴,低下頭,老老實實編你的程。

  空談誤國啊!

  7. 程式設計就是失敗無數次後弄清為什麼。很痛?很挫敗?很正常。

  程式設計就是要重複的犯錯誤,犯重複的錯誤,弄清楚錯在哪兒,再改正錯誤。下次再碰到相似問題(你一定會碰到的),你就會想起之前蹂躪你的那些程式碼和你的對策,吃N塹,長一智。

  當然,搞定程式設計的成就感也會讓你爽到內傷。“那東西是我想出來滴!”的快感是我活著的動力!我為之著迷!但獲得快感的路也灰常艱辛。不斷尋找你的動力,不斷前進!

  8. 別再糾結應該學什麼,開幹!

  我一朋友的朋友總是沒完沒了的問我各種磨唧問題。他試圖在正式開始前看清所有可能會搞不定的地方。

  這是一種最操蛋的學習方式。正確的方法是:選門語言(Ruby 或 Python)、買本剛出版的書、把自己當個白痴、立馬開始學!立馬開始第一章!有必要就把第一章再看一遍!你根本沒法想象有多少知識是你不知道的!不過沒關係,你會慢慢都搞明白的。大家都是這麼過來的。

  祝你好運。

  英文原文:Zack Shapiro,編譯:@張飛alex

相關文章