自學編程的6個技巧總結,幫助新手在他們漫長的旅程中學習編程

 

有一天,個人一個在學編程的朋友問我:「我想快速學習編程,你有什麼好的推薦嗎?」程序員

我曾在上大學的時候自學過編程,這麼多年過去了,我意識到我或許是在用最困難的方式去學習和了解編程。原本我徹底能夠用更快的速度學習。所以,在回顧了過去以後,我寫下了這些年來我漸漸掌握到的關於如何學習編程的一些事情。編程

 

 

「快速」框架

 

對於「如何快速學習編程」這個問題,其實我真的不知道何謂「快速」。我以爲,經過遵循如下建議,你將很快地學習編程(至少你的成長/進步會快)。但你真的不該該眼中只有「快速」。只追求速度反而會拖你的後腿,讓你自作自受。「快速」學習的惟一可持續方法或許是採用浸泡式教學法。找到一種方法讓本身沉浸在編程中很長一段時間(幾個月?)。爲了讓它奏效,你須要不斷推進本身去學習新的東西,並迅速抽身離開。這是編碼訓練營的一個優勢。當你出來時,儘管你還不是專家,但你會學得更快。這也能夠經過專門的導師教導或與專門的初學者一塊兒學習來實現。編程語言

 

1.讀>寫代碼>讀>寫代碼(日復一日)編輯器

 

關於如何高效學習編程我要給出的第一條建議是在閱讀代碼和編寫代碼之間循環往復。閱讀代碼(書籍,博客文章,開源代碼)將幫助你查看解決方案,瞭解最佳作法,並大體瞭解語言或系統。可是在你這樣作以後,你須要本身實際去寫代碼。能夠是任何東西。能夠是小的編碼練習或業餘項目,但確保你能將之付諸於實踐,並用某種方式使用你學到的東西。若是你不這樣作,那麼你會發現本身面對編輯器會無所適從無從下手。學習

這方面的訣竅是讓本身感到不舒服。這是至關痛苦的,但就應該這樣。編碼遵循80/20規則。花80%的時間在20%的代碼或20%你所學的東西上。習慣於這種不舒服的感受並克服它是關鍵。網站

 

這個迭代週期不該該以周爲週期或以月爲週期發生,而是應該以日爲週期。知識等待使用的時間越久,知識這把斧頭就越鈍。等待學習新知識的時間越長,你就越難以將其融入到代碼中。編碼

 

我推薦閱讀關於通用編程主題的網站是lobste.rs。上面有許多關於許多編程主題的文章。另外一個好的網站是Hacker News,但網站時常偏離話題。3d

 

2.不要陷入僵局。請求幫忙blog

 

我最大的錯誤是在學習編程陷入僵局的時候用了太長時間。在被卡住時,我會花不少時間在一些愚蠢的東西或一些我根本上不明白的東西上。有時候我須要花費好幾天時間才能完成這些工做,而本來我能夠用這些時間作更多的事情和學習更多的東西,若是我能找到更好的解決方法的話。卡在一個東西上面超過一個小時基本上就是在浪費時間了。

我推薦三件事情以免僵局。

第一是試着老是閱讀更多關於你使用的技術,並整體掌握正在發生什麼。一般,當你陷入困境時,意味着你對須要澄清的事情作出了不正確的假設。

第二是諮詢互聯網。這一點很顯然,但依然值得一提。在網上查找並詢問有過這個問題的人是一個很是重要的技能。Stackoverflow能夠說是互聯網上最好的網站。不要懼怕在那裏問本身的問題。一般,只要盡力正確地闡述你的問題就OK了。我真的但願之前我能多問些問題,但老是由於懼怕會顯得愚蠢而止步。

個人第三個建議是向你認識的人請求幫助。一般,你或許已經理解了技術,並且有了問題,可是你可能須要更高層次的上下文才能真正解開謎團。不要膽怯,大着膽子上前去問吧。

 

3.爲項目而工做

 

