学习如何学习
作為一個有效的學(xué)習(xí)者至少與成為一名高效的編碼人員一樣重要。
當你是一名開發(fā)人員時,你的工作要求你每天都要學(xué)習(xí) - 盡管像黑客新聞,Twitter,Reddit和Facebook一樣引起了分心。
您經(jīng)常遇到新的代碼庫和工作中的新技術(shù)挑戰(zhàn)。當你處理開源回購和個人項目時,家庭并不是更好,每個項目都有自己的流程和挑戰(zhàn)。
技術(shù)世界變化很快,它可以感覺像是一份全職工作,只需跟上最新的工具,語言和框架。
長話短說:學(xué)習(xí)很難。然而,我們需要能夠快速有效地學(xué)習(xí)才能茁壯成長。
在過去的一年里,我從不知道如何使用Chrome調(diào)試器到為一家領(lǐng)先的加密貨幣公司擔(dān)任軟件工程師。在這個過程中,我迅速學(xué)會了一項新技能(編碼)。
也就是說,學(xué)習(xí)對我來說并不容易。
老實說,每一個新概念都是一場斗爭。有太多的未知數(shù)和太多的不確定性。
“這個世界怎么可持續(xù)?”我心想。
“如果這是學(xué)習(xí)編碼應(yīng)該感覺像每天,我會很痛苦。這真的是我的熱情嗎?“
“如果這是我的熱情,對我來說這不容易嗎?藝術(shù)家難以創(chuàng)作藝術(shù)嗎?作家難以寫一本好書嗎?運動員在比賽中努力做得好嗎?當我們追求激情時,我們是否應(yīng)該掙扎?“
“我不應(yīng)該對此感到高興嗎?”
它變得容易了嗎?
是的,它確實。一年后,在需要紀律和努力工作的意義上,解決新的編程概念仍然是“困難的”。
但它也成為一個令人愉快的過程,而不是壓倒性的過程。
去年發(fā)生了什么讓這種轉(zhuǎn)變成為可能?
簡單:我改變了對學(xué)習(xí)的看法。曾經(jīng)讓我感到“困難”的東西變得“迷人”。
在帖子的其余部分,我將解釋這種轉(zhuǎn)變是如何發(fā)生的。
剛剛開始
學(xué)習(xí)編碼在開始時是最難的。
例如,考慮一下您必須學(xué)習(xí)的第一種編程語言。你想要解決語法和風(fēng)格等小問題。但首先,您必須理解困難的核心概念,如值,類型,運算符,控制流,函數(shù),高階函數(shù),范圍,閉包,遞歸等等。
感覺就像學(xué)習(xí)玩雜耍一樣 - 但是從十八個引腳而不是兩個引腳開始。
當我第一次了解關(guān)閉時,我花了好幾周才真正理解這個概念。當我讀到它時,我以為我明白了。但是當我嘗試在實踐中識別和使用閉包時,我發(fā)現(xiàn)自己很難過。
這并不罕見。我也把這個過程視為老師:新概念通常不會在第一時間點擊。或者第二個。甚至是第十個。
但對于那些堅持不懈的人來說,會有一個“突破點”,事情突然變得有意義。在我的例子中,我讀了每篇博文,Stack Overflow帖子,以及關(guān)于閉包的互聯(lián)網(wǎng)規(guī)范。
我閱讀和試驗過的所有內(nèi)容都給了我一個新的視角,直到最終,我對封閉的工作方式進行了360度的心理描繪。閉包“點擊”。
我覺得這種對閉包的理解是非常重要的,因為它是有益的,并且鼓勵我去做更多 - 包括編寫我自己的博客文章解釋這個概念。
學(xué)習(xí)是一個過程,而不是目標
如果我們將學(xué)習(xí)視為我們“必須”做的事情,那么我們就會急于完成它,這樣我們就可以花更多的時間做一些更“有趣”的事情 - 我們“想要的”去做。
問題在于,無法了解任何事情,因此將學(xué)習(xí)視為一場比賽會導(dǎo)致倦怠和失望。
相反,如果你將學(xué)習(xí)視為一個過程,你將會欣賞沿途的小勝利和見解。這將推動你不斷前進。
你可以將它與運動進行比較。鍛煉受傷,然后一旦鍛煉結(jié)束疼痛就會結(jié)束。但它永遠不會消失。下次鍛煉時它正等著你。除了每次,疼痛變得不那么刺耳了。你學(xué)會應(yīng)付它。你熟悉疼痛,它只是成為常規(guī)的一部分。你會得到更好的健康和更好的體質(zhì)的獎勵,并被激勵繼續(xù)前進。
練習(xí)創(chuàng)造了一個積極的反饋循環(huán)
學(xué)習(xí)也是如此。
將學(xué)習(xí)轉(zhuǎn)變?yōu)橐巳雱俚倪^程
想象一下構(gòu)建您的第一個Web應(yīng)用程序。
首先,你所擁有的只是一個令人生畏的空白文本編輯器。構(gòu)建應(yīng)用程序的任務(wù)似乎幾乎無法克服。你什么都不知道,在你能做到這一點之前還有很多東西需要學(xué)習(xí)。
謝天謝地,無論如何你決定去做吧。
從那時起,您的主要關(guān)注點就是一次只做一小步。
首先,你創(chuàng)造一個想法。你會建造什么?誰是最終用戶?有什么限制?
其次,您可以根據(jù)自己的想象制作原型或草圖。您可以向您的朋友或互聯(lián)網(wǎng)尋求反饋,并進行迭代以使其更好。
第三,您研究最符合您要求的語言,工具和框架。
一步一步地訓(xùn)練你的思想,將所有的精力都用于實現(xiàn)這一目標。
有時你正在編寫代碼。
通常情況下,你會因某些錯誤或錯誤而停滯不前。
有時你太累了,不能做任何工作,所以你休息一下。
其他時候,你不喜歡編寫代碼。沒關(guān)系。您花時間研究或閱讀與項目相關(guān)的主題。
最后,經(jīng)過幾周的努力,你已經(jīng)建立了一個可以處理你的重大創(chuàng)意的基礎(chǔ)。突然之間,處理你的應(yīng)用并不會感到痛苦。你看到了最初的努力工作的回報,現(xiàn)在它只是你需要編寫的另一段代碼或者你需要做的其他一些重構(gòu) - 你已經(jīng)做了100次,沒問題。
你把曾經(jīng)令人生畏或可怕的活動變成了復(fù)雜而迷人的活動。
這就是我們成長的方式。這就是我們變得更好的方式。無論是編程,跳舞,跑步還是閱讀:這都不容易,當你“完成”學(xué)習(xí)時,永遠不會有時間或地點。
相反,享受將精力投入到某些事物中的過程,并享受隨之而來的痛苦。你會開始注意到你不再將它描述為“痛苦” - 因為曾經(jīng)痛苦的東西會成為下一步的象征:個人成就感和自我滿足感。
換句話說,斗爭和享受將開始意味著同一件事。記住周期:
學(xué)習(xí)技術(shù)主題的一種方法
讓我告訴你一些我遵循的學(xué)習(xí)過程。這不是所有學(xué)習(xí)風(fēng)格的全部,所以如果不同的東西適合你,請在評論中分享!萬一你不能說,我是這個東西的書呆子:)
我們以學(xué)習(xí)React.js庫的過程為例。
學(xué)習(xí)這個的動機是什么?
第一步:我從谷歌搜索React.js文檔開始,并閱讀一些關(guān)于庫的背景和動機。
了解任何主題背后的“原因”對于構(gòu)建學(xué)習(xí)過程非常有幫助。它回答如下問題:
這與其他解決方案有何不同?
這對我有用嗎?
這個解決方案有哪些問題需要解決?
這只是一個新的閃亮工具,它只會在幾個月內(nèi)有用,還是會從根本上改變我的想法和編碼方式?
閱讀和理解核心概念
其次,我會閱讀文檔中提供的任何介紹文章或示例。
請注意,我還沒有觸及任何代碼。在動手實驗之前,閱讀和沉沒核心概念。這樣做非常重要,因為它為我的其余學(xué)習(xí)奠定了基礎(chǔ)。
即使我可以在不學(xué)習(xí)核心概念的情況下盲目地使用React.js,但是當我遇到一個bug時,它最終會趕上我。
第一次編碼
花了一些時間在上面的步驟后,我開始了解正在發(fā)生的事情,或者甚至覺得我完全得到它。然后是時候跳進一些代碼了。
我通常會嘗試使用任何新工具構(gòu)建一些非常小的東西,方法是在進入自定義項目之前遵循視頻教程(例如,在egghead.io上)或書面教程。
當你卡住了
......然后,我不可避免地陷入困境。
閱讀文檔看起來像小菜一碟,但實際上在實踐中使用它讓我意識到我不知道發(fā)生了什么。
這是我開始覺得可怕的“放棄”的感覺。但是當我變得艱難時,我不會放棄,而是提醒自己痛苦= =獲得。回頭會很懦弱。
這是我做的事情:
我首先縮小并弄清楚我實際上遇到了什么 - 即定義問題。然后我想出了我認為可能是問題的根本原因或原因的假設(shè)。即使我不知道,我只是猜一猜。
然后我離開問題和我的電腦,做一些放松我的事情。當我對我堅持的問題感到不安時,這是非常難以做到的,但放下這個問題會產(chǎn)生奇跡。(有沒有注意到淋浴時總是有多好的想法?)
現(xiàn)在我嘗試用我的假設(shè)進行調(diào)試。在沒有在網(wǎng)上尋找答案的情況下,我盡可能地得到了我的假設(shè) - 當你試圖通過自己首先真正深入思考問題來解決問題時會發(fā)生一些美好的事情。即使你走的是錯誤的道路,你做出努力的事實會教會你很多,而且下次遇到問題時你會更好地記住問題空間。
如果我的假設(shè)得出答案,萬歲!我受夠了。如果沒有,我谷歌搜索文檔,博客文章或Stack Overflow帖子,可以幫助我更接近答案。
在閱讀時,我會記錄可能有用的任何和所有信息。
仍然沒有解決方案?沒關(guān)系。我確信通過閱讀所有這些來學(xué)習(xí)有價值的東西,即使它沒有直接幫助我解決手頭的問題。誰知道這些知識何時可能在下次派上用場?
此時,如果我真的陷入困境,我會在Stack Overflow上發(fā)布一個問題,或者詢問我認識的同事或開發(fā)人員。
否則,我沖洗并重復(fù),直到我接近最終的解決方案。在某些時候,答案總會來臨。
有時這個過程需要幾秒鐘,有時需要幾個小時(或幾天)。無論哪種方式,該過程本身對您作為開發(fā)人員的技能都非常有益。
卡在一個蟲子上感覺就像在黑暗的隧道中尋找一縷光線一樣磕磕絆絆。你最終會找到它,但是沿途你發(fā)現(xiàn)了很多關(guān)于隧道的知識 - 而且它對“隧道”的了解使你成為一名強大的編碼員。
將調(diào)試視為探索的機會,而不是繞道而行,并且變得更有趣。
沖洗并重復(fù)
到目前為止,在學(xué)習(xí)過程中,我已經(jīng)建立了一些小的東西,并在此過程中解決了一些小障礙。正如你所看到的,這是一場斗爭 - 顯然,我需要使用新工具進行更多練習(xí)。
所以,我再次嘗試自己構(gòu)建一些東西。而不是直接跳到一個大的自定義項目,我會尋找一個基于我的應(yīng)用程序的回購。
例如,如果有一個使用React.js的在線CRUD todos示例(當然),也許我將構(gòu)建一個不同類型的CRUD應(yīng)用程序。只是不同,足以讓我保持參與,但沒有那么不同,如果出現(xiàn)問題,我會氣餒。
征服
掌握需要重復(fù),所以我一直在構(gòu)建更多的小項目,直到我覺得我已經(jīng)掌握了核心概念。
最終,我開始能夠自己拼湊一些東西,而不必經(jīng)常引用文檔或示例。只有這樣,我終于冒險出去,自己從頭開始構(gòu)建一些東西。
在整個過程中,我的目標是讓這個過程變得有趣和吸引人。我不斷地推動自己去做一些比我現(xiàn)在所能做的更難的事情,但不要把自己投入到深層,這樣我才會氣餒,永遠不會完成。
最后,一旦我發(fā)現(xiàn)自己太沮喪而無法享受這個項目,我一定會離開。
學(xué)習(xí)很有趣
通過一些努力和結(jié)構(gòu),學(xué)習(xí)編程變得異常有趣。起初它非常復(fù)雜,在我看來,這就是為什么這么多人會被嚇跑 - 不是因為它“無聊”,而是因為它“很難”。
在您完成這個學(xué)習(xí)過程幾次后,處理新信息就成了肌肉記憶。你真的沒有想過。你只是學(xué)會駕馭痛苦的浪潮,并在獎勵中找到快樂。
像魔術(shù)一樣,它變得“更容易”學(xué)習(xí)。
轉(zhuǎn)載于:https://www.cnblogs.com/klsfct/p/9531215.html
總結(jié)
- 上一篇: 【硬刚Hive】MYSQL/HIVESQ
- 下一篇: ANSYS——ANSYS后处理操作技巧与