Code 總是學不好,是學校老師有問題還是你學習方法根本錯了?

2013 年 10 月號親子天下雜誌中,詹志禹教授所撰寫的 〈為何大師培養不出大師?〉 一文提到:

「專家不理解生手,常因不耐煩而成為學習殺手。」

「生手常遭遇理解方面的困難,最常見的就是抽象度。專家善於將具體事物抽象化,以便得到意義和通則。」

「父母教不會孩子,教師教不會學生,大師培養不出大師,其原因都類似:他們都在成為專家之後,使用抽象邏輯,忘記心理順序,忘記初學者的思考方式與困難,又誤以為透過語言符號就能傳輸意義,選錯策略卻又發脾氣,所以大師就培養不出大師。」

  • 如果在教與學無法相長的情況下,學生應該如何靠自己的力量提升自身的能力呢?

韋伯字典對「學習」的定義是:去用腦筋;去讀書和做觀察,以便理解涵義、學到知識及技巧。

而 L.Ron Hubbard 所撰寫的《基本學習手冊》一書中也提到,有的學生學完一門課程,最後卻無法把它應用出來,這是因為他上課只是為了應付考試,而不是為了應用所學,而這也就是為什麼這些人在畢業後無法應用所學的主因。

因此,在學校求學時,不要老想著:這究竟會不會考?最好問問自己:「我應該如何運用這些資料呢?」或者「我該如何真正地應用這些資料呢?」

就拿我在「學習程式設計」這門課所看到的來說好了。初學者在遇到困難時,總是會說「因為我的英文不好,所以看不懂語法」,或者「專有名詞太多了所以記不起來」,又或者「老師講解的速度太快了,以致於跟不上」,彷彿這樣的說法能夠讓自己覺得比較好過一些。但是,學習的障礙依舊存在,它們不會因為這些理由而消失。

所以,我們應該正視問題的本身,去找出解決的方法,才能突破學習上的障礙,而最好的方法莫過於本身具備學習的能力與正確的學習方法,如此,才能內化所學習到的知識,並做實際的應用與變化。

基本學習手冊》一書中指出,有三種明確的障礙,會讓人無法繼續學習,而且別人也因此而無法教育他,這三種障礙分別是:

  • 第一種障礙:缺乏實體物

教導一個人操作某物時,卻沒有實體物讓他操作,會使他的學習變得很困難。

例如,在學習 C# 物件導向程式語言時,若只是聽老師說,物件是包含一些行為和屬性的組合體,可能就會過於抽象;若是能開啟 IDE (integrated development environment) 整合開發環境,看一看工具箱裡的工具,並撰寫一個簡單的「Hello World.」程式,那麼對於物件的理解就會比較明確。

  • 第二種障礙:學習的梯度過陡

學習的梯度,是指一步接一步,一級接一級,逐漸完成某事的過程。因此,一個人在學習中遇到太陡的梯度,就會產生困惑的現象。

簡單來說就是,當你連搜尋語法中的邏輯運算子 ( +、OR、-) 都搞不清楚時,就想寫一支 Crawler 程式,那就會顯得困難重重。

  • 第三種障礙:誤字的存在

誤字,是一個學習者不了解或誤解的字。因此,若在學習的過程中,遇到了一個不清楚或不了解字之後,就會感覺困惑,不能了解並且無法再學習下去。

雖然有些編程人員會告訴你,寫程式只要會剪下跟貼上這兩招就行了,但是,如果你連語法都看不懂,就別提你要把剪下來的語法貼到哪裡去了。

  • 在了解了學習的障礙之後,當然就是對症下藥。所以,如何自我學習呢?

(1) 學習具體化

如果正在學習如何編寫程式,就坐到電腦前,從安裝程式語言到模仿書上的範例到能自己修改程式,再繼續探究下去。

(2) 注意學習的難度

如果發現老師所教的跟自己所理解的落差太大,最好的解決方法就是降低梯度,去找出能夠彌補落差的相關資料

(3) 清誤字

如果你在學英文卻看不懂句子時,先確定句子裡是否有自己不了解的單字。若還是無法理解,就再確認英文語法的用法,而這是需要時間去累積出來的。

(資料來源:基本學習手冊親子天下 10 月號 ;圖片來源: the measure of mike, CC Licensed)