「其實程式設計師又笨又懶?」- 別用小聰明主宰學習
在教育現場多年,我們經常注意到學生有個非常不好的狀況,就是太依賴自己的「聰明才智」,寧願盯著螢幕發楞,鮮少動手將思路或資訊寫下。期待所遇到的難題都在自己曾經學過、老師講解過的範圍內,希望能透過學過的知識,甚至背過的公式來解決問題。
善用工具,少靠小聰明
在國小階段,有點天資的孩子這樣做或許還行,但是一旦到了國高中,這樣「只動腦不動手」的習慣所帶來的壞處將會會大大的顯現,這也是為什麼:到了越高等的教育階段,努力型的孩子總比天份型的孩子吃香。
說句不中聽的:有能力不靠紙本、圖像,單純在腦中演練就能得出解答的人,實屬少數。你是那少數的1%嗎?
橘子蘋果的好朋友 — 有熊老師,有著豐富的數學教學影片拍攝經驗,他曾經在一部影片中這麼說:「數學的目地,在於降低對智能及記憶的依賴」
依賴小聰明的問題…
而這些喜歡依靠小聰明的學生,有怎樣的行為呢?我們一起來看看:
- 不喜歡動手寫下算式,想要一眼看出答案
- 不喜歡用圖表幫助表達
- 傾向用「最聰明」、「最正確」的方法解決問題
以上這些行為,都帶來了這些問題:
- 習慣於等待最佳解法,失去學習主動權
- 習慣於等待最佳解法,失去原創解決方案的策略及心態
- 缺乏使用工具有效拆解、簡化問題的能力,面對複雜的問題即束手無策
但這些問題並不能全怪孩子,而是學校及社會總是教孩子「你應該要快、要聰明」「花很多時間去思考一個題目是不划算的,拿不到高分」。久而久之,我們的孩子就失去了「嘗試錯誤」、「原創解決方案」的能力。
也或許是這個原因,雖然我們在PISA、奧林匹亞等比賽上領先不少國家,卻在科學研究的表現平平,可以說得上是「贏在起跑點,輸在終點」。
其實程式設計師又笨又懶?
程式設計師反而跟許多人想像的不一樣,並沒有這麼的「聰明」。甚至在很多時候,程式設計師反而是很「笨」的!以演算法常用的小技巧 — 「枚舉法」為例,其實就是就是「一個一個」慢~慢~的~對每一個元素做處理。這個概念,其實就可以應用在國小高年級學到的「質數」上:
當我們要驗證「某數N是否為質數」時,只要「一個一個」地檢查每個「大於1且小於N」的數是否能整除N。要是都找不到,就代表N是質數。
為什麼明知道這個方法笨笨、慢慢的,但是程式設計師還是很常使用它呢?(尤其是懶得動腦的時候)
原來是因為程式設計師知道:電腦的運算速度非常快,而且不可能會出錯,因此在對於效能不是非常要求的情況下,「笨笨的」枚舉法就是很常見的實作方式了。
其實,這類做法不是「真的」笨,而是:電腦做運算的方式與人類不同,人類可以用觀察法或估算法、甚至藉由經驗法則一眼看出答案,但是電腦無法這麼做。所以當人類需要請電腦幫忙做計算時,需要「一步步、鉅細靡遺」地向它說明運算過程,也就是一行一行的程式碼。
這也是為什麼我常說「程式寫得好的學生,證明題也不會寫得太差」。好巧不巧,依賴小聰明的學生,通常也對證明題不太擅長。
孩子在台灣的教育環境待越久,越傾向能「快速」、「聰明」地完成題目,而打從內心排斥像程式一樣這麼「笨」的解算法。因此從根本性的思維上,這個學生便與程式設計的思維漸行漸遠,也學不成程式設計了。歸根究底,就是因為「沒有耐心」,希望一蹴可幾。
要成為程式設計師,你未必得絕頂聰明,
但你必須具備接納各種可能性的智慧
世界上的程式設計師很多,絕頂聰明的人只佔少數,但是幾乎所有的程式設計師都有一個特質,那就是「解決問題的心態」。為了解決問題,他們會想盡辦法找尋可能的方案或工具,並試著將它整合到面臨的問題上。而這個過程,需要的是分析問題、拆解問題的智慧及耐心。
所以,想當個程式設計師,先從捨棄「小聰明」開始吧!