在個人經驗中,沒有什麼能夠與工做於本身的項目以學習編程更有用的了。除了一些例外,我所知道的全部真正優秀的程序員都有一個習慣就是工做於業餘項目(這也可能發生在工做中!)。

有了一個點子並試圖實現這個點子是很是具備挑戰性的。它須要很強的自律心。可是,經過嘗試實際作一件事情,你能夠學到如何分解問題並應用技術。你面對的各類問題,以及你如何解決它們才真正是所謂的編程。知道編程語言的每個古怪細節的確是有幫助的,但它只會讓你愈來愈落伍。此外,想要完成項目的驅動力是繼續學習的動力。從業餘項目得到的知足感遠遠超過你在抽象中學習東西的知足感。

 

我對於選擇業餘項目的建議是,選擇你感興趣同時你也有想法如何實現的東西。可以在開始以前表達實現老是有助於保持個人動力。在此旅途之中你必定會學到不少!

 

4.認識到深刻鑽研和搬運工之間的區別。相應地選擇。

 

有兩種類型的程序員:完美主義者和搬運工。有些人但願一切都是正確的,他們但願完美,他們但願遵循全部的最佳實踐,並寫出漂亮的優雅代碼。他們想要理解每一行代碼。有別於那些無論三七二十一,只要本身的代碼能工做便可,即便對代碼庫有損害的人。平衡這兩種技能是很是重要的。有時你應該深刻鑽研一個問題或項目,看看發生了什麼。有時你應該讓它工做便可,即便你不知道發生了什麼。

 

每當你花費太多時間在某個東西上時,那就問問本身:我應該採起哪一種方法?在大多數狀況下,你會想取中間值。你想提供一個好的、堅實的解決方案,同時你能夠自信地理解和修改,但沒有耗費荒謬的時間。隨着你做爲開發人員的成長,你會更好地明白何時就此離開就能夠,以及何時須要以某些方式完成。

 

就我的而言,我喜歡個人項目80%完美。若是你的項目是絕對100%完美,沒有一行代碼讓你以爲尷尬,那麼頗有可能你已經花了太多的時間。

 

5.與其餘程序員交談

 

學習編程的一個很好的方法就是和其餘的程序員交談。沒必要談論任何特定的內容。能夠是你正在學習的東西,能夠是你認爲很酷的東西,能夠是你正在工做的東西,皆可。你會發現不少程序員並不喜歡只是聊編程。這樣作可能會讓你學到不少關於庫,服務,編程語言和模式方面的知識。可是,最重要的是,你將瞭解到其餘人是如何看待編程的。你會發現,你認爲理所固然或歷來沒有考慮的事情在人與人之間是很是不一樣的。

 

6.嘗試一切。若是搞不懂的話,那就等6個月。

 

最後,我要說的是,一直以來在我身上發生着這樣的事,我嘗試過不少東西,但我就是不理解。在用30分鐘嘗試新的東西后,我會停下來。我想這在起步時是很正常的。可是,我記得不少次,在6個月後(或3個月或9個月),我會回到一樣的問題或技術上,弄清楚如何使用它。這是由於我又掌握了一些我之前不具有的知識,或者由於它只是另外一種方式的框架。等待一段時間,而後回去,老是一種最有用的方法。

 

這方面的一個例子是學習如何使用終端。我記得很長一段時間我都懼怕碰到終端,由於我不知道如何使用。我花了一段時間並按照步驟按期地使用它和理解它。固然,若是我認識能夠向我解答的人,或者找到一個好的資源來學習,這樣的事情就不會發生!

 

結論

 

這些事情能夠幫助新手在他們漫長的旅程中學習編程。我知道我還有更多東西須要學習,並將繼續學習如何永遠地學習。最重要的事情說三遍,請繼續,不要放棄,不要放棄,不要放棄。固然,說說容易,由於學習編程有時可能會使人很是沮喪!不要擔憂。這是正常的。每一個人都經歷過這樣的心情。

相關文章
相關標籤/搜索