我多但願我學編程時,有人教我這些事!

這篇文章在Medium上人氣很是旺,轉發量和評論數都爆表。原做者回想了本身漫長的編程學習之路,從中總結了我的經歷,走過的彎路和各類教訓。編程


圖片描寫敘述

一、學編程以前,想清楚本身想寫什麼。

學習編程基本就是在學習建造東西。假設你知道你究竟想造什麼,你的編程學習之路將會豁然開朗。框架

假設你的目標僅僅是「學習怎樣編程」。殊不知道本身究竟想寫出什麼樣的程序,也不知道這些程序將怎樣讓你的生活變得更美好,你很是有可能會感到編程學習令你沮喪受挫。編程語言

提及來還有點丟臉,我最先想學習編程,是因爲我想證實我聰明。工具

並且,我也想作一份屬於聰明人的工做。我還喜歡思考數學及理論。學習

所以,編程怎麼看都和我很是搭。指針

但是這些想法都不足以延續個人編程學習熱情。直到有一天。當我最終發現怎樣將科技(編程)與個人真愛---音樂和文學---聯繫在一塊兒時,我才真正愛上編程。blog

那麼,你究竟想用編程來幹嗎呢?教程

站點?遊戲?iPhone應用?一個讓你暴富的初創公司?交互式藝術做品?遞歸

你是想讓你的老闆對你另眼相看,仍是想寫個程序讓電腦幫你完畢一個枯燥的任務,以讓你能花不少其它的時間看水獺的萌照?遊戲

也可能你僅僅是想在職場中更具競爭力,爲你的簡歷加一個潮詞(編程),或者知足你學校的畢業要求。

這些都是有價值的目標。你需要搞清楚本身的目標,而後有針對性地學習。

二、編程一點也不神奇,一點也不難。

編程和其它技能沒有本質差異。就像語言學習裏有語法和單詞;就像數學裏有不一樣的步驟和不一樣的題目;就像所有的技藝和手藝。編程裏也有前人總結的針對不一樣任務的技巧。工具,和好的習慣。

這些東西。你都可以自由使用,改動,或者棄用。

有我的曾這樣判定,程序大牛和編程界的芸芸衆生之間有一個明顯的差異---後者每每缺少足夠的智慧在編程界得到真正的成功。在這我的看來,這樣的智慧包括對指針 (pointers) 和遞歸 (recursion) 的理解。

我在學校曾學過指針和遞歸。

在學生時代。能理解指針和遞歸的感受真心超級爽。這樣的快感激發我踏上了計算機學習之路。

但在課堂練習以外,我極少有需要去碰這兩個概念。並且,當我在教別人怎樣學習編程時,我也一次從新地發現,人們不用這兩個概念也能寫出很是有趣很是讚的程序。

因此。不要懼怕。也不要去想本身是否足夠聰明。想這些都沒意義。

是的,編程任務越複雜,越難懂,你就需要越高超的技巧才幹完畢。

但哪一個領域不是如此呢?除非你這輩子就靠編程討生活了。不然你不太可能需要去理解編程中的遞歸。

三、沒人能一次搞定。

當你第一次學習編程時,你會很是快撞上這麼個問題。你認爲你已配置好一切了,你查了又查,但你的代碼就是有!

問!題!你對怎樣排錯毫無頭緒。

錯誤信息(假設運氣好你有的話)很是有可能對你說的是---「我了個大艹」。這個時候,你很是有可能想要放棄。你認爲你永遠不可能搞定。認爲本身就不是編程的料。

嘿。當我第一次嘗試編寫C++程序,執行。卻僅僅獲得 「segmentation fault」 這樣的錯誤代碼時。我也有過同樣的沮喪感。

但是這樣的經歷對不論什麼一個水準的程序猿而言。都再正常只是了。

有過這樣的經歷。並不表明你的智商,技術悟性。或你和編程的適合度有不論什麼問題。

不管你是編程新兵,仍是程序大牛。你都會遇到這樣的經歷。而新兵和大牛的差異就在於怎樣對待這樣的經歷。

