新手學習程式設計的最佳方式是什麼?
回答這個問題是我最近兩年來唯一的關注點。我覺得此處提及的許多資源儘管都很不錯,然而我卻注意到,成功的學生,無論使用哪種資源,往往都會在以下三個方面,比其他人有著更好的表現。
- 聚焦習慣而不是目標
- 獨自學習非常痛苦
- 專案實踐
聚焦習慣而不是目標
聚焦習慣而不是目標聽起來似乎不合常理,但是請聽我把話說完 - 這是一個有關平衡的問題。凡是和我共過事的人都知道,我有時就像傻子一樣,在一天內,引用《蝙蝠俠:俠影之謎》中 Ra's Al Ghul 的話多達 3-4 次。
Bloc 公司的投資者們對於我在董事會上頻繁地引用《蝙蝠俠:俠影之謎》中的片段作為開始,早已經煩透了。
R'As 告訴 Bruce:
“(當你的胳膊快要凍僵的時候,)按摩你的胸口,你的胳膊自然會暖和起來。”
如果你將精力放在在每星期程式設計 20-30 個小時的習慣培養上,成為一名 Web 開發者的目標很快就可以實現。如果你將目標設定為在數月內成為一名 Web 開發者,在什麼時候能可以達成目標以及距離目標還有多遠等不確定性的壓力之下,你反而可能會一無所獲。聚焦於習慣而不是目標。按摩你的胸口,你的胳膊自然會暖和起來。
因此,你現在應該做的是:在你的日程安排上,每天花15分鐘時間用於程式設計。不要多於15分鐘,每天只要15分鐘就夠了。如果你能在一星期之內堅持做下來而不找任何藉口,請試著把時間延長到一天20分鐘。不要試圖通過每天一小時的程式設計來過度擴充套件自己的能力,程式設計就是一場 10,000 小時的馬拉松,因此我們應該將精力集中在培養習慣上。與其在一天內花費大量時間學習程式設計,不如每天花費少量時間,但是能夠天天堅持,因為這樣更有效。
獨自學習非常痛苦
當我在學習 Web 開發時,在我的學習過程中,擁有一位導師和加入一個社群是兩個最大的組成要素。
- 擁有一位導師
大學期間,我曾在一家名叫 merge.fm 的小型創業公司工作。暑假期間,我與該公司的一位聯合創始人一起工作,我在此期間學到的東西比我之前一年在大學學到的還要多。跟隨一名經驗豐富的專業人士一起工作,可以真正地加速你學習的速度,你會了解到他們如何思考問題的,同時,也會發現自己的不足之處。這就是為什麼師徒制通常成為學習一門新技藝的預設標準的一個原因吧,因為它非常有效。
- 加入一個社群
我加入了的兩個社群,一個是 Illini Entrepreneurship Network(我們學校的一個學生組織),另一個是 Hacker News(一個面向黑客和創業者的大型線上社群)。
我沒有從 Hacker News 學到任何有關物件和類的知識,但是我學到了一些別的東西。我知道了沒人喜歡 JavaScript。我知道了 Ruby 程式設計師是程式設計領域的潮人。我還知道了 Bret Taylor, Rich Hickey, and John Carmack 都是程式設計世界的領袖人物,還有就是,那些真正關心員工的軟體公司,它們公司的廚房看上去就像興奮劑實驗室。
總之,我學會了如何說行話。當你和其他程式設計師一同工作的時候,這一點非常重要,也正因如此,才使你覺得自己就是一名程式設計師。
專案實踐
在學習 Web 開發的第一年,我動手實現了以下專案:
- 一個 Digg 的克隆版(來自 Sitepoint書上的 Rails 例子,我想現在它已經過時了)
- 一個線上購物應用程式(來自 Agile Web Development with Rails 4)
- 一個 GeekSquad-esque 應用程式(個人專案)
- 一個實時線上課堂應用程式(個人專案)
- 一個外語學習應用程式(課程專案)
我認為構建真實專案之所以非常重要的原因有很多,就我而言,最重要的一個原因是它充滿了樂趣。這恰恰是在傳統教育中嚴重缺失的,也正因如此,它才成為了諸多原因中最重要的一項。尋找如何開展專案實踐的參考資源,http://ruby.railstutorial.org/ 是一個不錯的選擇。
要具有“小強”精神
對於那些能堅持讀到此處的讀者們,我偷偷地增加了第四項內容。 Paul Graham 曾經對 Airbnb 的創始人說過:
“你們這些傢伙是不會失敗的,因為你們就像打不死的’小強’一樣”
一段時期,你可能會有放棄學習程式設計的想法。就像任何具有同樣價值的事情一樣,學習程式設計真的很難,有時你會覺得自己真的很笨。這就是為什麼第一項策略如此重要的原因 - 不要過度擔心是否已經取得進步,或者需要花費多長時間達成目標。你要做的就是每週堅持10-30個小時的程式設計。就像執著的’小強’一樣,你就不會失敗。
多年以前我說過一句話 - “成功貴在堅持(註解:亦可譯為‘生活中80%的成功源於堅持’)”,這句話經常被其他人引用。人們常常向我提及,他們想編寫一個劇本,他們想製作一部電影,他們想撰寫一本小說。那些最終成功實現目標的人,80%的做法是先行動起來。那些最終失敗的人,他們連這一點都做不到。這正是他們不能做成一件事情的原因,他們沒有去做。一旦你去做了,如果你真地去編寫電影劇本,或者撰寫小說,實際上,你的成功之路已走過大半。這就是我可以告訴你的我人生最大的成功經驗。其它的都是失敗的教訓。
-- Woody Allen(美國好萊塢著名電影導演)
作者:Roshan Choxi,美國線上程式設計學習公司 Bloc 聯合創始人/CEO
原文: What are the best ways for a complete beginner to learn programming
感謝: Jodoo 幫助審閱並完成校對。
P.S. 如果您喜歡這篇文章並且希望學習程式設計技術的話,請關注一下 復唧唧。
相關文章
- 新手程式設計入門先學什麼?程式設計
- 如何學習shell程式設計?Linux運維學習shell程式設計是什麼程式設計Linux運維
- 程式設計老手的哪些特點,是值得新手程式設計師學習的?程式設計師
- 成為優秀程式設計師的最佳學習方式程式設計師
- 學習程式設計先學什麼程式設計
- 程式設計師學習專案和程式碼的精髓是什麼?程式設計師
- 雲端計算是什麼?新手學習雲端計算的學習路線
- 都說python是最佳程式設計入門語言,為什麼你學習卻是如此坎坷?Python程式設計
- 招程式設計師的最佳方式是這樣的?程式設計師
- UI設計是什麼_UI設計學什麼?UI
- 為什麼程式設計師在學習程式設計的時候什麼都記不住?程式設計師
- 好程式設計師Java學習路線分享maven是什麼程式設計師JavaMaven
- java學習Java程式設計:什麼是守護執行緒?Java程式設計執行緒
- 什麼是AOP程式設計?程式設計
- 你是什麼時候”突然”學會程式設計的程式設計
- “我想學程式設計”的真正含義是什麼程式設計
- 【1024程式設計師節】程式設計師,你學程式設計的初衷是什麼?程式設計師
- 為什麼你應該學習程式設計程式設計
- 什麼是真正的程式設計師?程式設計師
- 什麼是真正的程式設計師程式設計師
- 程式設計師的悲哀是什麼?程式設計師
- 為什麼應該投資程式設計師的學習?程式設計師
- 為什麼要學習Linux雲端計算?新手怎麼學習LinuxLinux
- 為什麼你還是學不會程式設計程式設計
- .NET的併發程式設計(TPL程式設計)是什麼?程式設計
- 學習計算機程式設計需要什麼基礎?計算機程式設計
- 好程式設計師Java學習路線Java bean是個什麼概念程式設計師JavaBean
- 電腦程式設計是什麼?程式設計
- 什麼是極端程式設計?程式設計
- 學Python的方法是什麼 怎麼能學好Python程式設計Python程式設計
- 設計師為什麼要學程式設計,開發者為什麼要學設計?程式設計
- 學程式設計為什麼這麼難?每個新手絕對要知道的那些事程式設計
- 學習UI設計能做什麼UI
- 程式設計的首要原則是什麼?程式設計
- 真正的程式設計方法是什麼? (轉)程式設計
- 到底什麼是大資料?新手學大資料的路徑是什麼?大資料
- 好程式設計師分享新手學習雲端計算的規劃程式設計師
- 程式設計老手的哪些特點,是值得新手程式設計師學習的?(附上一些學習資料和阿里面試資料)程式設計師阿里面試