在程式設計領域,近來不斷見到「人人都該學寫程式」相關話題,多到不禁令人思考這是否為單一價值觀。

更有不少人宣揚從小進行程式設計教育的重要性,這彷彿看到了從小就學英文、從小就學理財、從小學圍棋……「XX就要從小開始」的論調。

如雨後春筍般地呼籲
在一堆呼籲當中,最具代表性的,就是Code.org網站在2月發佈的影片《What most schools don't teach》。

影片以Apple創辦人Steve Jobs引言開頭,並邀請了Microsoft、Twitter、Facebook、Dropdbox等各公司的創辦人Bill Gates、Jack Dorsey、Mark Zuckerberg、Drew Houston等各科技巨頭,談到他們第一次程式設計經驗、程式設計對他們來說是什麼?為什麼每個人都可學程式設計?至今這段影片仍在Code.org首頁播放中。

另一具代表性的呼籲,是MIT Media Lab計劃執行長Mitch Resnick的演講《Reading, Writing, and Programming》,演講重點之一在於透過程式設計,年輕人將能夠更加熟練地掌握新科技,熟練不單指與新科技互動,而是指可以運用科技表達自己、表達想法、輕鬆創作。

他並強調,程式設計不一定是撰寫程式碼,透過MIT Media Lab研發的Scratch,撰寫程式就像是組合積木,每個人都可以創造互動程式並在網路上分享,即使是他那80歲的母親也不例外。他並談到愛沙尼亞通過法令,將程式設計納入小學一年級課程中,連英國也在討論是否該教導小學生撰寫程式。

在《How to Summon Your Child’s Inner Coder》中,Raspberry Pi設計者Eben Upton談到他發明卡片電腦的動機,在於讓小孩不單是使用直覺到令人感到無聊的電腦平臺,而是可以重新把電腦當作嗜好,讓他們在玩樂之餘,同時學習如何分解問題並解決,任何涉及解決問題的工作都可以從中獲益。

為了引發小孩駕馭電腦的樂趣,除了價格人人可負擔的Raspberry Pi之外,還搭配了Raspbian作業系統,在Debian中預先安裝Scratch與Python,低年級孩童可透過Scratch的積木語法,獲得控制電腦的成就感,並習得基本邏輯,更大的孩子可透過Python,以文字來描述問題與解法。

而在《What most schools don't teach》中,真正吸引我的有兩段話,其中之一,是Mark Zuckerberg談到:「我開始寫程式的理由很簡單,我想這麼做,僅此而已,我想為自己和妹妹做些有趣的事……當我需要學習一些新東西的時候,我會嘗試在書裏或網路上尋找答案……」另一段是位女工程師:「軟體有其人文的一面,它其實是藉由電腦科技來幫助人們...」這段影片與《Reading, Writing, and Programming》中都談到的部份是,電腦深入每個領域,每個人隨時隨地都會使用到與電腦相關的產品,它們是我們隨手可用的工具,我們應當運用它解決手邊的問題,而不是被它們駕馭。

Mitch Resnick在演講中談到「建立程式碼的同時也在學習如何設計,怎樣將某個靈光乍現,變成一個成熟的、可運作的專案...怎樣將複雜的概念分割成更小的單位……」,《How to Summon Your Child’s Inner Coder》中,作者也談過類似概念。

這些人倡導學習程式設計,並非要大家將來都成為程式設計師,而是以此來學會如何增加學習、表達、創作與對問題的分解能力。

那麼,反過來思考,身為程式設計師的你,是否就真的擁有這些能力呢?你的想法是否被程式語言、技術給綑綁?你的生活是被網路、電腦、智慧型手機等工具給束縛,還是駕馭過它們來解決你身邊實際的問題?事實上我們知道,沒有學習、表達、創作與分解問題能力的程式設計師很多!