新兵和大牛的一大差異就是信念。什麼信念呢?

就是深信出錯的緣由是符合邏輯的,並可以找到的,深信問題可以被解決,深信總有辦法實現本身的目標。

從0到1之路或許並不明顯。但僅僅要你有耐心。你一般都可以找到。

四、總有人說你作的不正確。

大括號{}應該怎麼放放?該不應不用tab來縮進?該不應對代碼加入凝視?

對於這些問題。你們的作法各有不一樣。

沒有誰有標準答案。很是多程序猿熱衷推銷本身的偏好的那種處理方式,但這不意味着答案僅僅有一個。

其實。與那些說我作的不正確的人面對面,而後再努力去搞懂他們說的到底是不是對的,這樣的來來回回,是我職業生涯的壓力源之中的一個。

假設你與一個團隊的其它成員一塊兒寫碼,總會有人不認同你的某些行爲。

有時他們是對的。但其實你到底是!對。是!錯!

永遠值得你親自去推敲。

有時他們純粹就是無理取鬧,你別理他們就行了。

五、總有人會說你不是一個真正的程序猿。

看看這些說法吧。

「HTML不是真正的編程語言。」

「假設你不用vi,你就不是真正的程序猿。」

「真正的程序猿得懂C語言。」

「有些人就是不適合編程。

「有些人就是學不會。」

「你根本就不是真正的程序猿。我纔是。」

要我說,編程對於不一樣的人有不一樣的含義。

同一時候,編程的含義隨着時間的流逝也在變化。

有趣的是,那些能讓剛開始學習的人。甚至是編程老鳥,更快上手。更省事的工具,包。框架等每每會被貼上 「真正的程序猿不應使用」 這樣的標籤。

這樣的貼標籤行爲背後是一種恐懼:假設不論什麼人都能稱本身爲程序猿,那這個頭銜就將毫無心義。只是。我認爲這樣的閉關自守的行爲是有害的。

去用那些讓敲代碼變得easy的工具吧。假設那意味着你用 Stencyl 或者 GameMaker 來寫遊戲,而不是從零開始寫一個新的,沒事,僅僅管去作。

假設你第一次嘗試編程是從HTML或者Excel宏開始,沒事,僅僅管去作。

哪一個(編程方式)你能堅持下去。你就用哪一個。

隨着你技術不斷提高。你就會發現那些便利工具對你的限制大於對你的幫助。

那時,你就會去尋找更強大的編程工具。

但大多數時候,很是少有人會看你的代碼,或者問你用什麼編程工具。

你的程序究竟好很差用纔是真正重要的。

六、堅持例如法更重要。

關於 「正確編程學習法」 和 「最佳編程學習法」 的文章有很是多。的確。學習編程的方法有很是多。

你可以看書來學,你可以作練習來學,你可以給別人的程序捉蟲來學。固然了,也有很是多種編程語言你可以挑選來做爲你的第一門語言。

自學型的編程課程或者講座系列常常有個問題:一開始你總會學得很是爽,但難度會陡然上升。

print命令老是很是easy,但要真正搞定一個有用程序的編寫,每每讓人抓狂。你很是有可能認爲跟着教程走卻並沒搞懂,而後你就開始抱怨教程有問題。

當你撞上這個 「編程玻璃頂」 時,那些教程和線上資源對你的意義已經不大了。因爲他們默認你已是一個編程好手了。

更讓整個編程學習進階之路變難的因素是。你根本不知道本身缺什麼 (you don’t know what you don’t know) 。甚至,搞清楚本身接下來需要什麼都成了難題。

不管上什麼編程課,你都會有這麼一段 「撞牆期」,惟一的解決的方法就是堅持究竟。

這意味着你要不斷嘗試新事物,學習新知識,不斷地,一步步地,去解決這個問題,去編出你要的程序。假設你這時認真回看本身的編程初心,你就更有可能得到成功。

堅持究竟。就會勝利。這就是我以前提到的信念的價值所在。假設你真的堅持究竟。你就真的會勝利。


圖片描寫敘述

相關文章
相關標籤/搜索