小孩子該不該學習程式設計?

Programmer,中文翻程式設計師,中國翻程序員,是最近這些年很熱門的職業選擇,影響所及,很多家長就覺得,要讓小孩子從小就接觸這方面的東西,小小年紀就趕快送去程式設計的課程,好好啟蒙一番。

這樣做,究竟是好還是不好,真正的答案或許要等這批小孩子長大才會知道。

不過,我以一個在 IT 業界打滾過二十幾個年頭的工程師角度來看,或許可以講一些我自己的看法。既然是我個人的看法,就有可能是偏頗與錯誤的,若有疏漏抑或與現實狀況不符之處,就請多多海涵。

這篇文章不會透過 Social Media 轉推出去,因此跟這篇文章有緣,有看到的就當成一個曾經的軟體工程師中年阿伯碎念一些小觀念。

程式其實只是一種手段

平心而論,我是不贊成小孩子就送去學程式設計的。

我們念資工的,其實真正在學的,是解決問題的思維與手段。面對一個複雜的問題,你手邊能用的工具越多,就越有可能找到正確的理論與工具去優雅而快速的解決它,例如今天你衣櫃的門鬆了,需要用釘子固定上去,假如你家裡只有一把螺絲起子,你也只能夠把它反著握,然後當成槌子來用。假如你有準備多種 Size 的槌子,就可以根據你施力的大小來決定要用哪一種槌子處理這樣的需求。

同理,在職場或者真實世界裡面,會遇到很多千奇百怪的問題,問題的解決方案,都是想要用最少的成本達到最大的效益,用最低的系統需求達成最高的吞吐量。那麼,狀況就來了,你怎麼找到那一條快速的路徑,可以透過數學或者資訊學界的理論,來解決這個問題? 這時候,你學過的工具越多,就越有機會可以找到正確的模型與演算法,以快速而優雅的角度切入解決。

程式語言在上面的過程裡面,是扮演最後那支槌子,就是解決問題的方法找到之後,必須要有一個媒介去把這個東西實作出來,然後上場真正解掉問題。你用哪一種語言去解決,端看你對程式語言的理解程度與解法是否適合該種語言發揮,沒有所謂一種語言走遍天下的概念。

選擇切入點很困難

在這樣的情況下,小孩子去學程式設計這件事,就會變得有點進退不得。從演算法資料結構離散數學線性代數開始教? 太難了,當中有很多基礎知識要堆疊。只教基本邏輯運作,跟真實世界運作的程式語言技巧又離太遠,頂多就是培養小孩子的邏輯觀念,雖然我覺得邏輯觀念也是很重要的一個能力,但是可以有很多其他管道學習,不一定非得要透過程式課程來做。

另一個關鍵是,小孩子接觸的第一個語言,往往會形塑他們對於程式這東西的想像。每一種語言都有它自己的特性,有的語言擅長多工與大型物件模型,有的語言希望可以用簡單的語法與沒那麼複雜的結構讓取用的人快速上手,有的語言以物件導向為出發點,所以萬事皆物件,有的語言則是把記憶體與程式運作邏輯的管理完全交給程式設計師去決定。

對於第一個接觸到的程式語言越熟悉,之後要轉換思維就會需要花越多的功夫,除非你一開始就學很難的語言,例如 C++ 這種,因為他夠廣夠深,所以之後轉換其他語言相對就沒那麼困難。不過教小孩子學 C++ 是一條漫長的道路,光記憶體模型與物件對應關係還有 Standard Template Library 就會卡關很久,我相信鮮少有小孩子的程式設計課會挑 C++ 來挑戰,或許有,只能佩服他們的勇氣。

程式設計課程真實面貌

好的程式基本上背後都有配合的好邏輯與演算法,再套上正確的資料結構,並不是熟悉一種語言之後就可以解決所有問題。基礎 IT 知識不夠,或者對於問題所處的現況不夠理解,都會引導出錯誤的解法與難維護的程式碼,最終造成更大的災難。

前兩年程式設計有點被吹捧過度,所以很多程式設計課程雨後春筍般開出來,針對小孩子的程式課程、程式營隊也是如火如荼一個接一個開下去,一瞬間,仿佛沒有讓小孩子跟上這股潮流的家長就是讓自己小孩輸在起跑點。

但是送過去之後真正在學甚麼,我想大多數家長應該也是不清楚,畢竟那是另外一個專業領域,就算補習班營隊主辦有心要解釋,家長大概聽了也是一頭霧水。

很有可能花大錢送過去學習的,就是學怎麼用程式積木來堆疊邏輯,用圖像式的介面引起小孩子的學習動機,然後跟著老師的引導一步步完成一個又一個的學習段落,最終做出成品,讓家長可以看到最後會動的程式,皆大歡喜。

這個過程當中,小孩子可以真正學習到能夠上陣的程式知識嗎? 這一點我是存疑的。如果這樣,那資策會或者某匠開的程式設計課程,一個班都超級貴,不就都是開假的,因為開給小孩子的訓練課程都可以訓練出可用的程式設計人員了,人家幹嘛花大錢去上課。

事實就是,設計給小孩子的課程肯定不會太難,也不會跟業界真正在用的程式技術有太深的牽扯。要先引起動機讓小孩子願意學,才有機會進一步讓小孩子肯乖乖待在教室裡面上課,怎麼可能跟他們解釋甚麼叫做物件的介面,然後多執行緒鎖定怎麼做,有幾種鎖定類型?

家長花了錢讓小孩子去上程式設計課程,小孩子順家長的要求去學這個課程,補習班與營隊用心去準備這些課程,三方面看起來都有獲益,如果認真問下去,小孩子學到哪些東西,真的可以在以後的生活裡面派上用場嗎? 可能是一個過於尖銳的問題,也問不到真正的答案。家長感到安心這件事比較重要。

結語

純粹以程式設計課程的角度來看,我認為是不必讓小孩子過早接觸這一段的,與其要把他們關在那邊看老師表演很多邏輯與程式碼撰寫,倒不如放他們自由,去做自己想做的事情。小學以前的生活很寶貴,課業壓力還沒那麼重的時期,小孩子其實可以有大把的時間花在自己真正想要做的事情上,看書也好戶外活動也罷,都會比被強迫學習半吊子的程式課程來得有意義。

如果真的對軟體設計這一塊有興趣,以後等到心智成熟一些,現在網路上資源很多,也有很多真正有實力的講師在開課,有動機的狀態下去學習,獲得的功效會是好幾倍,也會更有效率。

不過,若是以要讓家長心安的角度出發,那送小孩子去程式設計課程就是一種可以達到這目的的工具了,也算是符合資訊業界的行為模式,為問題找到一個最合適的解法。

只能說,現代家長難為啊。

Share