小学生应该不应该学习编程?

  • 2019-12-04 06:36
  • 阅读52

最近不少家长问到我这个问题,小孩子5,6年级了,是否应该学习编程? 小学生应该不应该学习编程?之所以觉得自己完全有资格回答这个问题,我简单说一下我自己的背景。我是1985年的样子开始学习编程的,那年10岁。而且工作后一直从事软件研发工作,现在都还在写程序(编程)。而且近几年在从事成人的软件编程教育工作,作为TW的独立咨询顾问,深究过如何当好一个教练。当然,还有个小事情,我初中拿过奥数竞赛一等奖,如果没有记错的话,是成都市的第七名,而且当时没有参加过任何奥数班的培训。

说这些不是想作为油腻的中年男吹吹牛,而是想说明,我讲的,比微信圈你能看到的关于儿童编程的宣传文章要靠谱得多。也许这篇文章你看后可能会反感,但是,我确实是诚心想帮帮大家冷静地思考一下这个问题,小学生应该不应该学习编程?

1:小学生学习编程有个坏处,学习编程后,数学成绩是会下降的,特别是针对奥数题。家长对这个问题要有清晰的认识。编程的大部分工作是用简单的算法解决复杂的问题,而这个算法有非常简单和固定的模式。编程需要的是清晰的逻辑能力和构造力(注意不是创造力)。而奥数是在训练一种构建数学模型的能力(这个点上有争议,以后我会花时间专门解决解释奥数的事情)。举个最简单的例子,我们计算从1加到100? 你会怎么算? 家长们会想到等差数列的公式,如果是编程,基本就是100次循环相加;其实还有更有意思的方法来解决这道题(如果此文阅读量上千,我会来解答这个问题)。当然,我也有亲身体会,学习编程3年后,我的数学解题能力是下降的,因为一遇到题目,我脑子想的是编程如何解决,想的是循环,是枚举。但是,这些算法你用笔是不可能在短时间完成计算的。我花了一年时间来解决这个问题,忘记编程的算法。你可以认为我笨,不过看看本文第一段,你的孩子又有多大机会比我聪明呢?

2:既然是培养创造力,编程并不是最好的方式。写作文,写剧本,玩乐高,绘画,都是培养创造力更好的方式。

3:计算机的体系结构在快速进步,神经元算法的芯片已经安装在iphoneX上。这是区别于现在绝大多数小朋友编程课程能够学到的冯诺依曼体系的编程方式。所以,现在学的,10年后也许根本没用。目前这套体系的本质思想是用逻辑运算来解决所有数学模型的问题,这其实是非常狭窄的一个解决问题的思路。

4:对软件程序员这个职业的预期。未来,软件肯定会渗透人们的方方面面。但是程序员(专门指编代码的)

4:对软件程序员这个职业的预期。未来,软件肯定会渗透人们的方方面面。但是程序员(专门指编代码的)——老狼同学的观点:“我觉得coding程序员这个职业会逐渐消失。今后需要的其实是对现实世界问题建模的能力,而后的实现会有大量简单的工具或者AI来自动实现。”老狼是我的大学同学(不是唱歌的那个老狼),是为数不多到这个年纪还在从事研发工作的人,而且是热爱的那种,算是一个大叔级的极客。他的这个观点我基本是认同的。我会做一些补充,软件行业已经是一个分工非常细的行业了,叫得上名字的职务称号有几十种,产品经理,UX工程师,BA,系统工程师,前端工程师,测试工程师,架构师,算法工程师,QA,项目经理,ScrumMaster……..还有很多。从行业技术发展角度讲,特别是云计算代来的变革,未来需要的软件会越来越少(同样功能可能只需要一个),真正从事编程或者创造软件的人会是少数人,这个竞争也会非常激烈,很有可能跟当一个明星差不多。所以,这个行业总体来看,并不需要更多的人。当然,是不是像老狼预测的对现实世界进行建模的人会是最后剩下的职业,我不加评论,不过,理解人,理解世界,是更重要的能力。

5:说说美国政府鼓励小学生学习编程的事情,这个非常容易引起家长的误解,美国小学有很多实践的课程,科学的,社会的,运动的,再多个编程也没啥好奇怪的。他们的整个师资水平/教育体系和中国不一样。说简单点,一个美国小学生保证每天运动1小时的前提下,学习编程,又没有奥数的压力,我觉得非常好;中国小学生们,我们先不学编程,把身体锻炼好些,把番茄炒鸡蛋学会了多。

6:说回重点,到底中国的小学生应该不应该学习编程呢?我的建议如下:

1)如果你的小朋友需要备战奥数取得好成绩进入名校(初中),建议暂时不要学习编程。

2)如果你的小朋友喜欢画画,喜欢写作,喜欢用乐高构建自己需要的东西,逻辑清晰,建议不用关心这个问题,学不学让他自己做决定。

3)如果你和你家小朋友都想试试,建议你下载一个儿童编程的免费软件(需要知道的请公众号里面直接问我,这里就不打广告了),让小朋友自己学习,如果他能学会,而且有强烈的兴趣,那么,你帮他找个好的导师,而不是随便参加一个培训机构。

4)如果你运气不好,你的孩子逻辑思维很弱,奥数无望,自学能力差,想通过学习编程找到一些出路,那么,送培训班?错。如果是这种情况,你来找我吧,我把你教会了你再去教你的小孩,这个不是调侃,是真的建议,或者你参加个培训班学会编程后再去教你的小孩子。当然,你还要学会怎么教小朋友。

7:总结:关于小学生应该不应该学习编程的讨论就到这里了。算是一季终了。不过我自己都觉得留下了很多悬念:1:小学生该不该学奥数? 2:如果小朋友要学编程,怎么学?3:中国的教育就这么差么?4:构建能力是个啥?