最近幾年,STEAM教育一下子被推到風口。
尤其是“少兒編程”受到各路人馬追捧,不僅各種主打線上編程教育的初創(chuàng)公司遍地開花,一些傳統(tǒng)的線下學科培訓機構(gòu)也紛紛開始開設少兒編程課程。
少兒編程的“一夜火爆”,背后少不了國家政策的支持。
2017年,國務院印發(fā)了《新一代人工智能發(fā)展規(guī)劃》,其中明確提到:
“實施全民智能教育項目,在中小學階段設置人工智能相關課程,逐步推廣編程教育,鼓勵社會力量參與寓教于樂的編程教學軟件、游戲的開發(fā)和推廣?!?/p>
這一文件等于為少兒編程教育機構(gòu)高調(diào)站臺。
另一方面,和語文、數(shù)學、英語等學科培訓以及藝術培訓相比,編程課還算“小眾”。
所以很多機構(gòu)也瞄準了這塊潛力巨大的市場,鋪天蓋地地搞起了宣傳。比如說號稱說要教給孩子“人工智能”,或者號稱孩子學幾節(jié)課就可以做出很厲害的作品。
對于父母而言,自己懂得編程的人并不多,真的自己就懂編程的家長可能都996去了,沒時間管孩子的課外班;要么就自己在家教了。
這就導致許多家長會被鋪天蓋地的廣告所“迷惑”,無法做出正確的判斷。
我自己從小就接觸編程,參加過信息學奧賽,在現(xiàn)實生活中,也在幫自己孩子規(guī)劃編程學習路線。我寫這篇思考干貨的初衷,其實是分享我的思考新得,從而給廣大家長提供一份編程啟蒙避坑指南。
需要提前說明的是,這篇指南只從整體的角度探討,不針對任何具體的培訓機構(gòu)。
為什么機構(gòu)說學編程要趁早?
幼兒園就要開始學?
我們這一屆家長,其實很少有人從小就接觸編程。很多人可能到高中甚至大學之前都沒有摸過電腦。
作為一個“異類”,我自己是從小學的時候就開始邊玩邊學編程了。
那時候的編程還不像現(xiàn)在有各種圖形化、看上去很好玩的環(huán)境和工具,都是直接編寫程序代碼的。我認為小學作為編程的起點是可以接受的。
我自己也帶過一些孩子學習簡單的編程,盡管每個人接受程度不同,但總體而言,小學二年級(7~8歲)的孩子,其實都已經(jīng)可以理解編程的基本概念和邏輯了,比如指令、循環(huán)、分支、變量等等。
不過,這是否就意味著學編程越早越好呢?
曾經(jīng)有一個著名的“雙胞胎爬梯實驗”:
一對雙胞胎,其中一個寶寶在48周時開始訓練爬樓梯,另一個寶寶在52周時才開始訓練,結(jié)果兩個寶寶都在54周的時候?qū)W會了。
學編程也是一樣,晚點開始,也未必就會落后,可能還能幫你省點錢。
這是因為一旦孩子的抽象思維和邏輯思維有了一定發(fā)展,編程中很多概念就可以被很快理解了;但反過來,你給一個幼兒園小朋友講這些東西,就需要花很長很長時間,他們還沒辦法完全理解。
小孩子無法理解這些抽象的概念怎么辦呢?
那就只能搞所謂的“寓教于樂”了:以玩為主,把戰(zhàn)線拉長。這樣做對于機構(gòu)其實也有好處,因為孩子報培訓班都是有一定粘性的,早點把你圈進來才能讓你一直學下去。
學編程有什么用?
能提高可能成績、幫助升學?
機構(gòu)宣傳的那些好處可能都比較注重實用性,我們先不說這些。
從家長角度來講,學習編程的好處其實還是在以下兩方面:
第一是培養(yǎng)“如何解決問題”的思維方式。
編程思維的核心,其實是把復雜的問題分解成一個一個較小的模塊,而其中的一些模塊應該是可以重復使用的。
預先設計好這些模塊之間的聯(lián)系,逐個實現(xiàn)這些小模塊之后,再把它們都整合到一起——這種能力對于解決任何問題都有幫助,也是讓孩子學習編程最大的收獲之一。
第二是“調(diào)試”這個過程所體現(xiàn)的價值。
沒有人能一次把程序?qū)憣?,寫完之后一運行,總會發(fā)現(xiàn)這樣、那樣的問題,這時候就需要進行“調(diào)試”。
調(diào)試對于孩子來講其實是個很痛苦的過程,有時候調(diào)了半天還是不行,就很有挫敗感。但這個過程恰恰能鍛煉很多能力,比如怎樣找到問題出在哪里,其實有很多技巧和方法;還要有足夠的耐心和敏銳的觀察力——這些都是放在任何領域都很有用的能力。
至于用編程來提高課內(nèi)成績,理論上也許可以做到,但現(xiàn)實中并沒有太多數(shù)據(jù)支持,所以大家也別太當真。
另外,編程是否能幫到升學,也是大家很關注的問題。
我觀察到的是:跟升學相關的“硬通貨”比賽賽事其實是非常少的。
比如拿NOI(全國青少年信息學奧林匹克競賽)來說,每年全國比賽金牌也就幾十個,其實是非常小眾的。如果我們拿這個獎牌作為學編程的目的,就會搞得像曾經(jīng)的“全民奧數(shù)”一樣,家長和孩子都身心俱疲,也沒什么意思了。
學習任何東西都是同樣的原則:興趣為先,適度引導。
AI時代,學編程才有飯吃?
孩子能自己編寫AI程序?
自從前兩年Google的人工智能軟件AlphaGo擊敗人類最頂尖的圍棋選手以來,人工智能一夜之間成了一個家喻戶曉的名詞。所有的機構(gòu)都在拿人工智能說事兒,比如說:“人工智能編程,讓兒童贏在未來”等等。
我們說的人工智能,其實是指以“機器學習”為主的一種軟件系統(tǒng)。
機器學習又是什么呢?
著名人工智能專家吳恩達(Andrew Ng)在他主講的斯坦福大學機器學習課程簡介中是這樣說的:
“機器學習是一門研究讓計算機無需專門編寫程序,就能完成工作的科學?!?/p>
也就是說,機器學習的目標就是“不需要編程”,意外嗎?
機器學習解決了一些復雜的特征識別問題,比如說一張圖片上面是貓還是狗,我們用傳統(tǒng)的指令編程很難讓計算機完成這個任務,因為貓和狗的特征太復雜了,不是能用指令描述清楚的。
而機器學習的思路就是甩給計算機幾萬張圖片,每一張都事先標好答案,比如這張是貓、那張是狗、這張什么都不是。用這些學習材料去訓練計算機,讓它自己找到貓和狗的特征,再去判斷它沒見過的圖片里是貓還是狗。
因此,相比編程本身來說,人工智能和數(shù)學的關系其實更強。學編程只能幫你更好地理解人工智能的工作方式。
如果你問我什么人在人工智能時代一定有飯吃,我會說“數(shù)學家”;至于程序員,其實已經(jīng)有人用遺傳算法和神經(jīng)網(wǎng)絡教會計算機自己編程了,等于和程序員搶飯碗,你顫抖了嗎?
還有些父母聽說可以讓孩子自己編寫很厲害的人工智能程序,感到非常心動,比如“讓孩子自己獨立編寫的動作捕捉程序”。
懂編程的人一看就知道這是哄小孩玩的——怎么定義的“自己編寫”呢?
給孩子一個打包好的工具箱,里面有一個現(xiàn)成的工具就叫“動作捕捉”,然后讓孩子自己寫一行代碼(其實是照抄一行代碼),調(diào)用一下這個工具,搞定。
這種東西從學習的效果而言有什么意義呢?更多是為了讓家長不明覺厲,心甘情愿掏錢吧。
其實,現(xiàn)在的人工智能離真正我們期待的“智能”還差得遠。
如果機器學習本身的原理沒有突破,那么可預見的將來,它依然會離“智能”差得遠。
未來,人工智能將替代一部分人類工作,但我們不能把它看成是一種威脅,而是一種新的機會。
我們作為父母,面對人工智能時代的時候,應該讓孩子“練好內(nèi)功”,而不是趕現(xiàn)有技術的“時髦”。至于人工智能,等有了一定的數(shù)學和計算機科學底子再去了解它也不遲。
我們環(huán)顧四周的課外班,就會發(fā)現(xiàn):搞機器人的機構(gòu)比搞編程的機構(gòu)要多得多。這里面有很多原因。
首先,很多機構(gòu)最初都是搞樂高培訓起家的,從搭積木到機械結(jié)構(gòu)、再到自動化是一個比較自然的路徑。
再加上樂高自己也有WeDo、EV3這樣的機器人教育模塊,因此機構(gòu)在這方面的準備更充足一點。
其次,學機器人是需要購買硬件設備的,也可能成為機構(gòu)的一個利潤來源,而學編程賣得就只有課時了。
最后,機器人領域里可以有很多大大小小的比賽,這些比賽都是組隊參加的。盡管水平可能良莠不齊,但搭配組合、培訓后總能拿出成績,孩子也可以拿到幾張證書,皆大歡喜。而編程在大眾賽事這方面就比較缺乏,也和它的特點也有一定的關系。
父母該如何看待機器人教育?
我認為機器人學習其實是一個交叉領域,盡管也會涉及到一部分編程,但是在少兒階段,學習的內(nèi)容還是集中在邏輯控制層面,并不會特別深入。
所以到底讓孩子學機器人還是學編程,應該從孩子的興趣出發(fā):許多孩子對于機器人這種比較“現(xiàn)實”的東西更感興趣,而另一些孩子更喜歡“搞腦子”。
從STEM教育的角度來看,其實兩者都很好,無所謂孰優(yōu)孰劣。
我也看到過一些機構(gòu)非要忽悠家長說學機器人比學編程好,理由是學編程只能在電腦上搞虛擬的東西,機器人這種能做出真東西的才有用——這就是別有用心了。
假如你孩子喜歡編程,但機構(gòu)卻極力推薦你去學機器人,那大概只能說明他們的機器人課更有優(yōu)勢,或者說能帶來更多利潤。
多種編程語言
到底學哪種比較好?
許多人聽過不少編程語言,比如Scratch、Python、C++等等...到底學哪種呢?
其實你在市面上能見到的絕大多數(shù)少兒編程機構(gòu),都是學Scratch或者類似的Scratch的積木式編程。
Scratch是MIT(大名鼎鼎的麻省理工學院)開發(fā)的一款圖形化編程軟件,在全世界少兒編程教育領域都非常流行,它的特點就是簡單易學,上手快,幾分鐘就可以做出一些好玩的作品。
簡單易學不光是對小朋友容易學,對于機構(gòu)的老師們也容易學。
少兒編程機構(gòu)可以遍地開花,但是老師的缺口不是一時半會兒能夠補上的——很多老師也都是半路出家的,那么顯而易見,Scratch是最容易上手的,所以絕大部分少兒編程機構(gòu)都只有能力調(diào)集Scratch師資。
至于Python之類的正經(jīng)編程語言,師資培訓和教研體系建設的難度要高上數(shù)倍,大部分機構(gòu)其實都開展不了或者水平有限,真正有能力開展的屈指可數(shù)。
Scratch雖然好玩,但是它本質(zhì)上還是個小孩玩具。
盡管號稱Scratch可以開發(fā)很復雜的項目,但是以它的設計模式,如果真做個大項目能累死你!
我自己就嘗試過,看著那些花花綠綠的積木堆在一起,真得有點腦殼疼。
Scratch其實更適合拿來培養(yǎng)興趣,學習一些基本的編程邏輯,如果一個機構(gòu)讓孩子學Scratch超過兩年,那么家長可以判斷這個機構(gòu)比較“水”了,很可能后面也拿不出什么東西。
如果孩子已經(jīng)通過Scratch入門了,我的建議是:要盡快轉(zhuǎn)向?qū)W習正規(guī)的編程語言,只有使用正規(guī)的編程語言,才能學會嚴謹?shù)乇磉_程序結(jié)構(gòu)和邏輯。
具體學哪種語言,要看孩子想做點什么。
比如說,想開發(fā)iPhone的App,那就學Swift;想開發(fā)微信小程序,那就學習Javascript;如果打定主意要走競賽路線的,那就學C++吧,NOI選擇C/C++作為規(guī)定語言,是因為它們更貼近計算機底層的工作方式,說白了就是更加“硬核”。
如果還比較迷茫、找不到什么特定的目標,我建議可以讓孩子學學Python,因為Python在各個領域都有廣泛應用(比如機器學習),也可以寫小游戲(比如基于pygame等引擎)。
有一點想說的是:無論你讓孩子去學習什么語言,都要引導孩子去關注那些核心和基礎的東西。
比如:計算機的結(jié)構(gòu)和工作原理;計算機的操作系統(tǒng);編程語言相關的底層知識,以及基本的算法和數(shù)據(jù)結(jié)構(gòu)知識。
這些東西,從計算機誕生的那一天起幾乎就沒變過,正所謂“練好內(nèi)功”才能“以不變應萬變”。
到了這個學習階段,一般孩子年齡也比較大了,應該具備一定的自學能力了。
我認為可以不拘泥于在機構(gòu)學習,還有很多途徑可以學習這些知識,比如書本、在線課程(MOOC之類的,中文課程也非常多),甚至還有一些提供交互式課程的App(比如蘋果的Swift Playgrounds)。
在這個階段,如果自己家沒有家人懂編程的話,讓交一個懂編程的朋友,比找個機構(gòu)更管用。孩子學習的過程中有靠譜的人隨時給答疑,或作出實時指導,效果自然會好很多,家長可以多請人家吃吃飯表示感謝。
報編程班
應選線上還是線下?
這一部分是我的個人觀點:我認為對于低年齡段的孩子,相比線下機構(gòu),線上學習反而更有優(yōu)勢。
首先,編程教學本身就是在屏幕上進行的,也就天然適合線上的方式;線下教學也是看老師的電腦屏幕,本質(zhì)上也沒太大區(qū)別。
從實踐而言,線上課堂我們當家長的可以看到孩子到底在學什么。即便不是專門旁聽,你沒事路過瞄兩眼也能了解個七八分;而線下課一般家長是不陪同的,我不太容易掌握老師教得好不好,孩子學得好不好。
其次,我之前提到了編程師資的培訓難度。盡管我認為Scratch比較容易,但要在短時間內(nèi)讓老師具備深厚的教學功力,依然很困難。此外,Scratch教學離不開很多有趣好看炫酷的工程實例,這些東西都是需要專門的團隊花時間和精力去制作的。在這一點上,線上機構(gòu)就可以有規(guī)?;膬?yōu)勢:用集中團隊進行教研,也可以用少數(shù)精銳的老師去教更多的學生,我認為課程的質(zhì)量應該更好一些。
再者,線上課的價格一般也比線下機構(gòu)更便宜。
那線下班又有什么獨特優(yōu)勢呢?
我認為,線上機構(gòu)的課程要照顧的群體比較大眾化,且老師很難觀察到學生的接受度,因此線上課程進度設置上比較寬松緩慢,也很難針對某個孩子的疑惑進行具體的指導,(除非是一對一的課)。
而這些劣勢,則是線下班的長項。所以家長要多觀察孩子的學習情況,選擇合適的方式學習。
普通家長怎么判斷編程老師的水平?
無論教什么學科,我認為老師最重要的素質(zhì)只有三條:
第一:專業(yè)知識積累夠深,相關知識面夠廣;
第二:能夠用形象的表達方式(包括口頭、圖解甚至動畫)講述知識點,并且能夠提煉出一些規(guī)律;
第三:擅長使用引導的方式讓孩子自己達成目標。
第一點應該很容易理解,老師要教100%的內(nèi)容,自己必須要200%的儲備。
那么在家長自己不太懂編程的情況下,怎樣直觀地判斷老師的水平呢?
我覺得可以看老師對孩子提問的反應:如果老師有足夠的知識儲備,對于孩子的提問應該可以應對自如;如果經(jīng)?;乇芎⒆拥奶釂枺嵌喟胧嵌亲永餂]有料。
另外,還可以看老師能不能針對孩子的作品提出有趣的改進或者拓展建議。
第二點也比較直白,老師講得是不是形象易懂。
家長即便不太懂編程,也能有個大致的判斷。比如說Scratch編程里面有講到坐標系的概念,有些老師會說像電影院里坐座位,第幾排第幾座,這樣一說孩子就很容易理解。
坐標系也可以進一步提煉一些規(guī)律出來,比如說一個角色水平移動的時候哪個軸的坐標是不變的?好的老師應該能講一些規(guī)律,而不是只停留在表面的一些概念。
至于第三點,好的老師上課要千方百計地引導學生思考并自己找到答案,而不是只把知識點講掉,帶著孩子做完一個作品就完事了。
比如說,做一個小項目的時候,老師有沒有引導孩子進行功能模塊的分解?在講解知識點的時候,有沒有引導孩子舉一反三,自己去發(fā)現(xiàn)一些規(guī)律?在孩子的程序沒有實現(xiàn)預期結(jié)果的時候,有沒有引導孩子自己找出問題?
家長也可以觀察,孩子學完一段時間后,能不能利用學過的知識做出自己的作品。很多在樂高機構(gòu)上課的孩子,跟著老師可以搭出很厲害的東西,但是讓他們自己獨立搭就抓瞎了,學編程可能也會遇到同樣的問題。
我認為這可能還是老師過于重視拿作品說話:因為作品是可以給家長看到產(chǎn)出的,所以手把手帶著孩子做出來就好了,并沒有花心思去讓孩子理解里面的一些規(guī)律,這樣的教法可能就值得商榷了。
我的總結(jié)
我們做父母的看待編程,不應該僅僅認為它只是一種具體的技能。編程是一種解決問題的思維方式,以及它背后所包含的那些基本原理。
少兒編程機構(gòu)的火熱,我認為是一件好事,可以提供給孩子們更多的選擇。但另一方面,我們要記住資本永遠是瘋狂的,如今的兒童編程領域充斥著各種熱錢,在這樣的狂熱中,希望這篇指南能幫你理性地做出判斷和規(guī)劃。
作者:周花卷。二胎爸爸,資深科技圖書譯者,全棧程序員
聯(lián)系客服