最近几年,STEAM教育一下子被推到风口。尤其是“少儿编程”受到各路人马追捧,不仅各种主打线上编程教育的公司遍地开花,一些传统的线下学科培训机构也纷纷开始开设少儿编程课程。
少儿编程的“一夜火爆”,背后少不了国家政策的支持。最近,教育部还正式在官网回复,将编程纳入中小学相关课程了,一度冲上微博热搜。这等于为少儿编程教育机构高调站台。
图片
另一方面,和语文、数学、英语等学科培训以及艺术培训相比,编程课还算“小众”。
所以,很多机构也瞄准了这块潜力巨大的市场,铺天盖地地搞起了宣传。比如,号称说要教给孩子“人工智能”,或者号称孩子学几节课就可以做出很厉害的作品。
对于父母而言,自己懂编程的人并不多。真正自己懂编程的家长要么都996去了,没时间管孩子的课外班,要么就自己在家教了。因此,许多家长会被铺天盖地的广告所“迷惑”,无法做出正确的判断。
图片
果仁妈跟「从小就接触编程,参加过信息学奥赛,在现实生活中,也在帮自己孩子规划编程学习路线」的周花卷老师,约了一篇编程启蒙避坑指南。
纯干货,且全是大实话,希望能给广大家长一些启发,也能帮助大家在狂热的少儿编辑培训中,理性地做出判断和规划。
图片
💻 💻 💻
/ 特别说明 /
1.全篇利益不相关,无广告无软文
2.个人思考所得,供参考
3.只从整体的角度探讨,不针对任何具体的培训机构
文章较长,主要从以下几个方面进行分析:
孩子应该几岁开始学编程?
学编程对升学真的有帮助吗?
学编程才能在人工智能时代有饭吃?
学编程和学机器人的区别是什么?
如何看待机器人课?
到底学哪种编程语言比较好?
报线上课还是先下课?
要如何判断授课老师的水平呢?
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
我的总结
我们做父母的看待编程,不应该仅仅认为它只是一种具体的技能。编程是一种解决问题的思维方式,以及它背后所包含的那些基本原理。
少儿编程机构的火热,我认为是一件好事,可以提供给孩子们更多的选择。
但另一方面,我们要记住资本永远是疯狂的,如今的儿童编程领域充斥着各种热钱,在这样的狂热中,希望这篇指南能帮你理性地做出判断和规划。
最后,再汇总下我个人的观点:
1、编程的本质是逻辑控制,是解决问题的思维模式,学龄前受逻辑思维和抽象思维的发展限制,不推荐学习,小学二年级(7-8岁)的孩子可以作为编程学习的起点。
2、学习编程对提高成绩和升学的帮助是非常有限的;
3、目前市面上的编程课,尤其是面向低幼儿童的编程课,绝大多数都是Scratch类似的Scratch的积木式编程的课程,本质上是小孩玩具,更适合用来培养兴趣,学习一些基础的编程逻辑。
4、对于低年龄段的孩子,相比线下机构,线上学习反而更有优势,家长要学习判断老师的水平。
▼
今日话题
Q:你家孩子报编程班了吗?留言区聊聊吧~