少儿编程近期一直很火热,很多家长跃跃欲试。但也有很多疑问,比如:
-
孩子应该几岁开始学?
-
对升学真的有帮助吗?
-
报线上课还是先下课?
-
跟机器人课的区别是什么?
-
到底学哪种编程语言比较好?
-
要如何判断授课老师的水平呢?
...............
果仁妈今天分享的这份编程启蒙避坑指南,全是大实话,从编程的整体进行探讨,并一一解答,希望帮助你在狂热的少儿编辑培训中,理性地做出判断和规划。
最近几年,STEAM教育一下子被推到风口。尤其是“少儿编程”受到各路人马追捧,不仅各种主打线上编程教育的初创公司遍地开花,一些传统的线下学科培训机构也纷纷开始开设少儿编程课程。
少儿编程的“一夜火爆”,背后少不了国家政策的支持。2017年,国务院印发了《新一代人工智能发展规划》,其中明确提到:
“实施全民智能教育项目,在中小学阶段设置人工智能相关课程,逐步推广编程教育,鼓励社会力量参与寓教于乐的编程教学软件、游戏的开发和推广。”
这一文件等于为少儿编程教育机构高调站台。
另一方面,和语文、数学、英语等学科培训以及艺术培训相比,编程课还算“小众”。所以很多机构也瞄准了这块潜力巨大的市场,铺天盖地地搞起了宣传。比如说号称说要教给孩子“人工智能”,或者号称孩子学几节课就可以做出很厉害的作品。
对于父母而言,自己懂得编程的人并不多,真的自己就懂编程的家长可能都996去了,没时间管孩子的课外班;要么就自己在家教了。这就导致许多家长会被铺天盖地的广告所“迷惑”,无法做出正确的判断。
我自己从小就接触编程,参加过信息学奥赛,在现实生活中,也在帮自己孩子规划编程学习路线。
——我写这篇思考干货的初衷,其实是分享我的思考新得,从而给广大家长提供一份编程启蒙避坑指南。
需要提前说明的是,这篇指南只从整体的角度探讨,不针对任何具体的培训机构。
1 为什么机构说学编程要趁早?幼儿园就要开始学了?
我们这一届家长,其实很少有人从小就接触编程。很多人可能到高中甚至大学之前都没有摸过电脑。作为一个“异类”,我自己是从小学的时候就开始边玩边学编程了。
那时候的编程还不像现在有各种图形化、看上去很好玩的环境和工具,都是直接编写程序代码的。我认为小学作为编程的起点是可以接受的。
我自己也带过一些孩子学习简单的编程,尽管每个人接受程度不同,但总体而
言,小学二年级(7~8岁)的孩子,其实都已经可以理解编程的基本概念和逻辑了,比如指令、循环、分支、变量等等。
不过,这是否就意味着学编程越早越好吗?
曾经有一个著名的“双胞胎爬梯实验”:
一对双胞胎,其中一个宝宝在48周时开始训练爬楼梯,另一个宝宝在52周时才开始训练,结果两个宝宝都在54周的时候学会了。
学编程也是一样,晚点开始,也未必就会落后,可能还能帮你省点钱。
这是因为一旦孩子的抽象思维和逻辑思维有了一定发展,编程中很多概念就可以被很快理解了;但反过来,你给一个幼儿园小朋友讲这些东西,就需要花很长很长时间,他们还没办法完全理解。
小孩子无法理解这些抽象的概念怎么办呢?
那就只能搞所谓的“寓教于乐”了:以玩为主,把战线拉长。这样做对于机构其实也有好处,因为孩子报培训班都是有一定粘性的,早点把你圈进来才能让你一直学下去。
2 学编程有什么用?机构说能提高课内成绩?能帮助升学?机构宣传的那些好处可能都比较注重实用性,我们先不说这些。
从家长角度来讲,学习编程的好处其实还是在以下两方面:
1. 培养“如何解决问题”的思维方式
编程思维的核心,其实是把复杂的问题分解成一个一个较小的模块,而其中的一些模块应该是可以重复使用的。
预先设计好这些模块之间的联系,逐个实现这些小模块之后,再把它们都整合到一起——这种能力对于解决任何问题都有帮助,也是让孩子学习编程最大的收获之一。
2. “调试”这个过程所体现的价值
没有人能一次把程序写对,写完之后一运行,总会发现这样、那样的问题,这时候就需要进行“调试”。
调试对于孩子来讲其实是个很痛苦的过程,有时候调了半天还是不行,就很有挫败感。但这个过程恰恰能锻炼很多能力:
比如怎样找到问题出在哪里,其实有很多技巧和方法;还要有足够的耐心和敏锐的观察力——这些都是放在任何领域都很有用的能力。
至于用编程来提高课内成绩,理论上也许可以做到,但现实中并没有太多数据支持,所以大家也别太当真。
至于编程是否能帮到升学,也是大家很关注的问题。
我观察到的是:跟升学相关的“硬通货”比赛赛事其实是非常少的。
比如拿NOI(全国青少年信息学奥林匹克竞赛)来说,每年全国比赛金牌也就几十个,其实是非常小众的——如果我们拿这个奖牌作为学编程的目的,就会搞得像曾经的“全民奥数”一样,家长和孩子都身心俱疲,也没什么意思了。
学习任何东西都是同样的原则:兴趣为先,适度引导。
3 学编程才能在人工智能时代有饭吃?孩子能自己编写人工智能程序?自从前两年Google的人工智能软件AlphaGo击败人类最顶尖的围棋选手以来,人工智能一夜之间成了一个家喻户晓的名词。所有的机构都在拿人工智能说事儿,比如说:“人工智能编程,让儿童赢在未来”等等。
我们说的人工智能,其实是指以“机器学习”为主的一种软件系统。
机器学习又是什么呢?
著名人工智能专家吴恩达(Andrew Ng)在他主讲的斯坦福大学机器学习课程简介中是这样说的:
“机器学习是一门研究让计算机无需专门编写程序,就能完成工作的科学。”
也就是说,机器学习的目标就是“不需要编程”,意外吗?
机器学习解决了一些复杂的特征识别问题,比如说一张图片上面是猫还是狗,我们用传统的指令编程很难让计算机完成这个任务,因为猫和狗的特征太复杂了,不是能用指令描述清楚的。
而机器学习的思路就是甩给计算机几万张图片,每一张都事先标好答案,比如这张是猫、那张是狗、这张什么都不是。用这些学习材料去训练计算机,让它自己找到猫和狗的特征,再去判断它没见过的图片里是猫还是狗。
因此,相比编程本身来说,人工智能和数学的关系其实更强。学编程只能帮你更好地理解人工智能的工作方式。
如果你问我什么人在人工智能时代一定有饭吃,我会说“数学家”;至于程序员,其实已经有人用遗传算法和神经网络教会计算机自己编程了,等于和程序员抢饭碗,你颤抖了吗?
还有些父母听说可以让孩子自己编写很厉害的人工智能程序,感到非常心动,比如“让孩子自己独立编写的动作捕捉程序”。
懂编程的人一看就知道这是哄小孩玩的——怎么定义的“自己编写”呢?
给孩子一个打包好的工具箱,里面有一个现成的工具就叫“动作捕捉”,然后让孩子自己写一行代码(其实是照抄一行代码),调用一下这个工具,搞定。
这种东西从学习的效果而言有什么意义呢?更多是为了让家长不明觉厉,心甘情愿掏钱吧。
其实,现在的人工智能离真正我们期待的“智能”还差得远。
如果机器学习本身的原理没有突破,那么可预见的将来,它依然会离“智能”差得远。未来,人工智能将替代一部分人类工作,但我们不能把它看成是一种威胁,而是一种新的机会。
我们作为父母,面对人工智能时代的时候,应该让孩子“练好内功”,而不是赶现有技术的“时髦”。至于人工智能,等有了一定的数学和计算机科学底子再去了解它也不迟。
4 学编程和学机器人的区别在哪里?我们环顾四周的课外班,就会发现:搞机器人的机构比搞编程的机构要多得多。这里面有很多原因:
首先,很多机构最初都是搞乐高培训起家的,从搭积木到机械结构、再到自动化是一个比较自然的路径。
再加上乐高自己也有WeDo、EV3这样的机器人教育模块,因此机构在这方面的准备更充足一点。
其次,学机器人是需要购买硬件设备的,也可能成为机构的一个利润来源,而学编程卖得就只有课时了。
最后,机器人领域里可以有很多大大小小的比赛,这些比赛都是组队参加的。尽管水平可能良莠不齐,但搭配组合、培训后总能拿出成绩,孩子也可以拿到几张证书,皆大欢喜。而编程在大众赛事这方面就比较缺乏,也和它的特点也有一定的关系。
5 父母该如何看待机器人教育呢?我认为机器人学习其实是一个交叉领域,尽管也会涉及到一部分编程,但是在少儿阶段,学习的内容还是集中在逻辑控制层面,并不会特别深入。
所以到底让孩子学机器人还是学编程,应该从孩子的兴趣出发:许多孩子对于机器人这种比较“现实”的东西更感兴趣,而另一些孩子更喜欢“搞脑子”。
从STEM教育的角度来看,其实两者都很好,无所谓孰优孰劣。
我也看到过一些机构非要忽悠家长说学机器人比学编程好,理由是学编程只能在电脑上搞虚拟的东西,机器人这种能做出真东西的才有用——这就是别有用心了。
假如你孩子喜欢编程,但机构却极力推荐你去学机器人,那大概只能说明他们的机器人课更有优势,或者说能带来更多利润。
6 多种编程语言,到底学哪种比较好?
许多人听过不少编程语言,比如Scratch、Python、C 等等...到底学哪种呢?
其实你在市面上能见到的绝大多数少儿编程机构,都是学Scratch或者类似的Scratch的积木式编程。
Scratch是MIT(大名鼎鼎的麻省理工学院)开发的一款图形化编程软件,在全世界少儿编程教育领域都非常流行,它的特点就是简单易学,上手快,几分钟就可以做出一些好玩的作品。
简单易学不光是对小朋友容易学,对于机构的老师们也容易学。
少儿编程机构可以遍地开花,但是老师的缺口不是一时半会儿能够补上的——很多老师也都是半路出家的,那么显而易见,Scratch是最容易上手的,所以绝大部分少儿编程机构都只有能力调集Scratch师资。
至于Python之类的正经编程语言,师资培训和教研体系建设的难度要高上数倍,大部分机构其实都开展不了或者水平有限,真正有能力开展的屈指可数。
Scratch虽然好玩,但是它本质上还是个小孩玩具。
尽管号称Scratch可以开发很复杂的项目,但是以它的设计模式,如果真做个大项目能累死你!我自己就尝试过,看着那些花花绿绿的积木堆在一起,真得有点脑壳疼。
Scratch其实更适合拿来培养兴趣,学习一些基本的编程逻辑,如果一个机构让孩子学Scratch超过两年,那么家长可以判断这个机构比较“水”了,很可能后面也拿不出什么东西。
如果孩子已经通过Scratch入门了,我的建议是:要尽快转向学习正规的编程语言,只有使用正规的编程语言,才能学会严谨地表达程序结构和逻辑。
具体学哪种语言,要看孩子想做点什么。
比如说,想开发iPhone的App,那就学Swift;想开发微信小程序,那就学习Javascript;如果打定主意要走竞赛路线的,那就学C 吧,NOI选择C/C 作为规定语言,是因为它们更贴近计算机底层的工作方式,说白了就是更加“硬核”。
如果还比较迷茫、找不到什么特定的目标,我建议可以让孩子学学Python,因为Python在各个领域都有广泛应用(比如机器学习),也可以写小游戏(比如基于pygame等引擎)。
有一点想说的是:无论你让孩子去学习什么语言,都要引导孩子去关注那些核心和基础的东西。
比如:计算机的结构和工作原理;计算机的操作系统;编程语言相关的底层知识,以及基本的算法和数据结构知识。
——这些东西,从计算机诞生的那一天起几乎就没变过,正所谓“练好内功”才能“以不变应万变”。
到了这个学习阶段,一般孩子年龄也比较大了,应该具备一定的自学能力了。我认为可以不拘泥于在机构学习,还有很多途径可以学习这些知识,比如书本、在线课程(MOOC之类的,中文课程也非常多),甚至还有一些提供交互式课程的App(比如苹果的Swift Playgrounds)。
、
在这个阶段,如果自己家没有家人懂编程的话,让交一个懂编程的朋友,比找个机构更管用。孩子学习的过程中有靠谱的人随时给答疑,或作出实时指导,效果自然会好很多,家长可以多请人家吃吃饭表示感谢。
7 报编程班,应该报线上呢还是报线下呢?
这一部分是我的个人观点——我认为对于低年龄段的孩子,相比线下机构,线上学习反而更有优势:
首先,编程教学本身就是在屏幕上进行的,也就天然适合线上的方式;线下教学也是看老师的电脑屏幕,本质上也没太大区别。
从实践而言,线上课堂我们当家长的可以看到孩子到底在学什么。即便不是专门旁听,你没事路过瞄两眼也能了解个七八分;而线下课一般家长是不陪同的,我不太容易掌握老师教得好不好,孩子学得好不好。
其次,我之前提到了编程师资的培训难度。尽管我认为Scratch比较容易,但要在短时间内让老师具备深厚的教学功力,依然很困难。
此外,Scratch教学离不开很多有趣好看炫酷的工程实例,这些东西都是需要专门的团队花时间和精力去制作的。在这一点上,线上机构就可以有规模化的优势:用集中团队进行教研,也可以用少数精锐的老师去教更多的学生,我认为课程的质量应该更好一些。
再者,线上课的价格一般也比线下机构更便宜。
那线下班又有什么独特优势呢?
我认为,线上机构的课程要照顾的群体比较大众化,且老师很难观察到学生的接受度,因此线上课程进度设置上比较宽松缓慢,也很难针对某个孩子的疑惑进行具体的指导(除非是一对一的课)。
而这些劣势,则是线下班的长项。所以家长要多观察孩子的学习情况,选择合适的方式学习。
8 普通家长,怎样判断编程老师的水平?
无论教什么学科,我认为老师最重要的素质只有三条:
-
专业知识积累够深,相关知识面够广;
-
能够用形象的表达方式(包括口头、图解甚至动画)讲述知识点,并且能够提炼出一些规律;
-
擅长使用引导的方式让孩子自己达成目标。
第一点应该很容易理解,老师要教100%的内容,自己必须要200%的储备。
那么在家长自己不太懂编程的情况下,怎样直观地判断老师的水平呢?
我觉得可以看老师对孩子提问的反应:如果老师有足够的知识储备,对于孩子的提问应该可以应对自如;如果经常回避孩子的提问,那多半是肚子里没有料。
另外,还可以看老师能不能针对孩子的作品提出有趣的改进或者拓展建议。
第二点也比较直白,老师讲得是不是形象易懂。
家长即便不太懂编程,也能有个大致的判断。比如说Scratch编程里面有讲到坐标系的概念,有些老师会说像电影院里坐座位,第几排第几座,这样一说孩子就很容易理解。
坐标系也可以进一步提炼一些规律出来,比如说一个角色水平移动的时候哪个轴的坐标是不变的?好的老师应该能讲一些规律,而不是只停留在表面的一些概念。
至于第三点,好的老师上课要千方百计地引导学生思考并自己找到答案,而不是只把知识点讲掉,带着孩子做完一个作品就完事了。
比如说,做一个小项目的时候,老师有没有引导孩子进行功能模块的分解?在讲解知识点的时候,有没有引导孩子举一反三,自己去发现一些规律?在孩子的程序没有实现预期结果的时候,有没有引导孩子自己找出问题?
家长也可以观察,孩子学完一段时间后,能不能利用学过的知识做出自己的作品。很多在乐高机构上课的孩子,跟着老师可以搭出很厉害的东西,但是让他们自己独立搭就抓瞎了,学编程可能也会遇到同样的问题。
我认为这可能还是老师过于重视拿作品说话:因为作品是可以给家长看到产出的,所以手把手带着孩子做出来就好了,并没有花心思去让孩子理解里面的一些规律,这样的教法可能就值得商榷了。
9 我的总结我们做父母的看待编程,不应该仅仅认为它只是一种具体的技能。编程是一种解决问题的思维方式,以及它背后所包含的那些基本原理。
少儿编程机构的火热,我认为是一件好事,可以提供给孩子们更多的选择。但另一方面,我们要记住资本永远是疯狂的,如今的儿童编程领域充斥着各种热钱,在这样的狂热中,希望这篇指南能帮你理性地做出判断和规划。
▼
每日话题
关于编程,你还有什么疑问?
留言区告诉果仁妈吧!
- END -
作者丨周花卷,二胎爸爸,资深科技图书译者,全栈程序员,专栏作者,微信公众号「周花卷」主创。
-
一篇看懂STEAM| 美国最流行的STEM教育,就是多学科学和技术?不,你还不懂它的精髓~
-
一节STEAM课程| STEAM老师告诉你,在家培养孩子能力,最重要是这个!
-
美国如何讲STEAM | 美国家长有多重视STEAM教育,从这节科学课就可以知道
-
| 家庭是STEM教育的重要场所,是时候学学怎么做孩子的入门导师了
-
思维导图| 思维导图真的那么牛?要让孩子从小学起?
-
思维导图 | 传说中的思维导图怎么用?用这些方法,我家孩子四岁就熟练掌握了!
|作 者 招 募 & 投稿|
后台回复“投稿”,查看详情
投稿邮箱:Kids@guokr
,