Photo by Wes Hicks on Unsplash
這一篇文章,我希望能給正在學習任何新事物、技能的讀者,一個實際的案例分享。也希望過程中的鼓勵,能夠給在中間努力的你,繼續堅持下去的勇氣。
也補充一下我過往的工作型態,基本一週工作 50~60 小時是常態,晚上常常加班到八、九點。通勤時間也長達一個小時。
因此,今天所有分享的案例,所有時間都是利用通勤和下班、假日的時間,沒有花費到上班時間。因此,今天就和大家分享一下目前的學習心態,以及過程遇到的挑戰,並如何克服。
為什麼需要學習目標?
很多的學習,一開始都來自於新接觸、逃避、生存,甚或有意識的學習;但開始學習一陣子後,就很容易遇到各種學習上的挑戰,甚至是心理上的挑戰。
為了克服挑戰甚至低潮,在學習新事物前,我都會習慣先思考–––究竟是什麼,讓我想要開始寫程式?甚至,我學會寫程式後,我想要拿這個技能做什麼?
在釐清過後,我發現自己希望能透過寫程式,改變或讓別人過的更好、更幸福,我希望透過寫程式「幫助其他人」。因此這是我最底層的動機,往上的才會是「如何」幫助其他人,進一步推進到寫文章、寫套件等手段。
學習前思考的三大問題
因此,若你想要開始寫程式、學習新技能,都能停下來思考三個問題。每一個問題,思考的越透徹越好:
- 你為什麼想要開始學這樣技能?
- 你學會這樣技能之後,想要做什麼?
- 為什麼學了這個技能後,就達的到你設定的目標?
其中,第三個問題非常關鍵。我們很習慣會落入滑坡謬誤,一旦開始往理想推理後,就會無限擴大可能發生的情境。例如:如果我學會寫程式,我就有一份不錯的工作;有不錯的工作,就有一份不錯的薪水;有不錯的薪水,就可以去做想做的事;能去做想做的事,我就會快樂...
然而,自始自終的目的,可能只是想要快樂。卻繞了這麼一大圈,覺得學了程式就可以讓自己快樂。到頭來不僅僅是失望,甚至可能再度陷入追求的惡性回圈。
學習的方式與心態調整
這一段,我會分享這一段自學的時間的收穫,主要可以分成「學習方式」與「心態調整」。也是因為釐清的自己的學習方式與心態,才能持續堅持學習。
學習方式(How to learn)
很多課程、講師都告訴我們,要學好程式就要自己下去動手寫;但有沒有想過,為什麼需要動手自己寫?
要瞭解為何要自己動手,可以從下面兩個面向來深入思考:
- 後設認知
- 回饋學習
後設認知
所謂的後設認知(Meta Thinking),指的是「思考如何思考」。換句話說,是去理解你如何學習、理解該事物。
後設認知之所以對動手寫重要,是因為當我們自己動手寫時,會開始思考「我之前的理解正確嗎?」、「這樣寫為什麼不能運作?」。
這些過程,都讓大腦去評估整個學習的內容。當我們回想自己上課的內容有什麼––––後設認知;當我們開始延伸自己的理解並應用時––––後設認知。
整個後設認知可以分成兩個部分,分別是「計畫層面」和「監控層面」。在計畫層面中,大腦會確認這樣做,是否能達到目標?是否需要更多資源?而監控層面中,則會確認目前的理解是否正確?是否需要調整學習步伐?我是否正在進步?
在認知參與程度越高,學習效果越好。學習便是在創造心理連結。
也因此,當我們開始動手寫程式,才有機會去評估自己的理解是否正確?是否記得當初學習的知識?之前學的內容,是否能達到目標?
回饋學習
學習的重點,在於獲取有效的回饋。對於大腦的發展來說,如果我們持續回憶,且回憶的過程越痛苦,就代表該項記憶越重要,也因此就越容易記得該項知識。
美國的頂尖記憶專家班耐特、史瓦茲曾在自己的心理學課堂中,請學生反覆針對知道的東西向他提問,因而強迫學生提取課堂當中講過的知識。整個過程對學生來說是痛苦的;但在學期末時,他們的表現成績都有顯著提高。
回到學習這件事,能動手自己開始寫,才有機會能夠從大腦中提取知識,進一步確認自己的記憶程度。當我們回憶不清晰,甚至忘記的知識時,會產生痛苦的感受。也是這個感受,讓大腦知道這項記憶特別重要,因此當我們學習或更正該項知識時,也就更容易記得。
另一部份,則是藉由比對的過程,我們才有明確的程式碼可以比較,因此構成了有效的回饋。同時在撰寫的過程中,會迫使我們推理具體的程式碼寫法,進而增進我們的理解。
學習心態的調整
Photo by David Pupăză on Unsplash
錯誤,是學習的重要核心。
在學習一項新的技術時,一定會遇到成堆的錯誤與困惑,也是這些困惑阻擋我們學習。因此在學習一項新的事物前,請先將「錯誤」擺在學習路上必然的地位。
因此在學習寫程式時,不用因為寫的程式碼不正確,或是不夠清晰完美,就卡在原地嘗試要解決。重點在於開始寫,並從錯誤中獲得回饋。
當然,我也不喜歡錯誤,不喜歡困惑或問題解不出來的感覺;但透過錯誤,我們才有辦法深刻地理解一個領域或概念。當我們終於克服挑戰時,也才會感覺到腦內啡帶來的成就感。我們不喜歡玩毫無成就感的遊戲。
下面就和大家分享,在這半年的學習過程中,兩個我認為最重要的關鍵:
- 完美並不存在,修正才是常態。
- 接受自己永遠學不完,重點於達成目標。
完美並不存在,修正才是常態
我在學習時,有時還是會想像,會不會真的適合寫程式的天才,不會在這麼基礎的問題遇到困難。都是一學就會,馬上就能解決問題。
然而就算連 PHP 之父 Rasmus Lerdorf,也常常說這樣的話:
「我其實很討厭寫程式,但我喜歡解決問題。」、「有些人熱愛寫程式,我真不懂為什麼。」、「我不是一個真的工程師。我把東西弄一弄,弄到能跑之後就不管了。」
接受自己永遠學不完,重點於達成目標
前端技術的更迭非常的快,可能前幾年還在火的 jQuery 框架,隔了幾年就成了 React / Vue /Angular 的大框架時代。因此,我們永遠也不可能學完所有的技術或知識。
但這並不代表我們就要混吃等死,而是重新專注於目標。
如果我們的目的是進跨國的公司,那這些公司都用哪一些框架?他們開發了什麼工具?如果我們的目標,是能夠開發一些工具幫助到其他人,那哪一些套件能更容易達到?以上的思考方向,才是面對成堆選項時,第一時間該思考的問題。
釐清自己的目標後,再回來思考是否需要學習該技術。我曾經也有很強烈的 FOMO(Fear Of Missing Out)症候群;但真的回來思考,我需要這麼多資訊嗎?其時多數的時候未必。
重新釐清自己的目標後,堅定地朝自己的目標前進即可。無須總是追求最新的技術,重點還是在釐清自己的目標,以及規劃如何達到目標。
學習是一條充滿挑戰的路
學習是一條充滿挑戰的路,就像上面看到的,一開始都會覺得一切事物很棒;但隨著成長和實際運用,會遇到一連串的挫折和困惑。這個過程慢慢持續到中期後,忽然間需要的知識就串在一起,讓你能夠駕輕就熟地完成目標任務。
且學習本身就像是在織網,一開始僅有一點點基礎。隨著網越來越大,需要花更多的心力,才能擴張整張網。每一次從越來越大張的網擴張,都會讓複雜度增加。
但直到某一天,網的基本架構成型,你也對織網的過程駕輕就熟,擴張網的大小就變得不再那麼困難。因此別擔心影響你的是天賦,在成功織出一張網以前,需要的都並非天賦。
雖然我也仍然在學習當中,但希望在這個過程中的心得,能夠給正在閱讀中的你一些動力。有任何的想法或感觸,也歡迎你留言給我!
參考資料 Reference