身为一名程序员是不是教孩子编程的时候会得心应手?大错特错!以下来自一位程序员父亲的自述:
身为一名程序员是不是教孩子编程的时候会得心应手?大错特错!
以下来自一位程序员父亲的自述:
我是一个收入可观却头发茂密的程序员,在我们这行比较稀缺。同时,我又是一个8岁孩子的爸爸。相对而言,这层身份更加不易,所以即便我很忙,也愿意挤出时间教授他人生必学之事。唯独有一件事我不会教孩子,就是编程。因为孩子要学的编程,一般人真的教不来。要是刚好你也懂点编程,我劝你也别教。
学编程,也分优生差生?
不可否认,编程这门技术活,创造了太多的商业奇迹,会编程的人也会越来越吃香。我虽不提倡以后人人以后都去当程序员,但我希望人人都能学点编程。正如我们让孩子学数学,也不是为了当数学家,学习编程也是时代所驱,宜早不宜迟。但只要是学习,就会有*的好坏,编程者也分“优差生”。一个普通的编程者,只会埋头写代码,按部就班地开发软件。而一个优秀的编程者,他希望开发的是有价值的软件,做每一步都会“带脑子”。
从他刚拿到需求时,就懂得思考数据库上会有哪些改动,对现有的逻辑有什么影响,存在哪些可能的风险,以及需要多久的开发周期...
要是不巧出了bug(漏洞),还得思考如何修bug。
这就要求他拥有极为缜密的分析能力,在其他成员遇到困境之时,快速定位解决问题。在技术团队中担任骨干的,往往都是这种人。但以上这些,其实都是思维能力的差距。所以,教孩子学好编程,也绝不是写代码这么简单,就如同教孩子写作表达,并非只是教他认认字。一堂适合孩子的编程课,一定是启发思维能力的兴趣课。
程序员解读编程思维
其实学习编程的过程中,给孩子带来的思维启发有很多,比如创新性思维、发散思维、逻辑思维等等。但我认为,特别重要的是编程思维,这是别的兴趣课很难培养的一种思维。所谓编程思维,是“理解问题——找出路径”的高效思维过程。
简单说,就是一种帮孩子解决问题的好思维。
用这几个步骤,怎么就能解决问题呢?
拆:化繁为简
化繁为简,这四个字很容易理解,不过不容易做到。
很多时候我们看到一个难题的反应会是:
天啊,这么大的事情我一个人怎么完成哦。我不知道我不行我做不到。却不知道将问题分成一个个能力之内、力所能及的小事情。这一点很多人都需要跟愚公学习。
愚公移山的故事大家肯定都知道,一个想依靠人力将王屋、太行两座大山搬移开来的老头,在很多人看来愚公是十分的痴心妄想。
就像隔壁家另一个老头所说,这是非常愚蠢的做法。
甚矣,汝之不惠。以残年余力,曾不能毁山之一毛。——《愚公移山》智叟,语
但是换个角度来看,愚公其实是一个很懂得编程“化繁为简”的思路。
他并不把王屋太行当做两座难以逾越的大山,而是把他们看成一筐筐的土石,一点一点的搬移,总能清除掉的。
虽我之死,有子存焉;子又生孙,孙又生子;子又有子,子又有孙;子子孙孙无穷匮也,而山不加增,何苦而不平?——《愚公移山》愚公,语
以游戏编写为例,对于新手来说哪怕是特别简单的游戏贪吃蛇,想要编写成功也是件不小的难题,可是如果将这个问题拆解开来,我们需要做的事情是,设定输入方式和反应方式。
根据游戏特性,贪吃蛇没吃到食物时继续游动,吃到食物后会变大,撞到墙会死,撞到自己没事。
然后我们在设计程序时将这四种分开,针对一种情况设定游戏,比如“贪吃蛇吃到食物”:
贪吃蛇张开嘴巴→食物被吃掉→贪吃蛇闭上嘴巴→贪吃蛇身体长大一截。
另外几种情况也依次分解,那么这个复杂的问题看起来也就没那么麻烦了,不是么?
同时,在这个过程中,孩子能亲身到“条分缕析”“有条不紊”的真正含义。
整:发现整合
任何一个程序中都不是相互分割无关的数据组成,相反,一个程序中会存在很多“重复”内容。
比如,贪吃蛇中的“吃食物”动作,一个游戏中贪吃蛇会吃到很多次食物,这也就是前面说到的“重复”。
编程过程中,孩子需要一直做这样的训练,发现程序中会一直持续的动作,然后将它打包起来,让计算机自己重复,以提高编写效率。
这一点,类似于数学中的“合并同类项”计算题。
3ab-4ab+8ab-7ab+ab=(3-4+8-7+1)ab
只不过相对于数学的单一,编程的趣味性更强。学会利用这一点,孩子就能学会整合讯息的能力。
因为整合并不是简单相加,而是对现状的优化,也是推陈出新的方式之一。
析:逻辑解读
其实编程也是 一种语言,只不过和人与人之间沟通不同的是,这种语言是人与计算机的沟通。
理性、严谨是计算机的特性,所以与它对话的语言也必须是理性的,严谨的,不能出半点偏差的。
仍旧以贪吃蛇游戏程序为例,如果某处思考出现漏洞,游戏过程中就可能会出现“贪吃蛇撞了墙没死”或者“贪吃蛇吃到食物没有变大”等bug,那么这就是一个失败的游戏程序。
学习编程,其实就是在对孩子的逻辑思维和逻辑判断能力进行训练。
编程是一堂兴趣课
前面说的这些,都是编程的好处。但还是有人会问:“就算是启发思维,你这个程序员老爸也能教孩子吧?”说句实话,我也不是没试过。在我孩子6岁那年,我就开始尝试教他编程了。那天我满怀期待跟他唠叨了半小时「输入、输出」等长篇大论后,他似懂非懂地眨巴着眼睛,点点头,然后说了句:“爸爸,我一会可以再看10分钟小猪佩奇吗?”
行吧,看来我这是“对牛弹琴”。
但打那以后,我也意识到一个问题,给孩子上的编程课需要非常用心的教育设计,你得抓住这个年龄段的心理,得懂得他们的兴趣点,得用有趣的方式教学。这对一个没有教育行业经验的家长来说,几乎不可能。
如果仅仅灌输编程知识,搞不好还弄巧成拙,败了孩子的学习兴趣。所以,我也不纠结了,把这项任务交给专业的人。
关于如何挑选少儿编程课,我心里其实只有三点要求:
▲,编程知识是否专业。我作为程序员,一眼就能看出来。
▲第二,课程是否有趣。主要看孩子体验后,是否还有持续的学习动力。
▲第三,服务是否到位。
作为家长,我得知道我家孩子学习的情况,这就要求老师的能和我进行有效的沟通。
满足这三点要求的编程课,真不多,魔扣少儿编程是一个。从我孩子学习了三年的情况来看,这是句良心话。
我讲讲孩子的变化吧。首先,是学习。他学编程很有劲,但他不沉迷,也没耽误学习。*反而还提升了,以前是班级前十的排名,现在大考小考都能挺进前三。就拿学英语单词举例,以前他背单词纯靠记忆力,但记忆力总是容易出错。比如他背Apple这个单词,经常拼成Appel。学上编程后,他归纳能力悄悄发生了变化。有一天,他突然和我说:“爸爸,我发现Apple和Simple都是同样的结尾,都是ple!”之后苹果这个单词,他再也没拼错过。其次,是他的逻辑能力。
他现在有个新爱好,就是迷上了哈利波特。目前8岁的他,已经看完三部《哈利波特》的系列小说了,而且看得不迷糊。
想当年我大学看这电影,看了好几遍才捋清楚人物关系,他的逻辑思维比我强多了。另外,他的,感觉也是得益于此。
小班教学,思维导图教学法,免费试听