如果身為程式設計師都不具備這些能力,那不是程式設計師的你呢?看了這些影片、訪談或文章,「人人都該學程式設計」、「應該讓我的小孩也學一下程式設計」就會是你的結論嗎?

如果是個有獨立思考能力的人,無論工具是什麼,在想要解決問題或創造些什麼時,自然就會去學習與駕馭這些工具,即使工具不是程式設計,也能得到Mitch Resnick談到的「學習到的事物將更為多樣」。

如果你不是這樣的人,我完全不建議你學習程式設計,否則在擁有一知半解知識的情況下,只會危害你身邊真正的程式設計師。

從小學程式設計?

現今世界有不少的話題都與程式設計有關,擁有優秀程式設計能力就可以進Google、Facebook這類響亮公司,擁有吃不完的零食、健身設施與娛樂器材等福利,或者可能寫出憤怒鳥這類一夕致富的App。

人人學程式設計的下一步,就讓人開始想到從小學程式設計,將來才能擁有這份能力在世界上擁有競爭力。嗯?上一句話不覺得很眼熟嗎?把「程式設計」換成「英文」等學習題材,就是經常看到的補習班廣告術語,幸運地是,程式設計在臺灣並不算許多人心中的好職業,許多程式設計師也不想讓小孩將來走上相同的路,目前從小學程式設計,並沒有成為補習班極力推棒的對象。

最近網路上熱傳的《The Lost Interview》,是Steve Jobs於18年前談到的,「這個國家每個人都該學程式設計……因為程式設計教你如何思考……」,這也是《What most schools don't teach》開頭的引言,Steve Jobs並不是基於功利角度來談程式設計的學習,傳達的是程式設計會教你另一種思考方式,雖然他確實在當時就看好程式和Web,不過,有多少人因此讓小孩開始學程式設計呢?誰能預料十年、二十年後,引領世界話題的還是程式設計?

撇開功利不談,不少訴求從小學程式設計好處的文章,主要著眼於程式設計可培養邏輯,以及前面談到的分解問題、學習、表達、創作等能力,就算不投入程式設計產業,這些能力在其他領域也用得上。嗯?這句話照樣好眼熟,把「程式設計」換成「圍棋」、「繪畫」、「音樂」等,好像也行得通。我曾思考過,如果當初填上的志願不是電機而是資工,還會不會喜歡程式設計?我的答案是未必!

大學的時候,玩電腦是我逃避課業壓力時的嗜好;Eben Upton希望的也是小孩可以把電腦當作嗜好。嗜好這種東西的樂趣,通常不在最後成果,而是來自探索時,不斷主動獲取知識、技能,不斷思考如何解決遇到之問題的過程,能力不過是獲得這些樂趣的過程中自然形成的產物,並不是學了程式設計、圍棋、繪畫、音樂就會擁有這些能力。

這樣想的話,程式設計不過是另一門才藝課程。

瞭解工具與實際地解決身邊問題
回到人人該學程式設計的呼籲,既然程式設計有這麼多好處,如果你是程式設計師,試問自己,除了為公司、老闆或客戶的問題寫程式之外,是否為自己的問題寫過程式?你的程式設計技能是否真正為家人解決過問題?你是否曾將呼籲當中的那些能力展現在其他領域中?就如呼籲中宣稱的,那些能力在任何領域中都受用?

如果你不是程式設計師,記得程式設計就只是個工具罷了,把前面「程式設計」換成你其他工具技能,問自己相同的問題,別急著馬上學程式設計。

至於從小學程式設計,我不是教育專家,只知道小孩會模仿父母,如果你從沒在小孩面前解決過任何問題,沒創作過任何東西,沒有展現過任何探索過程的樂趣,那麼還是多留點時間,讓小孩可以擁有自己的嗜好。幸運的話,也許小孩的嗜好剛好是程式設計,或許你面對那些從小學程式設計的論調,就不會有那麼多煩惱了。

作者簡介


Advertisement

更多 iThome相關內容