作為乙個有效的學習者至少與成為一名高效的編碼人員一樣重要。
當你是一名開發人員時,你的工作要求你每天都要學習 - 儘管像黑客新聞,twitter,reddit和facebook一樣引起了分心。
您經常遇到新的**庫和工作中的新技術挑戰。
當你處理開源回購和個人專案時,家庭並不是更好,每個專案都有自己的流程和挑戰。
技術世界變化很快,它可以感覺像是乙份全職工作,只需跟上最新的工具,語言和框架。
長話短說:學習很難。
然而,我們需要能夠快速有效地學習才能茁壯成長。
在過去的一年裡,我從不知道如何使用chrome偵錯程式到為一家領先的加密貨幣公司擔任軟體工程師。
在這個過程中,我迅速學會了一項新技能(編碼)。
也就是說,學習對我來說並不容易。
老實說,每乙個新概念都是一場鬥爭。
有太多的未知數和太多的不確定性。
「這個世界怎麼可持續?」我心想。
「如果這是學習編碼應該感覺像每天,我會很痛苦。
這真的是我的熱情嗎?「
「如果這是我的熱情,對我來說這不容易嗎?
藝術家難以創作藝術嗎?
作家難以寫一本好書嗎?
運動員在比賽中努力做得好嗎?
當我們追求激情時,我們是否應該掙扎?「
「我不應該對此感到高興嗎?」
它變得容易了嗎?
是的,它確實。
一年後,在需要紀律和努力工作的意義上,解決新的程式設計概念仍然是「困難的」。
但它也成為乙個令人愉快的過程,而不是壓倒性的過程。
去年發生了什麼讓這種轉變成為可能?
簡單:我改變了對學習的看法。
曾經讓我感到「困難」的東西變得「迷人」。
在帖子的其餘部分,我將解釋這種轉變是如何發生的。
剛剛開始
學習編碼在開始時是最難的。
例如,考慮一下您必須學習的第一種程式語言。
你想要解決語法和風格等小問題。
但首先,您必須理解困難的核心概念,如值,型別,運算子,控制流,函式,高階函式,範圍,閉包,遞迴等等。
感覺就像學習玩雜耍一樣 - 但是從十八個引腳而不是兩個引腳開始。
當我第一次了解關閉時,我花了好幾周才真正理解這個概念。
當我讀到它時,我以為我明白了。
但是當我嘗試在實踐中識別和使用閉包時,我發現自己很難過。
這並不罕見。
我也把這個過程視為老師:新概念通常不會在第一時間點選。
或者第二個。
甚至是第十個。
但對於那些堅持不懈的人來說,會有乙個「突破點」,事情突然變得有意義。
在我的例子中,我讀了每篇博文,stack overflow帖子,以及關於閉包的網際網路規範。
我閱讀和試驗過的所有內容都給了我乙個新的視角,直到最終,我對封閉的工作方式進行了360度的心理描繪。
閉包「點選」。
學習是乙個過程,而不是目標
如果我們將學習視為我們「必須」做的事情,那麼我們就會急於完成它,這樣我們就可以花更多的時間做一些更「有趣」的事情 - 我們「想要的」去做。
問題在於,無法了解任何事情,因此將學習視為一場比賽會導致倦怠和失望。
相反,如果你將學習視為乙個過程,你將會欣賞沿途的小勝利和見解。
這將推動你不斷前進。
你可以將它與運動進行比較。
鍛鍊受傷,然後一旦鍛鍊結束疼痛就會結束。
但它永遠不會消失。
下次鍛鍊時它正等著你。
除了每次,疼痛變得不那麼刺耳了。
你學會應付它。
你熟悉疼痛,它只是成為常規的一部分。
你會得到更好的健康和更好的體質的獎勵,並被激勵繼續前進。
練習創造了乙個積極的反饋迴圈
學習也是如此。
將學習轉變為引人入勝的過程
想象一下構建您的第乙個web應用程式。
首先,你所擁有的只是乙個令人生畏的空白文字編輯器。
構建應用程式的任務似乎幾乎無法克服。
你什麼都不知道,在你能做到這一點之前還有很多東西需要學習。
謝天謝地,無論如何你決定去做吧。
從那時起,您的主要關注點就是一次只做一小步。
首先,你創造乙個想法。
你會建造什麼?
誰是終端使用者?
有什麼限制?
其次,您可以根據自己的想象製作原型或草圖。
您可以向您的朋友或網際網路尋求反饋,並進行迭代以使其更好。
第三,您研究最符合您要求的語言,工具和框架。
一步一步地訓練你的思想,將所有的精力都用於實現這一目標。
有時你正在編寫**。
通常情況下,你會因某些錯誤或錯誤而停滯不前。
有時你太累了,不能做任何工作,所以你休息一下。
其他時候,你不喜歡編寫**。
沒關係。
最後,經過幾周的努力,你已經建立了乙個可以處理你的重大創意的基礎。
突然之間,處理你的應用並不會感到痛苦。
你看到了最初的努力工作的回報,現在它只是你需要編寫的另一段**或者你需要做的其他一些重構 - 你已經做了100次,沒問題。
你把曾經令人生畏或可怕的活動變成了複雜而迷人的活動。
這就是我們成長的方式。
這就是我們變得更好的方式。
無論是程式設計,跳舞,跑步還是閱讀:這都不容易,當你「完成」學習時,永遠不會有時間或地點。
相反,享受將精力投入到某些事物中的過程,並享受隨之而來的痛苦。
換句話說,鬥爭和享受將開始意味著同一件事。
記住週期:
學習技術主題的一種方法
讓我告訴你一些我遵循的學習過程。
萬一你不能說,我是這個東西的書呆子:)
我們以學習react.js庫的過程為例。
學習這個的動機是什麼?
了解任何主題背後的「原因」對於構建學習過程非常有幫助。
它回答如下問題:
這與其他解決方案有何不同?
這對我有用嗎?
這個解決方案有哪些問題需要解決?
這只是乙個新的閃亮工具,它只會在幾個月內有用,還是會從根本上改變我的想法和編碼方式?
閱讀和理解核心概念
請注意,我還沒有觸及任何**。
在動手實驗之前,閱讀和沉沒核心概念。
這樣做非常重要,因為它為我的其餘學習奠定了基礎。
即使我可以在不學習核心概念的情況下盲目地使用react.js,但是當我遇到乙個bug時,它最終會趕上我。
第一次編碼
花了一些時間在上面的步驟後,我開始了解正在發生的事情,或者甚至覺得我完全得到它。
然後是時候跳進一些**了。
當你卡住了
......然後,我不可避免地陷入困境。
閱讀文件看起來像小菜一碟,但實際上在實踐中使用它讓我意識到我不知道發生了什麼。
這是我開始覺得可怕的「放棄」的感覺。
但是當我變得艱難時,我不會放棄,而是提醒自己痛苦= =獲得。
回頭會很懦弱。
這是我做的事情:
我首先縮小並弄清楚我實際上遇到了什麼 - 即定義問題。
然後我想出了我認為可能是問題的根本原因或原因的假設。
即使我不知道,我只是猜一猜。
然後我離開問題和我的電腦,做一些放鬆我的事情。
當我對我堅持的問題感到不安時,這是非常難以做到的,但放下這個問題會產生奇蹟。
(有沒有注意到淋浴時總是有多好的想法?)
現在我嘗試用我的假設進行除錯。
在沒有在網上尋找答案的情況下,我盡可能地得到了我的假設 - 當你試圖通過自己首先真正深入思考問題來解決問題時會發生一些美好的事情。
即使你走的是錯誤的道路,你做出努力的事實會教會你很多,而且下次遇到問題時你會更好地記住問題空間。
如果我的假設得出答案,萬歲!
我受夠了。
如果沒有,我谷歌搜尋文件,部落格文章或stack overflow帖子,可以幫助我更接近答案。
在閱讀時,我會記錄可能有用的任何和所有資訊。
仍然沒有解決方案
沒關係。
我確信通過閱讀所有這些來學習有價值的東西,即使它沒有直接幫助我解決手頭的問題。
誰知道這些知識何時可能在下次派上用場?
此時,如果我真的陷入困境,我會在stack overflow上發布乙個問題,或者詢問我認識的同事或開發人員。
否則,我沖洗並重複,直到我接近最終的解決方案。
在某些時候,答案總會來臨。
有時這個過程需要幾秒鐘,有時需要幾個小時(或幾天)。
無論哪種方式,該過程本身對您作為開發人員的技能都非常有益。
卡在乙個蟲子上感覺就像在黑暗的隧道中尋找一縷光線一樣磕磕絆絆。
你最終會找到它,但是沿途你發現了很多關於隧道的知識 - 而且它對「隧道」的了解使你成為一名強大的編碼員。
將除錯視為探索的機會,而不是繞道而行,並且變得更有趣。
沖洗並重複
到目前為止,在學習過程中,我已經建立了一些小的東西,並在此過程中解決了一些小障礙。
正如你所看到的,這是一場鬥爭 - 顯然,我需要使用新工具進行更多練習。
所以,我再次嘗試自己構建一些東西。
而不是直接跳到乙個大的自定義專案,我會尋找乙個基於我的應用程式的回購。
只是不同,足以讓我保持參與,但沒有那麼不同,如果出現問題,我會氣餒。
征服掌握需要重複,所以我一直在構建更多的小專案,直到我覺得我已經掌握了核心概念。
最終,我開始能夠自己拼湊一些東西,而不必經常引用文件或示例。
只有這樣,我終於冒險出去,自己從頭開始構建一些東西。
在整個過程中,我的目標是讓這個過程變得有趣和吸引人。
我不斷地推動自己去做一些比我現在所能做的更難的事情,但不要把自己投入到深層,這樣我才會氣餒,永遠不會完成。
最後,一旦我發現自己太沮喪而無法享受這個專案,我一定會離開。
學習很有趣
通過一些努力和結構,學習程式設計變得異常有趣。
起初它非常複雜,在我看來,這就是為什麼這麼多人會被嚇跑 - 不是因為它「無聊」,而是因為它「很難」。
在您完成這個學習過程幾次後,處理新資訊就成了肌肉記憶。
你真的沒有想過。
你只是學會駕馭痛苦的浪潮,並在獎勵中找到快樂。
像魔術一樣,它變得「更容易」學習。
學習如何學習
學習了這麼多年,感覺都不知道如何學習?那麼今天蒐集一些資料,總結一下。邏輯推理不能激勵你學習。去嘗試發現每個主題之美,並試著將它與你生活裡的事情相關聯。如 這種聯絡可能是有意識的 也就是說做化學反應 物理試驗或手動數學計算是為了證明乙個定理或公式 或許是無意識的 例如,你去公園和看葉子。然後你想到你...
Python 學習 一 如何學習,學習資料
上手python快一年了,用python也開發了不少工具 專案,準備寫乙個系列來整理python的學習。1 python的介紹 python是一種物件導向的 解釋型語言,發明與1989年。python是一種高階語言,它在底層實現許多高階的資料結構,使得程式設計變得非常容易。python的庫非常豐富,...
如何學習Linux
隨著linux應用的擴充套件許多朋友開始接觸linux,根據學習windwos的經驗往往有一些茫然的感覺 不知從何處開始學起。這裡介紹學習linux的一些建議。一 從基礎開始 常常有些朋友在linux論壇問一些問題,不過,其中大多數的問題都是很基礎的。例如 為什麼我使用乙個命令的時候,系統告訴我找不...