最近少儿编程非常火爆,很多家长都跃跃欲试。但是也有很多问题,比如:
孩子应该从几岁开始学习?
真的对升学有帮助吗?
先报到上课还是先下课?
和机器人有什么区别?
学习哪种编程语言更好?
如何判断老师的水平?
...............
今天马国仁分享的这个节目启蒙避坑指南,充满了道理。从整个编程进行探讨,逐一解答,希望能帮助你在狂热的少儿编辑培训中做出理性的判断和规划。
近年来,STEAM教育被推到了风口浪尖。尤其是“少儿编程”受到各界人士的追捧。不仅各种专注在线编程教育的创业公司遍地开花,一些传统的线下学科培训机构也开始开设少儿编程课程。
少儿节目的“一夜走红”有赖于国家政策的支持。2017年,国务院发布《新一代人工智能发展规划》,明确提到:
“实施国家智能教育工程,在中小学开设人工智能相关课程,逐步推进编程教育,鼓励社会力量参与开发推广寓教于乐的编程教学软件和游戏。”
这份文件相当于为儿童教育机构设计了一个备受瞩目的平台。
另一方面,与语文、数学、英语等学科的培训和艺术培训相比,编程课程仍然是“少数”。因此,很多机构也瞄准了这个潜力巨大的市场,展开了铺天盖地的宣传攻势。比如它声称教孩子“人工智能”,或者声称孩子学几节课就能做出伟大的作品。
对于父母来说,懂得编程的人并不多。真正懂得编程的家长,可能已经上了996,没有时间照顾孩子的课外班;或者你在自学。因此,很多家长被铺天盖地的广告“迷惑”,无法做出正确的判断。
从小接触编程,参加过信息学奥林匹克运动会,在现实生活中,也在帮助孩子规划编程学习路线。
——写这篇关于干货的文章,初衷是分享我的新思考,为家长提供一个避免编程启蒙坑的指南。
需要提前说明的是,本指南仅从整体角度进行讨论,并不针对任何具体的培训机构。
一个
为什么组织说学编程还早?
幼儿园即将开始学习?
事实上,我们的父母很少有人从小接触过编程。很多人可能在上高中甚至上大学之前都没有接触过电脑。作为“外星人”,我从小学开始就边玩边学编程。
与现在不同的是,当时有各种图形化的、有趣的编程环境和工具,它们都是直接写程序代码的。我认为小学作为编程的起点是可以接受的。
我自己带了一些孩子学习简单的编程。虽然每个人都有不同程度的接受,但一般都是
换句话说,小学二年级的孩子已经能理解编程的基本概念和逻辑,比如指令、循环、分支、变量等等。
但这是否意味着越早学习编程越好?
曾经有一个著名的“双梯攀爬实验”:
一对双胞胎,其中一个在48周开始训练爬楼梯,另一个在52周开始训练。结果,两个婴儿都在54周时学会了。
学习编程也是如此。如果你开始晚了,你可能不会落后,这可能会为你节省一些钱。
这是因为一旦孩子的抽象思维和逻辑思维发展到一定程度,编程中的很多概念就能很快被理解;另一方面,你告诉一个幼儿园的孩子这些事情需要很长时间,他们还不能完全理解。
如果孩子不能理解这些抽象的概念怎么办?
那我们只能搞所谓的“寓教于乐”:以玩为主,拉伸战线。其实这对于机构也是有好处的,因为孩子申请培训课程是有粘性的,所以如果早点被纳入,就可以继续学习。
2
学编程有什么用?
组织说可以提高课堂成绩吗?
可以帮助你进一步学习。
机构宣传的好处可能更实际,先不说了。
从家长的角度来看,学习编程的好处其实有以下两个方面:
1.培养“如何解决问题”的思维方式
编程思维的核心实际上是将复杂的问题分解成更小的模块,其中一些模块应该是可重用的。
这些模块之间的关系是预先设计好的,这些小模块一个一个实现,然后全部集成在一起。这种能力有助于解决任何问题,也是孩子学习编程最大的收获之一。
2.“调试”过程中体现的价值
没有人能一次写对程序。一旦写好运行,总会发现这样那样的问题,所以要“调试”。
调试其实对于孩子来说是一个非常痛苦的过程,有时候调试时间长了失败了也是很让人沮丧的。但是这个过程可以锻炼很多能力:
比如如何找出问题所在,其实有很多技巧和方法;必须有足够的耐心和敏锐的观察力——这些在任何领域都是有用的能力。
至于用编程提高课堂成绩,理论上可能有,但现实中没有太多数据支持,不要太当真。
至于编程能否帮助升学,也是大家关注的问题。
我观察到的是,与升学相关的“硬通货”竞赛非常少。
比如以NOI为例,每年全国大赛金牌就有几十块,其实很小——如果我们把这块奖牌作为学习编程的目的,就会像以前的“全民奥运”,家长和孩子身心俱疲,毫无意义。
学什么都是一样的原则:兴趣第一,适度引导。
三
人工智能时代学编程有饭吃?
孩子们可以自己编写人工智能程序。
自从谷歌人工智能软件AlphaGo击败顶级Go玩家后,人工智能一夜之间成为家喻户晓的名字。所有组织都在谈论人工智能,比如“用人工智能编程,让孩子赢在未来”等等。
我们所说的人工智能,其实是指一种基于“机器学习”的软件系统。
什么是机器学习?
著名人工智能专家吴恩达在介绍斯坦福大学的机器学习课程时说:
"机器学习是一门研究计算机在不编写特殊程序的情况下完成工作的科学."
换句话说,机器学习的目标是“不需要编程”,是不是出乎意料?
机器学习解决了一些复杂的特征识别问题,比如图片是猫还是狗。计算机很难用传统指令编程来完成这个任务,因为猫和狗的特征太复杂,无法用指令清晰地描述出来。
机器学习的思想是把成千上万的图片丢到电脑上,每个图片都事先标上答案,比如这个是猫,那个是狗,那个什么都不是。用这些学习资料训练电脑,让它发现猫狗的特征,然后判断它没见过的图片是猫还是狗。
所以相对于编程本身,人工智能和数学的关系其实更强。学习编程只能帮助你更好地理解人工智能是如何工作的。
如果你问我人工智能时代谁必须有食物,我会说“数学家”;至于程序员,其实有人用遗传算法和神经网络来教计算机自己编程,相当于抢了程序员的饭碗。你颤抖吗?
有些家长听到可以让孩子自主编写功能强大的人工智能程序,比如“让孩子自主编写动作捕捉程序”,非常兴奋。
懂得编程的人会知道,这是给孩子玩的——如何定义“自己写”?
给孩子一个打包好的工具箱,里面有一个现成的工具叫“动作捕捉”,然后让孩子写一行代码,调用这个工具,完成它。
就学习效果而言,这种事情的意义是什么?更多的是让父母感到无意识,愿意为此付出代价。
事实上,今天的人工智能远非我们所期待的真正的“智能”。
如果机器学习本身的原理没有突破,在可预见的未来仍然离“智能”很远。未来,人工智能将取代人类的部分工作,但我们不能把它视为威胁,而是一个新的机会。
作为父母,面对人工智能时代,我们应该让孩子“练内功”,而不是追赶现有技术的“时尚”。至于人工智能,等有了一定的数学和计算机基础再去了解也不迟。
四
学习编程和学习机器人有什么区别?
当我们环顾课外班,会发现从事机器人的机构远远多于从事编程的机构。这有很多原因:
首先,很多机构都是从乐高培训开始的,从积木到机械结构再到自动化是一条自然的路径。
此外,乐高本身有WeDo、EV3等机器人教育模块,所以机构在这方面准备得比较充分。
其次,学习机器人需要购买硬件设备,这也可能成为机构的利润来源,而学习编程只能以课时出售。
最后,在机器人领域,可以有许多大大小小的比赛,有团队参加。虽然水平可能参差不齐,但孩子们经过匹配和训练总能取得成绩,还能拿到几个证书,这让他们很开心。然而,群体性事件缺乏编程,这也与其特点有关。
五
家长应该如何看待机器人教育?
在我看来,机器人学习其实是一个跨学科的领域。虽然也会涉及到一些编程,但在小时候,学习内容还是集中在逻辑控制层面,并不是特别深入。
所以,是让孩子学习机器人还是编程,应该从他们的兴趣出发:很多孩子对机器人更感兴趣,机器人是更“现实”的东西,而另一些孩子则更喜欢“思考”。
从STEM教育的角度来看,两者都很好,孰优孰劣并不重要。
我也看到一些机构非要忽悠家长说学机器人比学编程好。原因是学习编程只能在电脑上做虚拟的东西,能做真实东西的机器人才是有用的——也就是别有用心。
如果你的孩子喜欢编程,但机构强烈推荐你学机器人,那大概只能说明他们的机器人课更有优势,或者能带来更多的利润。
六
编程语言有很多种,学哪一种比较好?
很多人听过很多编程语言,比如Scratch、Python、C++等等...你学哪一个?
其实市面上你能看到的绝大多数少儿编程机构都是学Scratch或者类似Scratch积木编程的。
Scratch是麻省理工学院开发的图形化编程软件,在全球儿童编程教育领域非常流行。学习简单,上手快,几分钟就能做出一些有趣的作品。
轻松学习不仅孩子容易,机构老师也容易。
少儿编程机构可以遍地开花,但是师资的缺口一时半会儿是填补不了的——很多老师也是半路出家,所以很明显Scratch最容易上手,所以大部分少儿编程机构只能动员Scratch老师。
至于像Python这样严肃的编程语言,教师培训和教研制度建设的难度要高几倍。大部分机构执行不了或者水平有限,真正能执行的屈指可数。
抓挠很有趣,但本质上是孩子的玩具。
虽然号称Scratch可以开发非常复杂的项目,但是以它的设计模式,如果真的做一个大项目,你会筋疲力尽的!我自己也试过,看着五颜六色的积木堆在一起真的很伤脑壳。
Scratch其实更适合培养兴趣,学习一些基本的编程逻辑。如果一个机构让孩子学习Scratch超过两年,家长可以判断这个机构相对“水灵”,很有可能后面什么都没有。
如果孩子已经通过Scratch,我的建议是:尽快学习正式的编程语言,只有使用正式的编程语言,才能学会严谨地表达程序结构和逻辑。
学哪门语言取决于孩子想做什么。
比如想开发一款iPhone App,学习Swift;如果你想开发微信小程序,那就学习Javascript;如果你决心走竞争路线,学C++。NOI选择C/C++作为规定语言,是因为它们更接近底层计算机的工作模式,更“硬核”。
如果你很迷茫,找不到具体的目标,我建议你可以让孩子学习Python,因为Python在各个领域都有广泛的应用,你还可以写小游戏。
有一点我想说的是,不管你让孩子学什么语言,都要引导他们关注核心和基础的东西。
例如:计算机的结构和工作原理;计算机操作系统;编程语言基础知识,算法和数据结构基础知识。
——从电脑诞生的那一天起,这些东西几乎没有改变。只有“练内功”,才能“以不变应万变”。
在这个学习阶段,一般孩子都比较大,应该有一定的自学能力。我认为我们可以在机构学习,学习这些知识的方式有很多,比如书籍、在线课程,甚至一些提供互动课程的app。
、
现阶段如果没有懂编程的家庭成员,交懂编程的朋友比找机构更有用。在孩子的学习过程中,可靠的人可以随时回答问题或者给出实时指导,效果自然会好很多。父母可以邀请别人多吃点,表达自己的感激之情。
七
我应该线上还是线下报编程班?
这部分是我个人的看法——我认为对于低年龄的孩子来说,线上学习比线下机构更有优势:
首先,编程教学本身是在屏幕上进行的,自然适合在线方式;线下教学也是看老师的电脑屏幕,本质上没有太大区别。
在实践中,家长可以在网上课堂上看到孩子在学什么。即使不是专门听,路过瞄准眼睛也能听懂七八分;虽然课后通常没有家长陪同,但我很难掌握老师教得好不好,孩子学得好不好。
其次,我之前提到过培训编程老师的难度。虽然我觉得Scratch很容易,但是老师要在短时间内拥有深厚的教学功底还是很难的。
另外Scratch教学离不开很多有趣又酷的工程实例,需要专门的团队花时间和精力去制作。在这一点上,线上机构可以具备规模优势:以集中的团队进行教学和研究,以少数精英教师教授更多的学生。我认为课程质量应该更好。
此外,在线课程通常比线下机构便宜。
脱岗有什么独特的优势?
在我看来,在线机构的课程中需要照顾的群体更受欢迎,老师很难观察到学生的接受程度。所以网上课程的时间安排相对宽松缓慢,很难对一个孩子的疑惑给出具体的指导。
而这些弊端,正是来自工作的线。因此,家长要观察孩子的学习情况,选择合适的学习方式。
八
普通家长,如何判断编程老师的水平?
不管你教什么科目,我认为教师最重要的素质只有三个:
专业知识积累足够深,相关知识足够广;
能够用生动的表达方式讲述知识点,提取一些规律;
善于引导孩子自己实现目标。
第一点要通俗易懂。老师要教100%的内容,必须预留200%。
那么,当家长不太懂编程的时候,如何直观地判断老师的水平呢?
我想我们可以看到老师对孩子提问的回应:如果老师有足够的知识储备,他应该能够自如地应对孩子的提问;如果你经常回避孩子的问题,你可能肚子里什么都没有。
此外,我们还可以看看老师能否对儿童作品提出有趣的改进或拓展建议。
第二点相对比较直白,老师说话是否通俗易懂。
即使不太懂编程,家长也能做出粗略的判断。比如Scratch编程中提到了坐标系的概念,有的老师会说“坐在电影院,哪一排就是哪一个座位”,让孩子很容易理解。
坐标系可以进一步细化一些规则,比如一个角色水平移动时,哪个轴坐标不变?一个好的老师应该会讲一些规则,而不仅仅是一些肤浅的概念。
至于第三点,一个好的老师应该尽一切可能引导学生思考,找到自己的答案,而不是只讲知识点,带着孩子完成一项工作。
比如做小项目的时候,老师有没有引导孩子分解功能模块?讲解知识点的时候,有没有引导孩子自己去举一反三,发现一些规律?当孩子的程序没有达到预期的效果时,你有没有引导孩子自己找出问题?
家长也可以观察孩子经过一段时间的学习,是否能用所学的知识制作自己的作品。很多在乐高机构上课的孩子可以和老师一起建造伟大的东西,但是他们自己做不到,在学习编程的时候可能会遇到同样的问题。
我觉得这可能是因为老师太注重讲作品了:因为作品能被家长看到,不如牵着孩子的手,让他们明白一些规律,这样的教学方法可能会有争议。
九
我的总结
作为父母,我们不应该只把编程当成一种特定的技能。编程是解决问题的一种思维方式及其背后的基本原理。
我觉得少儿编程机构的普及是好事,可以给孩子提供更多的选择。另一方面要记住,资本总是疯狂的,如今的少儿编程领域充斥着各种热钱。在这种狂热中,希望这本指南能帮助你做出理性的判断和规划。
▼
日常话题
你对编程有什么问题吗?
在留言区告诉坚果妈妈!
-结束-
作者周华娟,二胎父亲,科技图书高级翻译,全栈程序员,专栏作家,微信官方账号“周华娟”创始人。
|作者的招聘和提交|
觉得有用就点一个看!